美文网首页
oracle DG库从磁带全库恢复

oracle DG库从磁带全库恢复

作者: 其徐如林 | 来源:发表于2020-01-09 16:58 被阅读0次


1,获取最新的控制文件
在主库执行以下命令,如果报错,换一个文件名
alter database create standby controlfile as '/home/oracle/control01.ctl';

scp /home/oracle/control01.ctl 备库ip:/home/oracle/

2,复制到备库对应位置后进行恢复
sqlplus / as sysdba
SQL> shutdown immediate
SQL> startup nomount 
SQL> exit

rman target /
RMAN> restore controlfile from '/home/oracle/control01.ctl';  ----这里的control01.ctl和上面生成的文件名对应
RMAN> sql  'alter database mount standby database';

在后台恢复
vi restore.sh

rman target / <<EOF
run {
ALLOCATE CHANNEL ch00 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=主库的主机名)';
ALLOCATE CHANNEL ch01 TYPE 'SBT_TAPE' parms 'ENV=(NB_ORA_CLIENT=主库的主机名)';
restore database ;
recover database delete archivelog;
release channel ch00;
release channel ch01;
}
exit;
EOF

nohup sh restore.sh &

3,创建standby logfile
需要在主库上查询 
select bytes as logsize from v$log;
select member from v$logfile;

在备库上创建
(standby logfile需要比redologfile多一组,每组只能创建一个成员,group编号不能重复,group编号要比主库上最大group#大于20)

大小根据主库查询到的结果设置,路径根据本地实际路径,数量为主库日志组数+1

ALTER DATABASE ADD STANDBY LOGFILE thread 1 group 21  ('/xxx/xxxrdo_u01/xxx/stdredo21.log') size <logsize> reuse;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 group 22  ('/xxx/xxxrdo_u01/xxx/stdredo22.log') size <logsize> reuse;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 group 23  ('/xxx/xxxrdo_u01/xxx/stdredo23.log') size <logsize> reuse;
ALTER DATABASE ADD STANDBY LOGFILE group 21 ('/wuhcxidst0/wuhcxidst0rdo_u01/wuhcxidst0/stdredo01.log') SIZE 314572800;
ALTER DATABASE ADD STANDBY LOGFILE group 22 ('/wuhcxidst0/wuhcxidst0rdo_u01/wuhcxidst0/stdredo02.log') SIZE 314572800;
ALTER DATABASE ADD STANDBY LOGFILE group 23 ('/wuhcxidst0/wuhcxidst0rdo_u01/wuhcxidst0/stdredo03.log') SIZE 314572800;

4,在DG备库上启动同步
alter database recover managed standby database  disconnect from session;
select process,status,sequence# from v$managed_standby; 
---- 正常情况下会存在一个mrp0进程,需要追平日志
####如何判断日志是否追平####
主库查询当前最新日志序号
select SEQUENCE# from v$log where STATUS='CURRENT';
备库查看当前所需日志号(WAIT_FOR_LOG)
select STATUS,SEQUENCE# from  v$managed_standby where PROCESS='MRP0';
####以上2个查询结果一致,则已经追平####
----继续执行以下命令
alter database recover managed standby database cancel;
alter database open read only ;
alter database recover managed standby database using current logfile disconnect from session;


相关文章

网友评论

      本文标题:oracle DG库从磁带全库恢复

      本文链接:https://www.haomeiwen.com/subject/ugayactx.html