法一:https://www.cnblogs.com/xingxiudong/p/3986874.html
法二:https://www.cnblogs.com/tiandaochouqinbokeyuan/p/8795512.html
GBK:中國國家標准字符集,是GB2312擴展
ZHS16GBK:是oracle數據庫中支持GBK的字符集命名方式。
其格式為<語言><bit位><國家字符集>
法一:https://www.cnblogs.com/xingxiudong/p/3986874.html
SQL>
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
shutdown immediate
startup mount
alter system enable restricted session;
show parameter job_queue_processes;
alter system set job_queue_processes=0;
alter database open;
alter database character set ZHS16GBK;
alter database character set internal_use ZHS16GBK;
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
shutdown immediate
startup mount
alter system set job_queue_processes=1000;
alter database open;
shutdown immediate
startup
法二:https://www.cnblogs.com/tiandaochouqinbokeyuan/p/8795512.html
一、oracle server 端 字符集查詢
select userenv('language') from dual
其中NLS_CHARACTERSET 為server端字符集
NLS_LANGUAGE 為 server端字符顯示形式
二、查詢oracle client端的字符集
$ echo $NLS_LANG
三、server端字符集修改
更改字符集步驟方法(WE8ISO8859P1 --> ZHS16GBK)
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
alter database open;
ALTER DATABASE CHARACTER SET ZHS16GBK;
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
提示我們的字符集:新字符集必須為舊字符集的超集,這時我們可以跳過超集的檢查做更改:
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
select * from v$nls_parameters;
重啟檢查是否更改完成
select * from v$nls_parameters
四、修改環境變量
設置oracle用戶的的環境
linux下修改環境變量(臨時)
export NLS_LANG=SIMPLIFIED Chinese_CHINA.ZHS16GBK
變量名:NLS_LANG
變量值:SIMPLIFIED Chinese_CHINA.ZHS16GBK
Linux/Unix下的設置
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
問題:
一個為HP UNIX環境下,字符集為AMERICAN_AMERICA.US7ASCII,另一個為NT 環境下,字符集為SIMPLIFIED CHINESE_CHINA.ZHS16GBK,現在我將UNIX數據庫里的表導進NT環境的數據庫里,但用SQLPLUS瀏覽,表里所有的中文記錄都是亂碼,我曾將注冊表NLS_LANG鍵值該過,該為AMERICAN_AMERICA.US7ASCII,但亂碼仍然出現
可能解決方法:
只通過修改注冊表是不能解決的,你可以借助EXECL文件,先修改注冊表中的NLS_LANG=AMERICAN_AMERICA.US7ASCII,然后用PL/SQL DEVELOP 或PB將數據到出為EXECL文件,然后將注冊表中的NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK,再將數據導入到另一套數據庫中