1、 主库丢失归档恢复备库 (oracle 11.2.0.3) 文档历史信息 目前修订日期: -09-29 版本号 修订日期 修订人 变更内容 备注 0.1 -09-29 陈伟 创建文档
2、 一、使用范围 3 1、使用对象 3 2、使用场景 3 二、具体操作 3 备库查询scn 3 主库创建增量备份 4 备库恢复数据 4 开启主库 5 一、使用范围 1、使用对象 数据库维护人员。 现场实施人员。 2、使用场景 在系统运转过程中因为人为,或网络,等其它意外情况造成主库归档日志未在备库正常应用,丢了若干个归档序号。同时主库是归档日志因为定时rman任务清除,使归
3、档日志无法完成同时。 使用命令SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;可查看日常DG同时情况,如在备库中出现短号情况适用本文档。 二、具体操作 备库查询scn 1、 前提条件 备库监听已经开启 >netstat –an |grep 1521 备库数据库处于Standby状态 >sqlplus /nolog Sql>connect /as sysdba sql> shutdown immediate sql>startup mount; sql> Alter
4、 database recover managed standby database disconnect from session; 2、 查询备库同时scn号 > sqlplus /nolog sql> connect /as sysdba sql> select current_scn from v$database; 显示结果: CURRENT_SCN ----------- 227761 主库创建增量备份 1、 前提条件 主库运行正常 2、 创建基于scn增量备份 使用rman targ
5、et / nocatalog命令进入rman命令行 假如不能实施命令, 请用:/home/oracle/product/11gR2/db/bin/rman target / nocatalog 注意:创建增量备份,scn一定要和备库一直,并确保备份文件夹为空。 rman> BACKUP DEVICE TYPE DISK INCREMENTAL FROM SCN 227761 DATABASE FORMAT '/home/oracle/backup/backlogs/bkup_incre+%T+%U.bk'; 3、 将备份文件复制到standby端 > scp -r /h
6、ome/oracle/backup/ backlogs / .2:/home/oracle/backup/ 注意:远程文件夹下不能有backlogs文件夹 4、 关闭主库 > sqlplus /nolog sql > connect /as sysdba sql> shutdown immediate 确保在数据恢复期间不会有新数据产生 备库恢复数据 1、 切换备库状态为:repository >sqlplus /nolog Sql>connect /as sysdba Sql> Alter database recover managed standby
7、 database cancel; 2、 将备份文件导入备库 RMAN> CATALOG START WITH '/home/oracle/backup/backlogs/'; 3、 确定控制文件路径 Sql>show parameter control 4、 恢复数据重新创建控制文件 RMAN> run{ restore standby controlfile to '/home/oracle/backup/control02.ctl' ; recover database noredo; }; 5、 关闭备库 > sqlplus /nolog sql>
8、 connect /as sysdba sql> shutdown immediate 6、 将/home/oracle/backup/control02.ctl覆盖/home/oracle/oradata/zfmmdb/control02.ctl和/home/oracle/oradata/zfmmdb/control01.ctl >cp /home/oracle/backup/control02.ctl /home/oracle/oradata/zfmmdb/control01.ctl >cp /home/oracle/backup/control02.ctl /home/or
9、acle/oradata/zfmmdb/control02.ctl 7、 重启备库 > sqlplus /nolog sql> connect /as sysdba sql> STARTUP MOUNT; sql> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; 开启主库 > startup 三、验证DG系统是否恢复正常 主库操作 确定现有归档重做日志 SQL->SELECT SEQUENCE#, FIRST_TIME, NEXT_TIMEFROM V$AR
10、CHIVED_LOG ORDER BY SEQUENCE#; 手动实施联机日志 SQL->ALTER SYSTEM SWITCH LOGFILE; 备库操作 验证新重做日志已经抵达standby数据库 SQL->SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; 验证新重做日志已经应用 SQL->SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; 四、附录 状态模拟
11、因为测试需要现提供场景模拟方法 1、关闭备库监听或数据库 2、使用oracle用户登录到主库手动发送归档日志 >sqlplus /nolog sql>connect /as sysdba SQL->ALTER SYSTEM SWITCH LOGFILE; SQL->ALTER SYSTEM SWITCH LOGFILE; 3、查询手动发送归档日志序号 SQL->SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; 4、删除对应序号
12、日志 5、开启备机,再次使用手动同时方法。 经过以上步骤dg处于备机不能正常同时状态。 保护模式开启 注意事项: 以下操作请在主库实施. 1检验保护模式 sqlplus /nolog SQL->connect /as sysdba SQL->select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database; DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL ---------------- -------------------- -------------------- PRIMARY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE 默认保护模式为最大性能 2修改保护模式 SQL->shutdown immediate SQL->startup mount SQL->ALTER DATABASE SET STANDBY DATABASE TO maximize availability; SQL->ALTER DATABASE OPEN;






