author : headsen chen
date:2018-05-10 10:27:16
oracle11g完成安裝后,由於默認安裝的時候無法指定字符集,所以手動修改字符集和10g版本一樣的字符集
先查詢數據庫目前使用的字符集(這種字符集在使用中查詢數據會出現亂碼情況)
SQL> select userenv('langager') from dual;
USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8 #------------>默認安裝的字符集,要改的就是這個。
2、數據庫啟動到RESTRICTED模式下做字符集修改(具體操作如下):
SQL>conn / as sysdba SQL>shutdown immediate; SQL>startup mount SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL>alter database open; SQL>ALTER DATABASE CHARACTER SET ZHS16GBK; # --執行這句話會出現錯誤(可根據ORA-12712在網上查錯誤信息);
此錯誤信息提示我們的字符集:新字符集必須為舊字符集的超集,這時我們可以跳過超集的檢查做更改:
執行下面這句話:
SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
查詢是否已修改
SQL>select * from v$nls_parameters; 此時有可能還沒有變過來,重啟數據庫就可以了
關閉數據庫
shutdown immediate
啟動數據庫
startup
查詢字符集是否修改成功
select * from v$nls_parameters;
經過上面操作就可以修改oracle數據庫字符集了
SQL> select userenv('language') from dual;
USERENV('LANGUAGE') --------------------------------------------------- AMERICAN_AMERICA.ZHS16GBK # ---------------> 這就是我們想要的字符集