分类: Oracle
2011-10-18 18:23:48
在做导出导入的时候,需要这三个字符集都一致才能正确安全的进行数据操作;
2.管理客户端的 NLS_LANG 的方法
windows 使用:
注册表 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
xx 指存在多个ORACLE_HOME 时系统编号。
修改,直接编辑注册表的内容;
unix 使用: (oracle用户)
$cd /opt/oracle
$env|grep NLS_LANG
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
修改,直接编辑环境变量文件:
$vi .bash_profile
NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
export NLS_LANG
$source .bash_profile
3.查看数据库当前字符集参数设置
select * from v$nls_parameters;
4.查看数据库可用字符集参数设置
select * from v$nls_valid_values;
5.管理数据库服务器的字符集
查询数据库服务器字符集
SQL> select * from nls_database_parameters;
修改数据库服务器字符集
SQL> startup nomount;
SQL> alter database mount exclusive;
SQL> alter system set nls_language = "SIMPLIFIED CHINESE" SCOPE=SPFILE;
SQL> alter system set nls_territory = "CHINA" SCOPE=SPFILE;
SQL> alter database character set ZHS16GBK;
SQL> alter database open;
[Q]怎么样查看数据库字符集
[A]
数据库服务器字符集 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 一致。
客户端的字符集要求与服务器一致,才能正确显示数据库的非 Ascii 字符。
如果多个设置存在的时候,alter session 环境变量注册表参数文件 字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。
如字符集是zhs16gbk,则nls_lang 可以是American_America.zhs16gbk。
[Q]怎么样修改字符集
[A]8i 以上版本可以通过alter database 来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。
startup nomount;
alter database mount exclusive;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter database open;
alter database character set zhs16gbk;