#记录工作实践#
描述:
备库因某些原因导致数据与主库差异过大,无法通过差异同步的方式恢复数据一致性。
解决方案:
通过全库恢复的方式同步数据后,再重新开启 Data Guard (DG) 同步。
操作步骤:
一、主库执行全库备份
1. 停用 Data Guard 同步
SQL> ALTER SYSTEM SET log_archive_dest_state_2='DEFER';
2. 主库备份
不含 spfile,可用于备库还原时使用原有的 spfile。
注:若需同时备份 spfile,可添加以下语句:
backup spfile format '/mnt/db2/bakrestore/spfile_%T.bak';
备份脚本:
rman target /
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK FORMAT '/mnt/db2/bakrestore/full_bak_%U.bkp';
ALLOCATE CHANNEL c2 DEVICE TYPE DISK FORMAT '/mnt/db2/bakrestore/full_bak_%U.bkp';
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG TAG='full_backup';
BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/mnt/db2/bakrestore/standby_controlfile.ctl';
RELEASE CHANNEL c1;
RELEASE CHANNEL c2;
}
EXIT;
EOF
二、备库的操作
1. 清理备库
1) 停止备库 Oracle 实例
sqlplus / as sysdba
SQL> shutdown immediate;
2) 删除旧的数据库文件和控制文件
删除备库的所有数据文件、日志文件、控制文件和归档日志。
文件路径查询方法:
-- 查询归档日志路径
SELECT name FROM v$archived_log;
-- 连接到备库数据库
sqlplus / as sysdba;
-- 查询数据文件路径
SELECT file_name FROM dba_data_files;