RAC环境下修改字符集
跟单实例多少有点区别 USERENV(‘LANGUAGE‘) PARAMETER VALUE 下面2种结果一样 select * from nls_database_parameters;
第三步 在另一个节点修改启动参数 [email?protected]>shutdown immediate; /* 第四步 修改参数 [email?protected]>startup mount; [email?protected]>ALTER SYSTEM ENABLE RESTRICTED SESSION; System altered. [email?protected]>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; System altered. [email?protected]>ALTER SYSTEM SET AQ_TM_PROCESSES=0; System altered. [email?protected]>ALTER DATABASE OPEN; Database altered.
[email?protected]>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
[email?protected]>alter system set cluster_database=true scope=spfile; [email?protected]>shutdown immediate; [email?protected]>startup mount; [email?protected]>ALTER SYSTEM DISABLE RESTRICTED SESSION; [email?protected]>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=1; [email?protected]>ALTER SYSTEM SET AQ_TM_PROCESSES=1; [email?protected]>alter database open; 第七步 启动开始停止的RAC节点,并验证 [email?protected]>select userenv(‘language‘) from dual; USERENV(‘LANGUAGE‘)
三次编码转换 结论1.不管是从AL32UTF8 到ZHS16GBK 还是从ZHS16GBK 到AL32UTF8 ,中文都不会乱码,会自动转换(导出导入过程中无报错),但是对于其他国家语言会有问题(比如印度,日本等文字)。2.通过数据泵导出或导入的数据,与oracle用户操作系统参数NLS_LANG无关,编码自动与数据库参数NLS_CHARACTERSET相同。3.AL32UTF8 字符集一个中文占用3个字节,ZHS16GBK 字符集一个中文占用2个字节。如果确认应用程序只用到英文和中文,ZHS16GBK会更加节省存储。如果不确定,建议使用AL32UTF8.4.建表时指定列属性varchar(10),其中的10指的是字节,若是AL32UTF8 字符集,则只能存3个中文,若是ZHS16GBK字符集,则可以存5个中文。这会导致从ZHS16GBK字符集数据库通过数据泵导入到AL32UTF8字符集数据库过程中,有些列需要扩容。如果需要按字符指定列属性,应该为varchar2(10 char)。5.AL32UTF8是ZHS16GBK的超集,因为AL32UTF8包含了更多国家的文字。6.通过SecureCRT或xshell查看到中文乱码时,只需要查看数据库NLS_DATABSE_PARAMETERS中NLS_CHARACTERSET的字符集是什么,然后保持操作系统用户NLS_LANG的设置和SecureCRT或xshell软件的编码设置与之一致即可。来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31441616/viewspace-2145085/,如需转载,请注明出处,否则将追究法律责任。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |