RAC环境下修改字符集
跟单实例多少有点区别
ORACLE 11g RAC 两节点
第一步 查看字符集
PRIMARY-SYS@mydb2>select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
/*
也可以通过下面几种方式查询当前字符集
SQL> SELECT parameter, value FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET';
PARAMETER VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_CHARACTERSET ZHS16GBK
NLS_NCHAR_CHARACTERSET AL16UTF16
下面2种结果一样
set pagesize 100
col value$ for a30
select name,value$ from props$ where name like '%NLS%';
select * from nls_database_parameters;
*/
第二步 关闭一个节点
[root@testdb2 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster
第三步 在另一个节点修改启动参数
TRUE改为false
PRIMARY-SYS@mydb1>alter system set cluster_database=false scope=spfile;
PRIMARY-SYS@mydb1>shutdown immediate;
/*
show parameter pfile; 若VALUE为空是pfile启动,要修改为SPFILE启动,空的话如下
SQL>CREATE SPFILE FROM PFILE;
SQL>shutdown immediate;
SQL>startup;
SQL>alter system set cluster_database=false scope=spfile;
SQL>shutdown immediate;
*/
第四步 修改参数
PRIMARY-SYS@mydb1>startup mount;
PRIMARY-SYS@mydb1>ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
PRIMARY-SYS@mydb1>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
PRIMARY-SYS@mydb1>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
PRIMARY-SYS@mydb1>ALTER DATABASE OPEN;
Database altered.
第五步 修改字符集
PRIMARY-SYS@mydb1>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
第六步 恢复RAC
PRIMARY-SYS@mydb1>alter system set cluster_database=true scope=spfile;
PRIMARY-SYS@mydb1>shutdown immediate;
PRIMARY-SYS@mydb1>startup mount;
PRIMARY-SYS@mydb1>ALTER SYSTEM DISABLE RESTRICTED SESSION;
PRIMARY-SYS@mydb1>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=1;
PRIMARY-SYS@mydb1>ALTER SYSTEM SET AQ_TM_PROCESSES=1;
PRIMARY-SYS@mydb1>alter database open;
第七步 启动开始停止的RAC节点,并验证
另外一个节点
[root@testdb2 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster
PRIMARY-SYS@mydb2>select userenv('language') from dual;
USERENV('LANGUAGE')
------------------------------------------------------------------------------------------------------------------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
【注意事项】
修改字符集要谨慎,不能回退,有必要的话备份下
DB中有CLOB类型字段不允许字符集转换,可以导出-删除-导入(转换完成后)
超集解:如果s1集合包含s2集合中的每一个元素,并且s1集合中有可能包含s2集合中不含有的元素时,那么称s1是s2的超级。说明AL32UTF8包含ZHS16GBK。
三次编码转换
1、执行exp时,数据库中数据的编码会转换为导出客户端编码
2、执行imp时,dmp文件的编码转换为导入客户端编码
3、导入客户端编码转换为目标端数据库的数据库编码
处理办法:通过NLS_LANG灵活设置,减少编码转换的次数,或者使得相互的转换能够兼容,可以最大程度减少乱码的出现。如果已经有了exp导出的dmp文件,然后在导入过程中出现乱码,一般处理建议nls_lang编码设置和dmp文件一致,让转换发生在导入客户端和数据库服务器间(要求:编码可以相互转换)
结论
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/,如需转载,请注明出处,否则将追究法律责任。
RAC环境下修改字符集的更多相关文章
- RAC 环境下修改归档模式
RAC环境下的归档模式切换与单实例稍有不同,主要是共享存储所产生的差异.在这种情况下,我们可以将RAC数据库切换到非集群状态下,仅仅在一个实例上来实施归档模式切换即可完成RAC数据库的归档模式转换问题 ...
- Oracle 11g RAC环境下Private IP修改方法及异常处理
Oracle 11g RAC环境下Private IP修改方法及异常处理 Oracle 11g RAC环境下Private IP修改方法及异常处理 一. 修改方法 1. 确认所有节点CRS服务以启动 ...
- 利用XAG在RAC环境下实现GoldenGate自动Failover
概述 在RAC环境下配置OGG,要想实现RAC节点故障时,OGG能自动的failover到正常节点,要保证两点: 1. OGG的checkpoint,trail,BR文件放置在共享的集群文件系统上,R ...
- 【转】Oracle RAC 环境下的连接管理
文章转自:http://www.oracle.com/technetwork/cn/articles/database-performance/oracle-rac-connection-mgmt-1 ...
- RAC 环境下的重要参数
Oracle 数据库启动时会根据参数文件中提供的相关参数启动Oracle实例.这些参数包括数据库名字.sga,pga的分配,控制文件的位置,undo,process等等.Oracle RAC数据库同样 ...
- RAC 环境下参数文件(spfile)管理
RAC环境下,初始化参数文件与但实例下参数文件有些异同,主要表现在初始化参数可以为多个实例公用,也可以单独设置各个实例的初始化参数.对于那些非共用的初始化参数则必须要单独设置,而共用的则可以单独设置, ...
- Linux下修改字符集,转自
以下转自http://blog.csdn.net/cyuyan112233/article/details/6539122 Linux下修改字符集 locale -a 查询系统支持的字符集 expor ...
- Oracle RAC 环境下的连接管理(转) --- 防止原文连接失效
崔华老师的文章!!! 这篇文章详细介绍了Oracle RAC环境下的连接管理,分别介绍了什么是 Connect Time Load Balancing.Runtime Connection Load ...
- Oracle RAC 环境下的 v$log v$logfile
通常情况下,在Oracle RAC 环境中,v$视图可查询到你所连接实例的相关信息,而gv$视图则包含所有实例的信息.然而在RAC环境中,当我们查询v$log视图时说按照常理的话,v$log视图应当看 ...
随机推荐
- Xcode 清理存储空间(转)
一 移除 Xcode 运行安装 APP 产生的缓存文件(DerivedData) 只要重新运行Xcode就一定会重新生成,而且会随着运行程序的增多,占用空间会越来越大.删除后在重新运行程序可能会稍微慢 ...
- hdu3999 The order of a Tree
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3999 题意:给一序列,按该序列插入二叉树,给出字典序最小的插入方法建相同的一棵树出来.即求二叉树的先序 ...
- 强化学习七 - Policy Gradient Methods
一.前言 之前我们讨论的所有问题都是先学习action value,再根据action value 来选择action(无论是根据greedy policy选择使得action value 最大的ac ...
- processing-python-泡泡龙
挂一个无耻搬运工:码农教程. 真的打心底里瞧不起为了蹭热度全网照抄代码的某些人. 再次此声明:代码不是python语言,求某些搬运工不要到处搬运害人. def setup(): size(600,60 ...
- Spring boot 集成 阿里 Mqtt
因为公司业务需求,需要接入 阿里Mqtt,自己基于Spring写了一个小demo,记录下来,已备以后需要. 第一步 创建一个实体bean用来装载 MqttClient private MqttClie ...
- Django 06
目录 注意 聚合查询 分组查询 F与Q查询 orm字段和参数 自定义字段类型 事务 ACID 三大范式 开启事务 注意 只要和数据库相关的功能, 基本在 django.db.models 里面 聚合查 ...
- .NET Core的响应式框架,基于Ace Admin框架菜单导航,Bootstrap布局,fontAwesome图标,内嵌Iframe用EasyUI做数据绑定,动态配置列表,动态配置表单
netnrf 响应式框架 用于快速开发的响应式框架 演示:https://rf2.netnr.com v3.x 前端采用 jQuery + Bootstrap + EasyUI + AceAdmin ...
- java面试题干货126-170
这部分主要是开源Java EE框架方面的内容,包括Hibernate.MyBatis.Spring.Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题, ...
- Python复习第01天---元类底层原理
1.通过元类限制类的名字首字母大写 if not class_name.istitle(): raise TypeError('类的名字首字母需要大写') 2. 控制类中必须要有注释 if not c ...
- JPA中实现双向一对一的关联关系
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...