1.字符集參數
NLS_LANG=<language>_<territory>.<Clients Characterset>
language--oracle使用的語言
territory---貨幣和數字格式,星期、地區和日誌計算習慣。
clients characterset 控制客戶端應用程序使用的字符集,不同可能造成亂碼
2.查看字符集
NLS_INSTANCE_PARAMETERS
數據庫實例字符集,在新建數據庫實例時指定,網上多誤爲客戶端字符集
官方解釋:NLS_INSTANCE_PARAMETERS lists NLS parameters of the instance.
NLS_DATABASE_PARAMETERS
數據庫字符集,NLS_LANGUAGE,NLS_TERRITORY在數據庫安裝時指定,NLS_CHARACTERSET在數據庫實例建立時指定
官方解釋:NLS_DATABASE_PARAMETERS lists permanent NLS parameters of the database.
V$NLS_PARAMETERS
客戶端字符集,受環境變量、參數文件、註冊表影響。
另一種方法是 select userenv('language') from dual;
官方解釋:V$NLS_PARAMETERS contains current values of NLS parameters.
NLS_SESSION_PARAMETERS
當前會話字符集,默認與客戶端字符集相同。可通過alter session 更改,只在當前會話生效。
官方解釋:NLS_SESSION_PARAMETERS lists NLS parameters of the user session.
3.修改字符集
客戶端字符集
windows:
修改 cmd->regedit->HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_OraDb10g_home1 下NLS_LANG(全局)
dos下set NLS_LANG=zh_CN.GB18030(當前session)
unxi :
修改/etc/sysconfig/i18n (全局)
e.g
LANG="en_US.UTF-8",
修改登錄用戶的.bash_profile (當前用戶)
e.g 加入 export LANG=zh_CN.GB18030
命令行下export LANG=zh_CN.GB18030(當前session)
數據庫字符集
(1)重建數據庫
(2)只能在新字符集是舊字符集的嚴格超集情況下使用,若不是,將會報ora-12712錯誤。
步驟:
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
在數據庫受限制的過程中,只有對數據庫擁有RESTRICTED SESSION權限的用戶才能夠連接到數據庫。這種狀態有利於對數據庫進行備份,恢復,導入,導出等操作。
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
job_queue_processes參數,當設定該值爲0的時候則任意方式創建的job都不會運行。
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
AQ_TM_PROCESSES 控制隊列信息與控制信息的實時監控,默認爲1
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;