ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 10204 RAC on aix 5.3 更改hostname,sid,databa name

10204 RAC on aix 5.3 更改hostname,sid,databa name

原创 Linux操作系统 作者:wengtf 时间:2012-02-14 13:05:58 0 删除 编辑

有个新系统实施,不想重装,想通过直接更改hostname,sid,database name 方法来直接让测试库先顶替。(此处不讨论与重装的效率问题),下面是整个过程遇到的零零碎碎的

记录。

 更改aix  rac 数据库hostname, sid 及 db_name
database name:uip->imscmdb
instance name::uip1->imscmdb1 ,uip2->imscmdb2
hostname: uiprac1,uiprac2->imsrac1,imsrac2
以下操作均在node1上操作:
一、确认rac 状态
首先来看看RAC的状态:
[root@rac1 tmp]# /u01/app/crs/bin/crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.imscmdb.db application    ONLINE    ONLINE    imsrac1       
ora....b1.inst application    ONLINE    ONLINE    imsrac1       
ora....b2.inst application    ONLINE    ONLINE    imsrac2       
ora....C1.lsnr application    ONLINE    ONLINE    imsrac1       
ora....ac1.gsd application    ONLINE    ONLINE    imsrac1       
ora....ac1.ons application    ONLINE    ONLINE    imsrac1       
ora....ac1.vip application    ONLINE    ONLINE    imsrac1       
ora....C2.lsnr application    ONLINE    ONLINE    imsrac1       
ora....ac2.gsd application    ONLINE    ONLINE    imsrac2       
ora....ac2.ons application    ONLINE    ONLINE    imsrac2       
ora....ac2.vip application    ONLINE    ONLINE    imsrac2       
ora.rac2.ons   application    ONLINE    ONLINE    imsrac2       
ora.rac2.vip   application    ONLINE    ONLINE    imsrac2

二、修改sid和db_name
现在RAC状态一切正常,所有服务已经启动。下面来试下如何修改2台RAC机器的SID,分别修改为:imsrac1, imsrac2
1.创建pfile,然后把uip1--->imscmdb1,   uip2--->imscmdb2,并传输给另外一个节点,其他参数不任何变更
SQL> conn /as sysdba
Connected.
SQL> create pfile='/tmp/pfile' from spfile;
File created.
 
[oracle@rac1 companion]$ scp /tmp/pfile  10.128.7.102:/tmp
pfile                                                             100% 1290     1.3KB/s   00:00
[oracle@rac1 companion]$ cat /tmp/pfile
imscmdb1.__db_cache_size=4060086272
imscmdb2.__db_cache_size=4060086272
imscmdb1.__java_pool_size=16777216
imscmdb2.__java_pool_size=16777216
imscmdb1.__large_pool_size=16777216
imscmdb2.__large_pool_size=16777216
imscmdb1.__shared_pool_size=855638016
imscmdb2.__shared_pool_size=855638016
imscmdb1.__streams_pool_size=0
imscmdb2.__streams_pool_size=0
*.audit_file_dest='/u01/oracle/admin/uip/adump'
*.background_dump_dest='/u01/oracle/admin/uip/bdump'
*.cluster_database=true
*.cluster_database_instances=2
*.compatible='10.2.0.1.0'
*.control_files='/dev/ruip_control1','/dev/ruip_control2','/dev/ruip_control3'
*.core_dump_dest='/u01/oracle/admin/uip/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='imscmdb'
imscmdb1.instance_number=1
imscmdb2.instance_number=2
*.job_queue_processes=10
imscmdb1.local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 10.128.7.100)(PORT = 1521)(IP = FIRST))'
imscmdb2.local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 10.128.7.102)(PORT = 1521)(IP = FIRST))'
*.log_archive_dest_1='LOCATION=/archlog'
*.log_archive_format='%t_%s_%r.dbf'
*.open_cursors=300
*.pga_aggregate_target=1653604352
*.processes=150
*.remote_listener='LISTENERS_ims'   ---此处在tnsnnames.ora可看到
*.remote_login_passwordfile='exclusive'
*.sga_target=167772160
imsrac2.thread=2
imsrac1.thread=1
*.undo_management='AUTO'
imsrac1.undo_tablespace='UNDOTBS1'
imsrac2.undo_tablespace='UNDOTBS2'
*.user_dump_dest='/u01/app/oracle/admin/ims/udump'
2.  停止2台节点的数据库(2个节点运行,当然也可以使用srvctl stop all 或crs_stop -all)
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.imscmdb.db application    OFFLINE   OFFLINE    imsrac1         
ora....b1.inst application    OFFLINE   OFFLINE    imsrac1      
ora....b2.inst application    OFFLINE   OFFLINE    imsrac2      
ora....C1.lsnr application    ONLINE    ONLINE     imsrac1         
ora....ac1.gsd application    ONLINE    ONLINE     imsrac1         
ora....ac1.ons application    ONLINE    ONLINE     imsrac1         
ora....ac1.vip application    ONLINE    ONLINE     imsrac1         
ora....C2.lsnr application    ONLINE    ONLINE     imsrac1         
ora....ac2.gsd application    ONLINE    ONLINE     imsrac2         
ora....ac2.ons application    ONLINE    ONLINE     imsrac2         
ora....ac2.vip application    ONLINE    ONLINE     imsrac2         
ora.rac2.ons   application    ONLINE    ONLINE     imsrac2         
ora.rac2.vip   application    ONLINE    ONLINE     imsrac2 
可以看到instance都已经停止。
3.修改 .bash_profile的ORACLE_SID的环境变量,其他的不需要修改(2个节点)
export ORACLE_SID=imsrac1
export ORACLE_SID=imsrac2

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.imscmdb.db application    OFFLINE   OFFLINE   imsrac1         
ora....b1.inst application    OFFLINE   OFFLINE   imsrac1        
ora....b2.inst application    OFFLINE   OFFLINE   imsrac2        
ora....C1.lsnr application    ONLINE    ONLINE    imsrac1        
ora....ac1.gsd application    ONLINE    ONLINE    imsrac1        
ora....ac1.ons application    ONLINE    ONLINE    imsrac1        
ora....ac1.vip application    ONLINE    ONLINE    imsrac1        
ora....C2.lsnr application    ONLINE    ONLINE    imsrac1        
ora....ac2.gsd application    ONLINE    ONLINE    imsrac2        
ora....ac2.ons application    ONLINE    ONLINE    imsrac2        
ora....ac2.vip application    ONLINE    ONLINE    imsrac2        
ora.rac2.ons   application    ONLINE    ONLINE    imsrac2        
ora.rac2.vip   application    ONLINE    ONLINE    imsrac2 
可以看到,虽然启动,但是由于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      imsrac1
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
instance_name                        string      imsrac2
可以看到,数据库中instance_name已经修改了。
--清空ocr和votedisk
CRS_OCR_LOCATIONS=/dev/rocr1,/dev/rocr2
CRS_VOTING_DISKS=/dev/rvote1,/dev/rvote2,/dev/rvote3
dd if=/dev/zero f=/dev/rocr1 bs=1M count=200
dd if=/dev/zero f=/dev/rocr2 bs=1M count=200
dd if=/dev/zero f=/dev/rvote1 bs=1M count=200
dd if=/dev/zero f=/dev/rvote2 bs=1M count=200  --如果crs服务没有停止,主机会重启,理论来至oracle官方,votedisk少于一半的时候节点会全部重启
dd if=/dev/zero f=/dev/rvote3 bs=1M count=200
--设置2节点互信
cat rsa_id.pub >> authorized_key
scp authorized_key 到node1 ,再从node2scp到node1 详见安装说明(不赘述).


