问题描述
应用跑批报错,反馈过来查询oracle日志发现有报错,经查询定位到一个分区表,我一直以为如果块损坏rman的全库备份会无法进行,进而留有坏块前的备份,但是结果是rman备份以及数据泵备份依然每天正常进行且不告警。因为冗余的的问题,只有最近一天的备份存在了! 是否已无法恢复?如果有坏块前的rman备份是否就可以恢复了?
经进一步查看 select count(*) 那个分区显示26 条数据 但是select * 那个分区无任何显示。(如果是坏块 是否应该报错而不是无显示呢??)
整个分区表 select count(*) 是70条数据 select * 是43条数据,但是select 首列 是70条,select 第二列是43条。
expdp 导出时43条(无告警) 这种方式重建表就是43条了。
create table as select 方式重建表也是43条了。
select count(*) 和 select * 一致。
ora 600 [kdsgrp1]
专家解答
数据块不是物理坏块,这样rman和dbv都检测不到,从报错内容看,数据块中有逻辑错误,slot 12 not found,估计表的列数目过多,单条行数据跨页存储了,现在错误表现就是跨页数据的指向关系丢失了。你可以用rowid单独查一下那个物理位置有没有数据。或者排除那个位置查全变,看看记录条数。
最后还是建议设置10231事件,将表重新导出导入一次,排除隐患
问题已关闭: 原环境通过导入导出,使数据一致了,43条!。问题已间接解决。。。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




