oracle data guard重建
情况:1、dg备库存在很大的归档gap,且主库已无归档日志;
2、主库的磁盘空间剩余量不多。
方式:删除备库,并使用rman的duplicate在线复制。
注:所有的操作都在备库执行。
1、备库取消日志应用
SYS@slave>alter database recover managed standby database cancel;
Database altered.
##查看数据文件路径
SYS@slave> select name from v$datafile;
##查看redo日志文件路径
SYS@slave> select member from v$logfile;
##查看控制文件路径
SYS@slave> select name from v$controlfile;
##查看归档日志文件路径
SYS@slave> archive log list;
2、关闭备库
SYS@slave>shutdown immediate
3、将备库的数据文件、redo日志文件、控制文件move到新建的backup文件夹,同时复制pfile文件,spfile文件到backup文件夹(相当于给备库做冷备);
删除归档文件
(注:如果备库磁盘空间充足,尽量不要直接删除备库的文件。)
4、将备库启动到nomount状态
SYS@slave> startup nomount
5、在备库上使用rman的duplicate进行复制
##连接rman
rman target sys/密码@master auxiliary sys/密码@slave
(注:master和slave为tnsnames.ora文件中配置的服务名。)
##使用duplicate复制
RMAN> duplicate target database for standby from active database nofilenamecheck;
附:使用duplicate时报错:ORA-19554,原因是rman 中设置备份通道设备类型为’SBT_TAPE’,修改为’DISK’后,再重新duplicate即可。
RMAN> CONFIGURE CHANNEL DEVICE TYPE ‘DISK’;
6、开启备库,并启用日志实时应用
##打开备库
SYS@slave>alter database open;
##备库启用日志实时应用
SYS@slave>alter database recover managed standby database using current logfile disconnect from session;
7、检查备库
#查看备库运行模式
select open_mode,database_role from v$database;
#检查进程状态
SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;
#查看当前延迟情况
SELECT name, value, datum_time, time_computed FROM V$DATAGUARD_STATS WHERE name like ‘apply lag’;
#查询表记录,确认数据是否实时同步
select max(t.create_time) from txs_pre_order t
–data guard删除,并重建完成–