RAC环境下字符集的修改
来源:互联网 发布:太原医院挂号软件 编辑:程序博客网 时间:2024/05/01 18:52
记一次oracle的rac环境下,字符集修改
系统版本:
# oslevel -s
5300-10-00-0000
oracle版本:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for IBM/AIX RISC System/6000: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
# ./crsctl query crs softwareversion
Oracle Clusterware version on node [test115] is [11.2.0.1.0]
注:版本不同,修改的方法也基本一致,开始修改前,需要备份pfile或者spfile文件。
二、修改过程
查询目前字符集
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.WE8MSWIN1252
oracle的字符集有互相的包容关系。如us7ascii就是zhs16gbk的子集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失。在所有的字符集中utf8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。
一旦数据库创建后,数据库的字符集理论上讲是不能改变的。字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。一般来说,除非万不得已,我们不建议修改oracle数据库server端的字符集。特别说明,我们最常用的两种字符集ZHS16GBK和ZHS16CGB231280之间不存在子集和超集关系,因此理论上讲这两种字符集之间的相互转换不受支持。
安装单数据库的方式修改oracle字符集,oracle会报错ORA-12720
SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;
ORA-12720:, operation requires database is in EXCLUSIVE mode. Cause:
因此需要使用以下方法修改
停止其中一个结点的cluster服务
./crsctl stop cluster
在另外一个结点执行
SQL> alter system set cluster_database=false scope=spfile;
如果有以下报错,说明数据库不是用spfile来启动的
alter system set cluster_database=false scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE is in use
可以通过以下语句来确认是否是用spfile来启动的,为空表示用pfile启动
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
使用以下语句来修改oracle来使用spfile启动
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
或者在startup时加参数直接指定spfile文件
重新执行
SQL> alter system set cluster_database=false scope=spfile;
System altered.
关闭数据库
SQL>shutdown immediate
SQL>startup mount
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> alter database open;
Database altered.
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
Database altered.
如果上面这句执行不成功,则可以尝试下面的语句
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered.
#我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验.这一方法在某些方面是有用处的,比如测试;应用于产品环境大家应该格外小心,除了你以外,没有人会为此带来的后果负责:
#很喜欢这句--------------对于DBA来说,有一个很重要的原则就是:不要把你的数据库置于危险的境地!
#这就要求我们,在进行任何可能对数据库结构发生改变的操作之前,先做有效的备份,或者在测试环境进行充分的测试,很多DBA没有备份的操作中得到了惨痛的教训
三、重新恢复数据库为rac模式
SQL> alter system set cluster_database=true scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
启动其他节点的cluster服务,并进行验证
./crsctl start cluster
检查修改是否生效
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
- RAC环境下字符集的修改
- RAC环境下修改字符集
- 记一次oracle的rac环境下,字符集修改
- rac 环境下修改oracle数据库字符集
- 在RAC环境下修改Oracle字符集
- 如何在RAC环境下修改Oracle字符集
- rac 环境下修改oracle数据库字符集为GBK
- rac修改字符集
- 修改RAC环境下oracle用户的密码
- Oracle RAC 环境下修改主机名
- RAC环境下SYS密码修改
- Oracle RAC 环境下修改主机名
- Oracle RAC 环境下修改主机名
- RAC 环境下修改归档模式
- Oracle RAC 环境下修改主机名
- RAC环境下修改SGA参数(转)
- RAC 环境下修改归档模式
- RAC 环境下修改归档模式
- main函数开始前执行函数
- linux驱动 之 module_init解析 (上)
- jQuery-AJAX模块解析-request部分
- 多属性文本(富文本)的使用详解
- IOS开发语言Swift入门连载---协议
- RAC环境下字符集的修改
- Android动画
- activiti-explorer 使用db2数据库,启动tomcat时报错
- VMWare的三种网络工作模式
- 九章算法面试题32 小球排序
- 解决mysql服务无法启动、Mysql重装卡在最后一步问题
- PAT QQ帐户的申请与登陆 STL-MAP的应用
- svn is already locked解决方案
- iOS 开发AVFoundation系统原生二维码扫描实现