天天看點

oracle安裝成功後,更改字元集

看了網上的文章,亂碼有以下幾種可能

1. 作業系統的字元集

2.oracle server的字元集

3.用戶端的字元集

1. 檢視oracle的字元集

select userenv('language') from dual
           

2.在Ubuntu中.bashrc 中加入下邊的話:

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(改掉作業系統的字元集)

Oracle NLS_LANG Oracle

3.[quote]如果oracle 與作業系統的字元集一緻,查詢時,就直接從oracle中把資料讀出來,直接傳回給使用者,插入時,直接插入到資料庫。

但是如果不一緻的話,會将資料庫中的資料轉換成作業系統的字元集,傳回給使用者。插入時一樣,就會将資料先做個轉換,然後在插入到資料庫。[/quote]

網上的人是這麼說的,但具體的我也沒試。我有時間試一下,看是不是他所說的那樣。

4.修改Oracle的編碼和作業系統的一樣。(參考别人的)

登陸用dba

SQL> conn sys/sys as sysdba;

停掉資料庫

SQL>shutdown immediate;

啟動資料庫到mount狀态下

SQL> STARTUP MOUNT;

ORACLE instance started.
Total System Global Area   76619308 bytes
Fixed Size                   454188 bytes
Variable Size              58720256 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
Database mounted.
           

SQL> ALTER SESSION SET SQL_TRACE=TRUE;

Session altered.

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

System altered.

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

System altered.

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

System altered.

啟動資料庫

SQL> Alter database open;

設定字元集

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

先把資料庫中的有中文亂碼的清空了。

然後在執行。這是有可能報錯

執行這個ALTER DATABASE character set INTERNAL_USE ZHS16GBK

跳過字元集檢查

關閉資料庫

SQL> Shutdown immediate;

重新開機

SQL> startup;

做完之後在sqlplus裡邊試一下,應該就好了,但是在pl/sql裡邊一看還是亂碼,

最後,在pl/sql裡邊建立個表,然後在插入中文,檢視一下,應該是對的。

這樣就解決了亂碼問題。 中間還有許多的問題,自己在慢慢研究吧。