上篇地址http://blog.itpub.net/29047826/viewspace-1284906/
1,源端执行RMAN全库备份
备份路径为节点node1的本地磁盘。为了将该备份复制到灾备端,此次备份不能保存在ASM上。
run { allocate channel ch01 device type disk; allocate channel ch02 device type disk; backup format ‘/backup/full_%d_%s_%T_%p.bak’ database include current controlfile; sql ‘alter system archive log current’; backup archivelog all format ‘/backup/arch_%d_%s_%T_%p’; release channel ch02; release channel ch01; } |
2,查看controlfile所在的备份片。灾备端恢复的时候也从这个备份片中读取controlfile。
RMAN> list backup of controlfile;
List of Backup Sets BS Key Type LV Size Device Type Elapsed Time Completion Time |
3,获取不活动的(INACTIVE)的已经归档的日志的最后一个SCN号,如果有多个已归档的INACTIVE的组,取最大的FIRST_CHANGE# 1260645
该SCN号作为灾备端recover database until 的SCN,并且在复制进程重新启动后也要参照这个SCN。
SYS@PROD1 > select inst_id,group#,thread#,sequence#,archived,status,first_change# from gv$log order by status;
INST_ID GROUP# THREAD# SEQUENCE# ARC STATUS FIRST_CHANGE# |
4,将源端备份复制到灾备端
[oracle@node1 ~]$ scp /backup/* oracle@172.16.228.103:/backup/
5,停止灾备端的复制进程准备恢复数据库
GGSCI (node3) 4> stop rt1
Sending STOP request to REPLICAT RT1 …
Request processed.
停止复制进程后,可以在源端继续执行一些DML操作。这些操作会正常的通过抽取进程获取,并有投递进程投递到灾备端的remote trail目录,只是暂时不用复制进程追加而已。
6,关闭灾备端数据库
[root@node3 ~]# srvctl stop database -d prod
7,灾备端从RMAN启动数据库到nomount状态
[root@node3 ~]# su – oracle [oracle@node3 ~]$ rman target / RMAN> startup nomount; Oracle instance started Total System Global Area 672256000 bytes Fixed Size 2256272 bytes |
8,灾备端从RMAN恢复控制文件
RMAN> restore controlfile from ‘/backup/full_PROD_24_20140928_1.bak’;
Starting restore at 2014-09-28 20:14:13 channel ORA_DISK_1: restoring control file |
9,灾备端控制文件加载复制过来的备份集信息,核对控制文件信息
RMAN> catalog start with ‘/backup/’;
RMAN> list backup;
10,灾备端从RMAN恢复数据库
RMAN> restore database;
11,灾备端从RMAN恢复归档日志
RMAN> run{
allocate channel c1 type disk;
allocate channel c2 type disk;
restore archivelog all;
release channel c1;
release channel c2;
}
12,灾备端从RMAN指定SCN恢复。该SCN是源端数据库执行RMAN备份后状态为INACTIVE中数值最大的SCN。
RMAN> recover database until scn 1260645
13,灾备端在mount状态下通过控制文件查看文件头的scn是否一致
SYS@PROD1 > select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE# 7 rows selected. SYS@PROD1 > select checkpoint_change# from v$datafile; CHECKPOINT_CHANGE# |
14,灾备端resetlogs方式开启数据库
alter database open resetlogs;
[root@node3 ~]# srvctl start database -d prod
15,灾备端重新配置checkpoint
[oracle@node3 goldengate]$ ggsci
GGSCI (node3) 1> DBLOGIN USERID oggadmin,PASSWORD oggadmin GGSCI (node3) 2> ADD CHECKPOINTTABLE oggadmin.checkpointtable GGSCI (node3) 14> DELETE REPLICAT rt1 GGSCI (node3) 15> ADD REPLICAT rt1, EXTTRAIL /goldengate/dirdat/rt, checkpointtable oggadmin.checkpointtable |
16,灾备端重新启动复制进程,从SCN为1260645开始
注意这个单词不要写错aftercsn
GGSCI (node3) 16> start rt1 aftercsn 1260645
Sending START request to MANAGER … |
17,灾备端通过sqlplus查询恢复数据库期间生成的DML是否被成功追加
sqlplus / as sysdba
select * from snow.t1
本次初始化演练到此结束。