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;