oracle adg备端alert日志报错日志损坏?

oracle adg备端数据库因文件系统满,导致同步失败,清理空间后,
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE 操作MRP进程起不来,报错ora-00354 ora-00353 ora-00334,如下图所示,感觉像是2200这个日志传输过程中损坏了,因为已经几天了才发现,主端归档日志名称都是thread_1_xxxx.xxxx.xxxxxxxx这种,找不到thread_1_2200的归档日志。

想请教这个问题怎么处理,能不能找到这个日志重传覆盖备端日志,然后启动备端日志处理?

微信图片_20170808155427.jpg

微信图片_20170808155427.jpg

参与17

3同行回答

renou2012renou2012数据库管理员KE
这个问题最好帖下trace文件以下是检查事项和处理办法1 寻找归档文件查看下select * from v$archive_gap;select inst_id,process,status,thread#,sequence#,block#,blocks from gv$managed_standby; 应该可以确定是否存在gap和当前的日志序号如果存在序号大于2200文件,而...显示全部

这个问题最好帖下trace文件
以下是检查事项和处理办法
1 寻找归档文件
查看下
select * from v$archive_gap;
select inst_id,process,status,thread#,sequence#,block#,blocks from gv$managed_standby;
应该可以确定是否存在gap和当前的日志序号
如果存在序号大于2200文件,而你本地又没有2200文件,你需要从主库copy 2200文件到备库
至于你说的主库名字是thread_1_xxxx.xxxx.xxxxxxxx,这个序号的会可以通过数据库里面的sequence#查出
比如说在主库查询 select * from v$archived_log where sequence#='2200';找到具体路径
或者通过rman 里面的list archivelog sequence 2200;寻找
ps,如果你的主库也没有2200号归档文件,你也可以采用增量复制的方式来跳过该错误,恢复ADG。
2 copy,并且注册归档文件
因为你的以前的2200文件存在错误,需要手动删除文件,然后通过rman自带的CROSSCHECK命令
CROSSCHECK ARCHIVELOG sequence 2200; 然后通过 delete noprompt archivelog sequence 2200;删除系统记录信息
最后从主库拷贝2200文件,或许名字不一定是2200不过这个不影响,
注册 catalog start with '/arch' ;
3 最后执行应用日志命令

收起
金融其它 · 2017-08-08
浏览3073
  • 我看了下备份任务,每天都有一个全备,并且有delete noprompt expired backupset of archivelog all语句 ,我查了下select * from v$archived_log where sequence#='2200';这个日志是8月5号的,name列显示sfzfdg,这是备库名称,rman里没有, 求解哪里还能找到这个日志,或者怎么用增量复制的方式跳过该错误?
    2017-08-08
  • 我刚看了下rman备份日志,里边有备份这个2200日志的记录,我这么怎么从里边把它提取出来?
    2017-08-08
  • [此评论已删除]
    2017-08-09
  • 既然有备份,那就简单了,你需要恢复就行了 命令如下 restore archivelog from logseq 2200until logseq 2201; 执行完之后会有一个文件路径
    2017-08-09
y18511664518y18511664518技术总监长城超云
从主库上找到这些归档日志,手工传送到备库,然后注册一下,命令如下:SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG; select * from V$ARCHIVE_GAP;ALTER DATABASE REGISTER LOGFILE '/home/oracle/thread_2_seq_2270.440.90763...显示全部

从主库上找到这些归档日志,手工传送到备库,然后注册一下,命令如下:
SELECT UNIQUE THREAD#, MAX(SEQUENCE#) OVER(PARTITION BY THREAD#) LAST FROM V$ARCHIVED_LOG;
select * from V$ARCHIVE_GAP;
ALTER DATABASE REGISTER LOGFILE '/home/oracle/thread_2_seq_2270.440.907637439';

收起
金融其它 · 2017-08-08
  • 您好,按照您给的语句备端、主端查询结果均是 THREAD# LAST --------------- 1 2654 2 1492 V$ARCHIVE_GAP表无数据, 2654已经远超过alert日志中报错的2200这个日志号,我是否在主端找到thread_1_seq_2654、thread_2_seq_1492两个文件传到备端注册?
    2017-08-08
  • set pagesize 50; col name for a50 ; select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;
    2017-08-08
  • 找到那两个文件传送到dg,然后注册
    2017-08-08
  • 提示 ora-16089 :archive log has already been registered
    2017-08-08
desert_xudesert_xu数据库运维工程师杭州xxxx有限公司
检查一下 filesystemio_options linux ext4 上有一个bug显示全部

检查一下 filesystemio_options linux ext4 上有一个bug

收起
医药 · 2017-08-09
浏览2600

提问者

lyq0619
数据库管理员北京速通科技有限公司

问题状态

  • 发布时间:2017-08-08
  • 关注会员:4 人
  • 问题浏览:4284
  • 最近回答:2017-08-09
  • X社区推广