Oracle OCP、MySQL OCP,曾服务移动、电信、政府等行业,目前主要从事Oracle 和PG系列工作,熟悉Oracle、MySQL及国产数据库。
适用范围
Oracle 12c 以上
问题概述
模拟备库中断,导致与主库之间的日志同步中断。
解决方案
1、记录备库当前SCN号
2、使用 RECOVER STANDBY
USING SERVICE 恢复
采用RMAN 的新功能 recover standby using service,通过RMAN 连接到 target 备库,并用主库的服务执行恢复命令
RECOVER DATABASE FROM SERVICE <primary_db_service_name> NOREDO USING COMPRESSED BACKUPSET;
注意:确认主库的TNS已配置,这里的<primary_db_service_name> 即TNSNAME。
具体步骤:
2.1、启动备库到NOMOUNT 状态:
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
2.2、从主库恢复控制文件
run{
restore standby controlfile from service <primary_db_service_name>;
alter database mount;
}
这里的primary_db_service_name 是主库的服务名,列如orcl
3、检查主备GAP 期间是否添加了数据文件
查询备库上数据文件头最小的SCN
在主库上查询低SCN后新增加的数据文件
SQL> select file# from v$datafile where creation_change# >=(min_scn);
示例中 min_scn 为1441823 查询得到缺失的数据文件号为 9,10,11,12
4、恢复新添加的数据文件
5、修复日志与临时文件路径:
-- 若主备目录不一致
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
SQL> ALTER DATABASE RENAME FILE '/old_path/redo01.log' TO '/new_path/redo01.log'; -- 重命名所有日志/临时文件
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
6、执行增量恢复
7、开启备库日志应用,检查同步情况
7.1 主库切几次归档
7.2 查看备库同步是否正常
7.3 测试同步情况
在主库插入数据
7.4 在备库查询是否同步