免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3876 | 回复: 5
打印 上一主题 下一主题

ORACLE RAC 更改instance name完整步骤 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-10 13:59 |只看该作者 |倒序浏览
本帖最后由 cintro 于 2010-07-07 10:57 编辑

下面是更改的部分步骤,但是启动问题还是存在,求达人完整。
单实例的数据库修改SID比较简单,只需要修改pfile相关参数,就可以挂载数据库。 RAC环境其实一样,只不过除了修改pfile,还需要修改 OCR信息。

首先来看看RAC的状态:
[root@rac1 tmp]# /u01/app/crs/bin/crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    ONLINE    ONLINE    rac1        
ora....l1.inst application    ONLINE    ONLINE    rac1        
ora....l2.inst application    ONLINE    ONLINE    rac2        
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2

现在RAC状态一切正常,所有服务已经启动。下面来试下如何修改2台RAC机器的SID,分别修改为:orcl3, orcl4

1.        创建pfile,然后把orcl1--->orcl3   orcl2--->orcl4,并传输给另外一个节点,其他参数不任何变更
SQL> conn /as sysdba
Connected.
SQL> create pfile='/tmp/pfile' from spfile;

File created.

[oracle@rac1 companion]$ scp /tmp/pfile  192.168.18.9:/tmp
pfile                                                             100% 1290     1.3KB/s   00:00

[oracle@rac1 companion]$ cat /tmp/pfile
orcl4.__db_cache_size=75497472
orcl3.__db_cache_size=58720256
orcl3.__java_pool_size=4194304
orcl4.__java_pool_size=4194304
orcl3.__large_pool_size=4194304
orcl4.__large_pool_size=4194304
orcl4.__shared_pool_size=79691776
orcl3.__shared_pool_size=96468992
orcl3.__streams_pool_size=0
orcl4.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'
*.cluster_database_instances=2
*.cluster_database=true
*.compatible='10.2.0.1.0'
*.control_files='+DATA1/orcl/controlfile/current.260.696461787'
*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'
*.db_block_size=8192
*.db_create_file_dest='+DATA1'
*.db_domain='oracle.com'
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
orcl4.instance_number=2
orcl3.instance_number=1
*.job_queue_processes=10
*.log_archive_dest_1='LOCATION=+DATA1/orcl/'
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_listener='LISTENERS_ORCL'
*.remote_login_passwordfile='exclusive'
*.sga_target=167772160
orcl4.thread=2
orcl3.thread=1
*.undo_management='AUTO'
orcl3.undo_tablespace='UNDOTBS1'
orcl4.undo_tablespace='UNDOTBS2'
*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

2.        停止2台节点的数据库(2个节点运行,当然也可以使用srvctl)
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
再来看看状态:
[root@rac1 tmp]# /u01/app/crs/bin/crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    OFFLINE   OFFLINE               
ora....l1.inst application    OFFLINE   OFFLINE               
ora....l2.inst application    OFFLINE   OFFLINE               
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2

可以看到instance都已经停止。

3.        修改 .bash_profile的ORACLE_SID的环境变量,其他的不需要修改(2个节点)
export ORACLE_SID=orcl3

export ORACLE_SID=orcl4


4.        通过pfile启动数据库(2个节点运行)
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup pfile='/tmp/pfile';
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size              88082676 bytes
Database Buffers           75497472 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
再查看相关RAC状态:

[root@rac1 tmp]# /u01/app/crs/bin/crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    OFFLINE   OFFLINE               
ora....l1.inst application    OFFLINE   OFFLINE               
ora....l2.inst application    OFFLINE   OFFLINE               
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2

可以看到,虽然启动,但是由于OCR信息并没有修改,所有CRS显示出来并不正确。接下来就是要更新OCR的信息。

在修改之前,先来做个测试:
在RAC1运行;
SQL> create table test(id number);

Table created.

SQL> insert into test values(1);

1 row created.

SQL> commit;

Commit complete.
在RAC2查看是否有问题:

SQL> select * from test;

        ID
----------
         1

再继续看:

SQL> show parameter instance_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      orcl3

SQL> show parameter instance_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      orcl4

可以看到,数据库中instance_name已经修改了。

5.        最后就是更新OCR

首先先移除原来的SID信息:
先移除数据库注册信息
Srvctl remove databse –d orcl
再移除数据库实例注册信息
[oracle@rac1 ~]$ srvctl remove instance -d orcl -i orcl1
Remove instance orcl1 from the database orcl? (y/[n]) y
[oracle@rac1 ~]$ srvctl remove instance -d orcl -i orcl2
Remove instance orcl2 from the database orcl? (y/[n]) y

查看CRS状态:
[root@rac1 tmp]# /u01/app/crs/bin/crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    OFFLINE   OFFLINE               
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2   

信息已经移除,接下来就是重新注册新的instance了。

[oracle@rac1 ~]$ srvctl add instance -d orcl -i orcl3  -n rac1
[oracle@rac1 ~]$ srvctl add instance -d orcl -i orcl4  -n rac2

查看CRS状态:

[root@rac1 tmp]# /u01/app/crs/bin/crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.orcl.db    application    OFFLINE   OFFLINE               
ora....l3.inst application    OFFLINE   OFFLINE               
ora....l4.inst application    OFFLINE   OFFLINE               
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    ONLINE    ONLINE    rac1        
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   application    ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    ONLINE    ONLINE    rac2        
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   application    ONLINE    ONLINE    rac2  

已经注册成功,可以发现instance变为orcl3,orcl4了。

重建SPFILE文件的步骤
可以用create spfile from pfile='/tmp/pfile';,来覆盖

论坛徽章:
0
2 [报告]
发表于 2010-05-10 16:10 |只看该作者
不错, 保留.
创建spfile的方式正确,  可以自己试一下.

论坛徽章:
0
3 [报告]
发表于 2010-05-16 16:56 |只看该作者
嗯,不愧为精华

论坛徽章:
0
4 [报告]
发表于 2010-07-07 10:56 |只看该作者
其实这里有个小BUG,就是在REMOVE掉INSTANCE信息的时候 有可能无法REMOVE掉原来INSTANCE1的资源 所以这里需要利用CRS_UNREGISTER来反注册掉那条无法REMOVE掉的资源,如ORA.ORACLE_SID1.inst 的资源

论坛徽章:
0
5 [报告]
发表于 2010-07-08 14:43 |只看该作者
原来如此简单啊,受教了

论坛徽章:
0
6 [报告]
发表于 2010-07-08 14:50 |只看该作者
好东西,我收藏了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP