通过物理DG将单实例迁移至RAC

目的:将单实例的数据库(filesystem)迁移至RAC环境,停机时间非常有限,所以想到了通过物理DG来实现

环境准备:  RAC环境不需要安装数据库
单实例(归档模式): 
IP: 192.168.10.26    
SID:ora11g
db_uniquen_name:ora11g

RAC:   
主机名:rac1,rac2
IP: 192.168.10.149 rac1
192.168.10.150 rac2

192.168.10.160 rac1-vip
192.168.10.161 rac2-vip

10.10.1.1 rac1-priv
10.10.1.2 rac2-priv

192.168.10.162 rac-scan

SID:  ora11g1  ora11g2
DB_UNIQUE_NAME:ora11g1

一、主库环境配置
1,修改主库为强制日志模式

点击(此处)折叠或打开

  1. alter database force logging;
2,为主库添加standby日志(因为后面要switchover)

点击(此处)折叠或打开

  1. alter database add standby logfile group 4 ('/oracle/app/oradata/ORA11G/standby_redo04.log') size 200m;
  2. alter database add standby logfile group 5 ('/oracle/app/oradata/ORA11G/standby_redo05.log') size 200m;
  3. alter database add standby logfile group 6 ('/oracle/app/oradata/ORA11G/standby_redo06.log') size 200m;
  4. alter database add standby logfile group 7 ('/oracle/app/oradata/ORA11G/standby_redo07.log') size 200m;
3,复制密码文件到备库$ORACLE_HOME/dbs目录下

点击(此处)折叠或打开

  1. scp $ORACLE_HOME/dbs/orapwora11g.ora rac1:$ORACLE_HOME/dbs
4,配置主库的tnsnames.ora,并复制至备库

点击(此处)折叠或打开

  1. primary=
  2.   (DESCRIPTION =
  3.     (ADDRESS_LIST =
  4.       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.26)(PORT = 1521))
  5.     )
  6.     (CONNECT_DATA =
  7.       (SERVICE_NAME = ora11g)
  8.     )
  9.   )
  10.  
  11. standby=
  12.   (DESCRIPTION =
  13.     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.160)(PORT = 1521))
  14.     (CONNECT_DATA =
  15.       (SERVER = DEDICATED)
  16.       (SERVICE_NAME = ora11g1)
  17.       (UR = A)
  18.     )
  19.   )
注意:standby端即rac端的ip地址写的是ora11g1的vip地址,而且需要加上(UR=A)选项,否则通过sqlplus连接不到rac实例。

5,配置DG参数

点击(此处)折叠或打开

  1. alter system set log_archive_config='dg_config=(ora11g,ora11g1)' scope=both;
  2. alter system set log_archive_dest_1='location=/oracle/app/oracle/archive_log valid_for=(all_logfiles,all_roles) db_unique_name=ora11g' scope=both;
  3. alter system set log_archive_dest_2='service=standby lgwr async valid_for=(online_logfiles,all_roles) db_unique_name=ora11g1' scope=both;
  4. alter system set fal_server=ora11g1 scope=both;
6,生成pfile,并复制到备库

点击(此处)折叠或打开

  1. SQL>create pfile from spfile;
点击( 此处)折叠或打开
  1. scp $ORACLE_HOME/dbs/initora11g.ora rac1:$ORACLE_HOME/dbs
二、备库
1,修改主库复制过来的参数文件

点击(此处)折叠或打开

  1. ora11g.__db_cache_size=335544320
  2. ora11g.__java_pool_size=4194304
  3. ora11g.__large_pool_size=4194304
  4. ora11g.__oracle_base='/u01/app'
  5. ora11g.__pga_aggregate_target=335544320
  6. ora11g.__sga_target=503316480
  7. ora11g.__shared_io_pool_size=0
  8. ora11g.__shared_pool_size=146800640
  9. ora11g.__streams_pool_size=0
  10. *.audit_file_dest='/u01/app/oracle/admin/ora11g'
  11. *.audit_trail='none'
  12. *.compatible='11.2.0.1.0'
  13. *.control_files='+DATA/ora11g/controlfile/control.ctl'
  14. *.db_block_size=8192
  15. *.db_domain=''
  16. *.db_name='ora11g'
  17. *.db_recovery_file_dest='+DATA'
  18. *.db_recovery_file_dest_size=5218762752
  19. *.diagnostic_dest='/u01/app/oracle'
  20. *.memory_target=838860800
  21. *.open_cursors=300
  22. *.processes=1000
  23. *.remote_login_passwordfile='EXCLUSIVE'

  24. #### rac parameter
  25. ora11g1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.160)(PORT=1521))'
  26. ora11g2.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.161)(PORT=1521))'
  27. ora11g1.undo_tablespace='UNDOTBS1'
  28. ora11g2.undo_tablespace='UNDOTBS2'
  29. ora11g1.remote_listener='rac-scan:1521'
  30. ora11g2.remote_listener='rac-scan:1521'
  31. ora11g1.instance_name=ora11g1
  32. ora11g2.instance_name=ora11g2
  33. ora11g1.instance_number=1
  34. ora11g2.instance_number=2
  35. *.cluster_database=true
  36. *.cluster_database_instances=2
  37. *.db_create_file_dest='+DATA'
  38. *.db_create_online_log_dest_1='+DATA'
  39. ora11g1.thread=1
  40. ora11g2.thread=2

  41. ### dg parameter
  42. *.db_unique_name=ora11g1
  43. *.log_archive_config='dg_config=(ora11g1,ora11g)'
  44. *.standby_file_management='AUTO'
  45. *.db_file_name_convert='/oracle/app/oradata/ORA11G','+DATA/ora11g/datafile'
  46. *.log_file_name_convert='/oracle/app/oradata/ORA11G','+DATA/ora11g/onlinelog'
  47. *.log_archive_dest_1='location=+DATA/ora11g/archivelog valid_for=(all_logfiles,all_roles) db_unique_name=ora11g1'
  48. *.log_archive_dest_2='service=primary lgwr async valid_for=(online_logfiles,all_roles) db_unique_name=ora11g'
  49. *.fal_server=primary

2,备库创建需要的目录,并启动备库到nomount状态
文件系统目录:

点击(此处)折叠或打开

  1. mkdir -p /u01/app/oracle/admin/ora11g/adump
  2. mkdir -p /u01/app/oracle/admin/ora11g/dpdump
  3. mkdir -p /u01/app/oracle/admin/ora11g/pfile
ASM目录:

点击(此处)折叠或打开

  1. mkdir +DATA/ora11g/datafile
  2. mkdir +DATA/ora11g/controlfile
  3. mkdir +DATA/ora11g/onlinelog
  4. mkdir +DATA/ora11g/archivelog

点击(此处)折叠或打开

  1. SQL>startup nomount pfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initora11g1.ora'
3,测试tnsnames连通性
主库:

点击(此处)折叠或打开

  1. sqlplus sys/*****@standby as sysdba
备库:

点击(此处)折叠或打开

  1. sqlplus sys/*****@primary as sysdba

三、主库用rman备份

点击(此处)折叠或打开

  1. rman target /

  2. run {
  3. allocate channel c1 device type disk;
  4. allocate channel c2 device type disk;
  5. backup incremental level 0
  6. format '/home/oracle/rman_bak/inr0_%U' tag 'full_bak_for_rac_standby'
  7. database plus archivelog delete all input;
  8. release channel c1;
  9. release channel c2;
  10. }

  11. backup format '/home/oracle/rman_bak/control01.ctl' current controlfile for standby;

四、通过duplicate复制至备库
rman target sys/*****@ora11g auxiliary sys/xj1234@standby
duplicate target database for standby from active database;
注意:1,11.2.0.1有个bug,用duplicate复制的时候,本机rman target / 这种方式会报错,需要写全用户名密码。
         2,备库的standby_file_management需要该问manaul模式,auto模式下日志rename会失败

五、备库启动redo应用:

点击(此处)折叠或打开

  1. alter database recover managed standby database disconnect from session;
  2. alter database recover managed standby database cancel;
  3. alter database open read only;
  4. alter database recover managed standby database using current logfile disconnect from session;

六、switch over,将备库转换为主库,分别在主库和备库进行角色转换:
主库:

点击(此处)折叠或打开

  1. SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  2. ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
备库:

点击(此处)折叠或打开

  1. SELECT SWITCHOVER_STATUS FROM V$DATABASE;
  2. ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown;
  3. select status from v$instance;
  4. alter database open;

七、rac的一个节点已经可以正常打开数据库了,但是节点2需要的redo,undo表空间都还没有,需要手工创建:

点击(此处)折叠或打开

  1. alter database add logfile thread 2 group 8 '+DATADG' size 100m;
  2. alter database add logfile thread 2 group 9 '+DATADG' size 100m;
  3. alter database add logfile thread 2 group 10 '+DATADG' size 100m;
  4. alter database enable public thread 2;
  5. @$ORACLE_HOME/rdbms/admin/catclust.sql

八、节点2打开数据库
SQL>startup  

九、此时的数据库是可以正常打开使用了,一般还需将参数文件写到asm中,而且此时的数据库都是本地管理,并没有注册到grid中,还需要手工注册:

点击(此处)折叠或打开

  1. srvctl add database -d ora11g -o /u01/app/oracle/product/11.2.0/dbhome_1
  2. srvctl config database
  3. srvctl add instance -d ora11g -n rac1 -i ora11g1
  4. srvctl add instance -d ora11g -n rac2 -i ora11g2
点击( 此处)折叠或打开
  1. create spfile='+DATA' from pfile;
点击( 此处)折叠或打开
  1. srvctl modify database -d ora11g -p '+data/ora11g1/parameterfile/spfile.325.886161615'
十、到此,单实例已经转换完成了rac数据库。可以重启一下机器,看看数据库能否自动启动,资源是否正常。
如有需要,可以修改service_name

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

转载于:http://blog.itpub.net/29098758/viewspace-2139394/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值