ORACLE字符集查詢和設定(11g)轉
ORACLE字符集查詢和設定(11g)
查詢資料庫字符集
select userenv('language') from dual;
linux中文字符集
/etc/sysconfig/i18n
LANG=zh_CN.gb18030
#oracle11g 修改字符集 修改為ZHS16GBK
conn /as sysdba
shutdown immediate;
startup mount
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;
shutdown immediate;
startup
資料庫伺服器字符集select * from nls_database_parameters,其來源於props$,是表示資料庫的字符集。
客戶端字符集環境select * from nls_instance_parameters,其來源於v$parameter,
會話字符集環境 select * from nls_session_parameters,其來源於v$nls_parameters,表示會話自己的設定,可能是會話的環境變數或者是alter session完成,如果會話沒有特殊的設定,將與nls_instance_parameters一致。
表示客戶端的字符集的設定,可能是引數檔案,環境變數或者是登錄檔
字符集要求一致,但是語言設定卻可以不同,語言設定建議用英文。如字符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
客戶端的字符集要求與伺服器一致,才能正確顯示資料庫的非Ascii字元。如果多個設定存在的時候,alter session>環境變數>登錄檔>引數檔案
select * from v$nls_parameters;
---------------------