5. 最后就是更新OCR
首先先移除原来的SID信息:
先移除数据库注册信息
Srvctl remove databse –d uip
再移除数据库实例注册信息
[oracle@rac1 ~]$ srvctl remove instance -d uip -i uip1
Remove instance uip1 from the database uip? (y/[n]) y
[oracle@rac1 ~]$ srvctl remove instance -d uip -i uip2
Remove instance uip2 from the database uip? (y/[n]) y
查看CRS状态:
[root@rac1 tmp]# /u01/app/crs/bin/crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.imscmdb.db application    OFFLINE   OFFLINE                 
ora....b1.inst application    OFFLINE   OFFLINE           
ora....b2.inst application    OFFLINE   OFFLINE           
ora....C1.lsnr application    ONLINE    ONLINE    imsrac1        
ora....ac1.gsd application    ONLINE    ONLINE    imsrac1        
ora....ac1.ons application    ONLINE    ONLINE    imsrac1        
ora....ac1.vip application    ONLINE    ONLINE    imsrac1        
ora....C2.lsnr application    ONLINE    ONLINE    imsrac1        
ora....ac2.gsd application    ONLINE    ONLINE    imsrac2        
ora....ac2.ons application    ONLINE    ONLINE    imsrac2        
ora....ac2.vip application    ONLINE    ONLINE    imsrac2  
                                                 
6、信息已经移除,接下来就是重新注册新的instance了。 
注意:                                                  
若此时需要更改主机名需要同时更改主机ha 的配置、oracle 更改publica node name
[oracle@rac1 ~]$srvctl add database -d imscmdb -o
[oracle@rac1 ~]$ srvctl add instance -d imscmdb -i imscmdb1  -n imsrac1
[oracle@rac1 ~]$ srvctl add instance -d imscmdb -i imscmdb2  -n imsrac2
查看CRS状态:
7、netca配置监听:(过程略)

[root@rac1 tmp]# /u01/app/crs/bin/crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.imscmdb.db application    OFFLINE   OFFLINE          
ora....b1.inst application    ONLINE    ONLINE    imsrac1       
ora....b2.inst application    ONLINE    ONLINE    imsrac2       
ora....C1.lsnr application    ONLINE    ONLINE    imsrac1       
ora....ac1.gsd application    ONLINE    ONLINE    imsrac1       
ora....ac1.ons application    ONLINE    ONLINE    imsrac1       
ora....ac1.vip application    ONLINE    ONLINE    imsrac1       
ora....C2.lsnr application    ONLINE    ONLINE    imsrac1       
ora....ac2.gsd application    ONLINE    ONLINE    imsrac2       
ora....ac2.ons application    ONLINE    ONLINE    imsrac2       
ora....ac2.vip application    ONLINE    ONLINE    imsrac2        
--已经注册成功,可以发现instance变为imsrac1,imsrac2了。    

/**注:清空ocr盘跟votedisk信息后,我的listener配置经历了痛苦的过程:**/
/**最终用netca重新配置,开始没有成功,一直提示 tns-04406 object already exists 其他监听已启动,**/
/**我直接用netca 把老的删除,重配,N次后成功!(这里确实无解- -!)这里我直接在node1上操作,**/
/**此时database跟2各实例是起不来的,因为控制文件中记得还是uip(老的database name)**/

8、创建控制文件
/**另:需要注意的是,我需要把数据库mount上才能做:alter databae backup controlfile to trace as '/tmp/cf.sql'**/
/**这里,我选择了老的pfile文件,先把数据库mount上后,再备份控制文件,这也是我开始做create pfile from spfile的原因之一。**/

9、alter databae backup controlfile to trace as '/tmp/cf.sql'

10、 更改db_name,下面的脚本来之cf.sql 开始用 reuse 。。。noresetlogs会提示 ora-12720错误。错误如下:
SQL> STARTUP pfile='/tmp/pfile' NOMOUNT
CREATE CONTROLFILE reuse DATABASE "IMSCMDB" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 32
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/dev/ruip_redo1_1'  SIZE 50M,
  GROUP 2 '/dev/ruip_redo1_2'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/dev/ruip_system',
  '/dev/ruip_undotbs1',
  '/dev/ruip_sysaux',
  '/dev/ruip_undotbs2',
  '/dev/ruip_users'
