字符集修改做过几次了,这次感觉还是有点不顺,走了弯路,再记一遍
【概况】
准备搭建RAC+RAC DG,发现两端字符集不大一致,担心到时出问题。

【目标】
将备库NLS_NCHAR_CHARACTERSET修改成与主库一致。
--备
NLS_NCHAR_CHARACTERSET UTF8
修改为
--主
NLS_NCHAR_CHARACTERSET AL16UTF16

0、备库 修改前
PRIMARY-SYS@TESTDB2>set pagesize 100
PRIMARY-SYS@TESTDB2>col value$ for a30
PRIMARY-SYS@TESTDB2>select name,value$ from props$ where name like '%NLS%';

NAME VALUE$
------------------------------------------------------------------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET UTF8
NLS_RDBMS_VERSION 11.2.0.4.0

20 rows selected.

1、节点2 先停掉,在节点1修改完成后再启动
[root@NODE2 ~]# ls -l /u01/app/11.2.0/grid/bin/crsctl
-rwxr-xr-x 1 root oinstall 8576 Jan 13 2017 /u01/app/11.2.0/grid/bin/crsctl
[root@NODE2 ~]#
[root@NODE2 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster
CRS-2673: Attempting to stop 'ora.crsd' on 'NODE2'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'NODE2'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'NODE2'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'NODE2'
CRS-2673: Attempting to stop 'ora.CRSDG.dg' on 'NODE2'
CRS-2673: Attempting to stop 'ora.TESTDB.db' on 'NODE2'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'NODE2'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.NODE2.vip' on 'NODE2'
CRS-2677: Stop of 'ora.scan1.vip' on 'NODE2' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'NODE1'
CRS-2677: Stop of 'ora.NODE2.vip' on 'NODE2' succeeded
CRS-2672: Attempting to start 'ora.NODE2.vip' on 'NODE1'
CRS-2677: Stop of 'ora.TESTDB.db' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'NODE2'
CRS-2673: Attempting to stop 'ora.FRA.dg' on 'NODE2'
CRS-2677: Stop of 'ora.DATA.dg' on 'NODE2' succeeded
CRS-2677: Stop of 'ora.FRA.dg' on 'NODE2' succeeded
CRS-2676: Start of 'ora.scan1.vip' on 'NODE1' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'NODE1'
CRS-2676: Start of 'ora.NODE2.vip' on 'NODE1' succeeded
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'NODE1' succeeded
CRS-2677: Stop of 'ora.CRSDG.dg' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'NODE2'
CRS-2677: Stop of 'ora.asm' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'NODE2'
CRS-2677: Stop of 'ora.ons' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'NODE2'
CRS-2677: Stop of 'ora.net1.network' on 'NODE2' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'NODE2' has completed
CRS-2677: Stop of 'ora.crsd' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'NODE2'
CRS-2673: Attempting to stop 'ora.evmd' on 'NODE2'
CRS-2673: Attempting to stop 'ora.asm' on 'NODE2'
CRS-2677: Stop of 'ora.evmd' on 'NODE2' succeeded
CRS-2677: Stop of 'ora.asm' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'NODE2'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'NODE2' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'NODE2' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'NODE2'
CRS-2677: Stop of 'ora.cssd' on 'NODE2' succeeded
[root@NODE2 ~]#

2、节点1

PRIMARY-SYS@TESTDB1>show parameter pfile;

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string +DATA/TESTDB/parameterfile/spf
ile.344.1016736315
PRIMARY-SYS@TESTDB1>create pfile from spfile;
--这样的话就直接修改上面生成的pfile文件中cluster_database=false 用pfile mount +修改INTERNAL_USE + open ,然后再创建spfile共节点2一起使用

--下面没必要修改spfile,保持spfile(两节点共享的)中cluster_database=TRUE
--alter system set cluster_database=false;
PRIMARY-SYS@TESTDB1>alter system set cluster_database=false scope=spfile;

System altered.

--需要【重启】才能生效,尽管上面已经修改了
PRIMARY-SYS@TESTDB1>show parameter cluster_database

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
cluster_database boolean TRUE
cluster_database_instances integer 2
PRIMARY-SYS@TESTDB1>shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

--mv initTESTDB1.ora initTESTDB1.ora.bak,最后又mv回来了,没改回就报下面的错了
PRIMARY-SYS@TESTDB1>startup mount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_home1/dbs/initTESTDB1.ora'

PRIMARY-SYS@TESTDB1>startup mount;
ORACLE instance started.

Total System Global Area 7.4826E+10 bytes
Fixed Size 2261048 bytes
Variable Size 4.6976E+10 bytes
Database Buffers 2.7649E+10 bytes
Redo Buffers 199049216 bytes
Database mounted.
PRIMARY-SYS@TESTDB1>ALTER SYSTEM ENABLE RESTRICTED SESSION;

System altered.

PRIMARY-SYS@TESTDB1>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

System altered.

PRIMARY-SYS@TESTDB1>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

System altered.

PRIMARY-SYS@TESTDB1>ALTER DATABASE OPEN;

Database altered.
--这一步是【重点要修改的】
PRIMARY-SYS@TESTDB1>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

Database altered.

--pfile启动了,没法修改spfile了
PRIMARY-SYS@TESTDB1>alter system set cluster_database=true scope=spfile sid='*';
alter system set cluster_database=true scope=spfile sid='*'
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE is in use

PRIMARY-SYS@TESTDB1>show parameter pfile;

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string

--手动修改initTESTDB1.ora中的cluster_database=true,重建spfile
PRIMARY-SYS@TESTDB1>create spfile from pfile='/u01/app/oracle/product/11.2.0/db_home1/dbs/initTESTDB1.ora';

File created.

PRIMARY-SYS@TESTDB1>shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
PRIMARY-SYS@TESTDB1>startup mount;
ORACLE instance started.

Total System Global Area 7.4826E+10 bytes
Fixed Size 2261048 bytes
Variable Size 4.6976E+10 bytes
Database Buffers 2.7649E+10 bytes
Redo Buffers 199049216 bytes
Database mounted.
--还得改回去,0->1
PRIMARY-SYS@TESTDB1>ALTER SYSTEM DISABLE RESTRICTED SESSION;

System altered.

PRIMARY-SYS@TESTDB1>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=1;

System altered.

PRIMARY-SYS@TESTDB1>ALTER SYSTEM SET AQ_TM_PROCESSES=1;

System altered.

PRIMARY-SYS@TESTDB1>show parameter pfile;

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
/db_home1/dbs/spfileTESTDB1.or
a
PRIMARY-SYS@TESTDB1>alter system set cluster_database=true scope=spfile sid='*';

System altered.

PRIMARY-SYS@TESTDB1>alter database open;

Database altered.

--cluster_database【重启】才生效

PRIMARY-SYS@TESTDB1>show parameter cluster_database

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
cluster_database boolean FALSE
cluster_database_instances integer 1
PRIMARY-SYS@TESTDB1>shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
PRIMARY-SYS@TESTDB1>
PRIMARY-SYS@TESTDB1>
PRIMARY-SYS@TESTDB1>
PRIMARY-SYS@TESTDB1>startup
ORACLE instance started.

Total System Global Area 7.4826E+10 bytes
Fixed Size 2261048 bytes
Variable Size 4.9392E+10 bytes
Database Buffers 2.5233E+10 bytes
Redo Buffers 199049216 bytes
Database mounted.
Database opened.
PRIMARY-SYS@TESTDB1>show parameter cluster_database

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
cluster_database boolean TRUE
cluster_database_instances integer 2
PRIMARY-SYS@TESTDB1>

PRIMARY-SYS@TESTDB1>set pagesize 100
PRIMARY-SYS@TESTDB1>col value$ for a30
PRIMARY-SYS@TESTDB1>select name,value$ from props$ where name like '%NLS%';

NAME VALUE$
------------------------------------------------------------------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
--发现已【修改】成功
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 11.2.0.4.0

20 rows selected.

PRIMARY-SYS@TESTDB1>

3、第二个节点启动
[root@NODE2 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'NODE2'
CRS-2676: Start of 'ora.cssdmonitor' on 'NODE2' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'NODE2'
CRS-2672: Attempting to start 'ora.diskmon' on 'NODE2'
CRS-2676: Start of 'ora.diskmon' on 'NODE2' succeeded
CRS-2676: Start of 'ora.cssd' on 'NODE2' succeeded
CRS-2672: Attempting to start 'ora.ctssd' on 'NODE2'
CRS-2676: Start of 'ora.ctssd' on 'NODE2' succeeded
CRS-2672: Attempting to start 'ora.evmd' on 'NODE2'
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'NODE2'
CRS-2676: Start of 'ora.evmd' on 'NODE2' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'NODE2' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'NODE2'
CRS-2676: Start of 'ora.asm' on 'NODE2' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'NODE2'
CRS-2676: Start of 'ora.crsd' on 'NODE2' succeeded

--设置了自动重启,所以失败。。。
PRIMARY-SYS@TESTDB2>startup mount
ORA-10997: another startup/shutdown operation of this instance inprogress
ORA-09968: unable to lock file
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 169786
。。。自启动了。。。

--稍等发现已启动OK
PRIMARY-SYS@TESTDB2>select inst_id,instance_name,status from gv$instance;

INST_ID INSTANCE_NAME STATUS
---------- ------------------------------------------------ ------------------------------------
2 TESTDB2 OPEN
1 TESTDB1 OPEN

2 rows selected.

自此两个节点都OK了

【总结】
上面可能说的有点乱,捋一捋。。。不知道说的对不对
0、做事之前要盘算计划好,眼高手低是技术一大障碍,说来都很美好,做起来总不是那么一帆风顺的,稍微一个错误浪费的时间比事前多花点时间准备好多了,当然牛人除外,能够及时处理。
1、根据节点1生成的pfile,修改cluster_database=false启动修改,然后再改回来是不是少点麻烦
2、修改字符集要关闭一个节点,在另外一个节点修改,修改前要把这个节点的cluster_database改成false(别改spfile,spfile是两个节点公用的,改了等下又要改回来,重复工作!),重启(才生效),修改时按照上面mount之后操作即可,修改后再把0改成1,cluster_database再改成true,重启(生效),启动节点2(还是修改之前的spfile额,cluster_database仍为true),结束。

【小插曲】两节点不从ASM中的spfile启动了
PRIMARY-SYS@DINPAY1>show parameter pfile;

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
/db_home1/dbs/spfileDINPAY1.or
a
PRIMARY-SYS@DINPAY1>create pfile from spfile;

File created.

PRIMARY-SYS@DINPAY1>create spfile from pfile='/u01/app/oracle/product/11.2.0/db_home1/dbs/initDINPAY1.ora';
create spfile from pfile='/u01/app/oracle/product/11.2.0/db_home1/dbs/initDINPAY1.ora'
*
ERROR at line 1:
ORA-32002: cannot create SPFILE already being used by the instance

PRIMARY-SYS@DINPAY1>shut immediate

PRIMARY-SYS@DINPAY1>startup pfile='/u01/app/oracle/product/11.2.0/db_home1/dbs/initDINPAY1.ora';

PRIMARY-SYS@DINPAY1>show parameter pfile;

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string
PRIMARY-SYS@DINPAY1>create spfile='+data' from pfile='/u01/app/oracle/product/11.2.0/db_home1/dbs/initDINPAY1.ora';

File created.
PRIMARY-SYS@DINPAY1>show parameter pfile;

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string
PRIMARY-SYS@DINPAY1>shut immediate

--grid登陆查找生成spfile位置
ASMCMD> cd +DATA/dinpay/parameterfile/
ASMCMD> ls
spfile.282.1016709123
spfile.343.1016734531
spfile.344.1016736315
spfile.346.1025548589
--刚刚生成的
+DATA/dinpay/parameterfile/spfile.346.1025548589

--更新pfile,别这样create pfile from spfile;指定pfile生成位置
[oracle@zhjlrac1 dbs]$ pwd
/u01/app/oracle/product/11.2.0/db_home1/dbs
[oracle@szml02-db01 dbs]$ cat initDINPAY1.ora
SPFILE='+DATA/dinpay/parameterfile/spfile.346.1025548589'

PRIMARY-SYS@DINPAY1>startup
ORACLE instance started.

Total System Global Area 7.4826E+10 bytes
Fixed Size 2261048 bytes
Variable Size 4.9124E+10 bytes
Database Buffers 2.5501E+10 bytes
Redo Buffers 199049216 bytes
Database mounted.
Database opened.
PRIMARY-SYS@DINPAY1>

PRIMARY-SYS@DINPAY1>show parameter pfile;

NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string +DATA/dinpay/parameterfile/spf
ile.346.1025548589
另外一个节点页如上指向这个spfile,重启OK。

如果直接使用create pfile from spfile;命令创建pfile,那么生成的pfile 文件将覆盖原有$ORACLE_HOME/dbs 目录下的pfile 文件。 而在之前的pfile文件里面值保留了一条指向spfile存放位置的记录。 这样修改之后,就会造成数据库启动时会因为找不到spfile文件而读取本地的pfile文件,而不是共享设备上的spfile文件。这样对参数管理上就会带来麻烦,也带来其他的隐患。
所以对于RAC,要慎用 create pfile from spfile; 来创建pfile 文件, 在创建的时候,尽量指定pfile的生成位置

RAC修改字符集的更多相关文章

  1. oracle 11g rac 修改字符集

    系统版本: Oracle Linux Server release 5.7 数据库版本: Oracle Database 11g Enterprise Edition Release 11.2.0.3 ...

  2. RAC环境下修改字符集

    跟单实例多少有点区别ORACLE 11g RAC 两节点第一步 查看字符集PRIMARY-SYS@mydb2>select userenv('language') from dual; USER ...

  3. oracle 修改字符集支持中文

    1.登录sys关闭服务 [oracle@t-e ~]$ export ORACLE_SID=kamiltest1 [oracle@t-e ~]$ sqlplus / as sysdba SQL> ...

  4. oracle基础教程(8)oracle修改字符集

    oracle基础教程(8)oracle修改字符集 1.用dba连接数据库 -->sqlplus / as sysdba 2.查看字符集 -->SELECT parameter, value ...

  5. oracle修改字符集

    在linux下面安装了oracle 11G,由于安装的时候没有注意导致字符集问题,impdp导入操作后中文乱码. 1.用命令select userenv('language') from dual; ...

  6. oracle11g 修改字符集

    查看当前字符集SQL语句: select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; 修改字符集操作如下,首 ...

  7. mysql 修改字符集

    查看mysql数据编码 登录MySQL服务,查看mysql数据库默认的编码 mysql> show variables like 'character%'; +----------------- ...

  8. Linux下修改字符集,转自

    以下转自http://blog.csdn.net/cyuyan112233/article/details/6539122 Linux下修改字符集 locale -a 查询系统支持的字符集 expor ...

  9. oracle修改字符集后数据库不能启动

    最近在做修改字符集的实验,悲剧的是修改后重启,数据库启动不了. SQL> alter system set nls_language='AMERICAN'   scope = spfile; S ...

随机推荐

  1. Rust 入门 (五)

    定义并介绍结构体 结构体和我们前面学习的元组类似,结构体中的每一项都可以是不同的数据类型.和元组不同的地方在于,我们需要给结构体的每一项命名.结构体较元组的优势是:我们声明和访问数据项的时候不必使用索 ...

  2. Kafka 0.10.0.1 consumer get earliest partition offset from Kafka broker cluster - scala code

    Return: Map[TopicPartition, Long] Code: val props = new Properties() props.put(ConsumerConfig.BOOTST ...

  3. Java 中 Snack3的使用

    网上看了一篇Java 中 Gson的使用,所以也跟着写篇Java 中 Snack3的使用 JSON 是一种文本形式的数据交换格式,从Ajax的时候开始流行,它比XML更轻量.比二进制容易阅读和编写:解 ...

  4. 一个缓存使用案例:Spring Cache VS Caffeine 原生 API

    最近在学习本地缓存发现,在 Spring 技术栈的开发中,既可以使用 Spring Cache 的注解形式操作缓存,也可用各种缓存方案的原生 API.那么是否 Spring 官方提供的就是最合适的方案 ...

  5. 走近深度学习,认识MoXing:初识华为云ModelArts的王牌利器 — MoXing

    [摘要] 本文为MoXing系列文章第一篇,主要介绍什么是MoXing,MoXing API的优势以及MoXing程序的基本结构. MoXing的概念 MoXing是华为云深度学习服务提供的网络模型开 ...

  6. 自古逢秋悲寂寥,奈何今秋热成雕?Python使用Pyecharts统计全国温度Top10并绘图

    秋词-刘禹锡 自古逢秋悲寂寥, 我言秋日胜春朝. 晴空一鹤排云上, 便引诗情到碧霄. 古人谈及秋天,都是悲凉寂寥,那么-.我好想回到古代的秋天啊!明明到了秋天,为什么最近的气温比夏天还热. 之前做天气 ...

  7. .Net Core的API网关Ocelot使用 (一)

    1.什么是API网关 API网关是微服务架构中的唯一入口,它提供一个单独且统一的API入口用于访问内部一个或多个API.它可以具有身份验证,监控,负载均衡,缓存,请求分片与管理,静态响应处理等.API ...

  8. 从“职场小白”进阶为“行业大牛”,四个"锦囊"教你破局

    在早期软件行业,会存在一个普遍的现象,有些大学的本科,或者研究生毕业,他们去面试工作的时候会发现,面试下来代码能力可能不是太好,这种情况下公司会问你愿不愿意去做测试? 如果说早期软件测试行业还是一个风 ...

  9. java之面向对象

    类的语法格式 public class Person{ //属性类的成员变量可以先声明,不用初始化,类成员变量具有初始值 String name; int age; //方法 public void ...

  10. POJ3111

    Demy has n jewels. Each of her jewels has some value vi and weight wi. Since her husband John got br ...