oracle修改server段字符集

5.1 修改server端字符集(不建議使用)


  1. 關閉數據庫


  SQL>SHUTDOWN IMMEDIATE


  2. 啓動到Mount


  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;


  SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK;


  SQL>SHUTDOWN IMMEDIATE;


  SQL>STARTUP


  注意:如果沒有大對象,在使用過程中進行語言轉換沒有什麼影響,(切記設定的字符集必須是ORACLE支持,不然不能start) 按上面的做法就可以。


  若出現‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists’ 這樣的提示信息,


  要解決這個問題有兩種方法


  1. 利用INTERNAL_USE 關鍵字修改區域設置,


  2. 利用re-create,但是re-create有點複雜,所以請用internal_use


  SQL>SHUTDOWN IMMEDIATE;


  SQL>STARTUP MOUNT EXCLUSIVE;


  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 NATIONAL CHARACTER SET INTERNAL_USE UTF8;


  SQL>SHUTDOWN immediate;


  SQL>startup;


  如果按上面的做法做,National charset的區域設置就沒有問題


  5.2 修改dmp文件字符集


  上文說過,dmp文件的第2第3字節記錄了字符集信息,因此直接修改dmp文件的第2第3字節的內容就可以‘騙’過oracle的檢查。這樣做理論上也僅是從子集到超集可以修改,但很多情況下在沒有子集和超集關係的情況下也可以修改,我們常用的一些字符集,如US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可以改。因爲改的只是dmp文件,所以影響不大。


  具體的修改方法比較多,最簡單的就是直接用UltraEdit修改dmp文件的第2和第3個字節。


  比如想將dmp文件的字符集改爲ZHS16GBK,可以用以下SQL查出該種字符集對應的16進制代碼:


  SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;


  0354


  然後將dmp文件的2、3字節修改爲0354即可。


  如果dmp文件很大,用ue無法打開,就需要用程序的方法了。


  5.3客戶端字符集設置方法


  1)UNIX環境


  $NLS_LANG=“simplified chinese”_china.zhs16gbk


  $export NLS_LANG


  編輯oracle用戶的profile文件




********************************************************
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set




SQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk;      


Database altered.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章