CHARACTER SET ZHS16GBK;
ORACLE instance started.
Total System Global Area 4966055936 bytes
Fixed Size                  2090824 bytes
Variable Size             889194680 bytes
Database Buffers         4060086272 bytes
Redo Buffers               14684160 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "IMSCMDB" NORESETLOGS  ARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-12720: operation requires database is in EXCLUSIVE mode
/**上面 ORA-12720错误提示是因为rac 有个参数cluster_database 设了true 即,集群需要2个节点同时更改,故现在不显示**/
/**且当初修改database_name的时候我依然用的reuse 这会提示 ora-01161错误,此处必须用set ,设置new database。**/
/**这是基础,修改:alter system set cluster_database=false scope=spfile sid='*';**/

SQL> CREATE CONTROLFILE set DATABASE "IMSCMDB" RESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 192
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 1024
  5      MAXINSTANCES 32
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 '/dev/ruip_redo1_1'  SIZE 50M,
  9    GROUP 2 '/dev/ruip_redo1_2'  SIZE 50M
 10  -- STANDBY LOGFILE
 11  DATAFILE
 12    '/dev/ruip_system',
 13    '/dev/ruip_undotbs1',
 14    '/dev/ruip_sysaux',
 15    '/dev/ruip_undotbs2',
 16    '/dev/ruip_users'
 17  CHARACTER SET ZHS16GBK;
Control file created.
SQL> startup mount
ORACLE instance started.
Total System Global Area 4966055936 bytes
Fixed Size                  2090824 bytes
Variable Size             889194680 bytes
Database Buffers         4060086272 bytes
Redo Buffers               14684160 bytes
Database mounted.
--ok,控制文件创建完成,数据库自动mount
11、尝试打开数据库,上面创建控制文件脚本是用resetlogs创建的,故用resetlogs open;
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-38856: cannot mark instance imscmdb2 (redo thread 2) as enabled
/**发现alter database backup controlfile to trace as '/xx.sql'
生成的trace文件中的set#1(noresetlogs)跟set#2(resetlogs),
对redo的处理其实不一样,2只是1的standby。故这里需要重新添加一组(thread2)的redo即可**/
mount状态下添加,方法如下:
alter database add logfile thread 2
 GROUP 3 '/dev/ruip_redo2_1'  SIZE 50M,
 GROUP 4 '/dev/ruip_redo2_2'  SIZE 50M;
alter database open resetlogs;
---成功
 
alter system set cluster_database=true scope=spfile sid='*';
12、 在node2: 调整由spfile 自动启动
重建SPFILE文件的步骤
可以用create spfile from pfile='/tmp/pfile';来覆盖
因为如果这个参数没有调整,如果你使用crs_start -all启动crs资源, 这个节点如果是自动启动,会失败;
[root@racdb1 bin]# ./srvctl start database -d imscmdb 或者 crs_start -all
13、 观察crs 状态
$ crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.imscmdb.db application    ONLINE    ONLINE    imsrac1    
ora....b1.inst application    ONLINE    ONLINE    imsrac1    
ora....b2.inst application    ONLINE    ONLINE    imsrac2    
ora....C1.lsnr application    ONLINE    ONLINE    imsrac1    
ora....ac1.gsd application    ONLINE    ONLINE    imsrac1    
ora....ac1.ons application    ONLINE    ONLINE    imsrac1    
ora....ac1.vip application    ONLINE    ONLINE    imsrac1    
ora....C2.lsnr application    ONLINE    ONLINE    imsrac2    
ora....ac2.gsd application    ONLINE    ONLINE    imsrac2    
ora....ac2.ons application    ONLINE    ONLINE    imsrac2    
ora....ac2.vip application    ONLINE    ONLINE    imsrac2
全部正常,因为这个rac 用的是裸设备,spfile看下在哪儿
SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/oracle/db/dbs/spfileimscm
--理论上应该是指向:/dev/rxxx_spfile.
以后再处理!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22907091/viewspace-716224/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 查看执行计划
请登录后发表评论 登录
全部评论

注册时间:2011-04-07

  • 博文量
    62
  • 访问量
    189747