新增数据文件导致dataguard同步异常

新增数据文件导致dataguard同步异常

前天一朋友发来一问题,一台服务器的归档目录快满了,不清楚是否可以清理掉,因为它是一台备机。这里记录一下当时指导他的处理过程:


确定主备关系

经了解,这是一套physical standby结构的dataguard。通常情况下,物理standby需要两边节点的物理结构也相同,否则需要通过参数db_file_name_convert、log_file_name_convert明确指定。

日志应用情况

要确定是否可以清除那些归档,需要查看,传递到备库的这些日志是否完全应用了。让他查询之后,结构如下,显然是没有应用完的。
dataguard

为什么没有应用

竟然堆积了两百多个归档没有apply,那么想必是出现了什么异常,遗憾的是他并没有在alert日志找到相关的信息。(我觉得肯定会报出来,他没有找到而已)
看看dataguard相关的进程情况:

select process,status,client_process,sequence# from v$managed_standby;

正常情况下应该有MRP0进程处于WAIT_FOR_LOG状态或WRITING状态。但实际没有。
dataguard

那么只能再应用一遍,看看报什么错吧。

alter database recover managed standby database disconnect from session;

立马报错了:
dataguard
看样子是主库那边新增了数据文件,但是备端同步应用的时候发现无法新增,然后自动生成了一个文件名并放到默认的dbs路径下。这也就是导致日志无法应用的原因了。导致归档日志不断堆积。

看看主备库上的24号文件

主库:
dataguard

备库:
dataguard

从这里看,因为主备使用了裸设备,所以在主库新增数据文件的时候,备库无法正常创建。如果使用的filesystem或者asm存储,那么可以避免该问题的发生。

恢复过程

参照主库端的24号文件对应的裸设备大小在备端创建相同的裸设备文件。

mklv -y ora_users01 -t raw -ex -TO -w n -s n -r n datavg 10000m
chown oracle:oinstall /dev/rora_users01

修改参数standby_file_management

将standby_file_management设为手动模式

alter system set standby_file_management='MANUAL' scope=both;

--重新创建24号文件
alter database create datafile '/oracle/app/product/10g/db_1/dbs/UNNAMED00024' as '/dev/rora_users01';

再次应用归档

alter database recover managed standby database disconnect from session;

dataguard

随着归档日志的apply,24号文件状态将从RECOVER变为ONLINE。

dataguard
归档日志已恢复正常应用。

dataguard
未应用的日志越来越少。 

当日志完全应用完毕后,即可清理这些归档以便回收空间。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值