永发信息网

Oracle数据库SELECT查询老是报ORA-1410怎么办?求大神提点意见

答案:2  悬赏:30  手机版
解决时间 2021-02-22 15:41
Oracle数据库SELECT查询老是报ORA-01410怎么办?求大神提点意见
最佳答案
ORA-1410 invalid rows错误是与ORA-8103相似的Oracle数据库逻辑层面的讹误。
了解ORA-1410逻辑坏块问题的成因,以及有效的解决手段十分重要。
解决方案之一:
可以通过如下PL/SQL过程将健康数据复制到新建表中,对于问题数据块中的数据将被跳过,对于能够容忍数据丢失的场景可以考虑这样恢复,之后truncate 原表/分区并将健康数据加载进去。 具体的脚本见下面的链接:
【数据恢复】利用构造ROWID实现无备份情况下绕过ORA-1578、ORA-8103、ORA-1410等逻辑/物理坏块问题

oerr ora 1410
01410, 00000, “invalid ROWID”
// *Cause:
// *Action:
如果对ORA-1410做errorstack 一般会看到下面的LOG:
OBJD MISMATCH typ=6, seg.obj=%d, diskobj=%d, dsflg=%d, dsobj=%d, tid=%d, cls=%d

触发ORA-1410错误的stack call一般都是: kcbgtcr=>kcbzib=>kcbz_check_objd_typ,即在对数据块做逻辑读时运行到kcbz_check_objd_typ函数时,检测到OBJD 不一致的问题。由于seg.obj和diskobj不一致,而10g以后的kcbz_check_objd_typ函数负责验证块上的objd是否mistmatch,若不一致则触发ORA-1410错误。
造成objd mimatch的主要可能有几种:
1、 写丢失 Lost Write, 写丢失造成相关数据块没有为现有对象正常格式化,导致虽然该数据块的checksum是正确的,但对应数据字典却是不一致的。 写丢失也可能由磁盘或卷组镜像同步软件的不完整复制造成。

If the on-disk objd is < kcbdsobj, then there is possibility of Oracle messing up or IO layer (OS Cache, Volume mgr etc) missing writes.

对于Lost Write在10g版本中没有太好的预防方案,隐藏”_db_lost_write_checking”控制在DBWR写数据文件后立即去读被写的块以便检测出Lost Write,但是该参数对性能的损耗较大,不建议设置。
11g中引入了DB_LOST_WRITE_PROTECT参数配合Data Guard使用可以有效检测出Lost Write问题。
如果自己搞不定可以找ASKMACLEAN专业数据库修复团队成员帮您恢复!
全部回答
期待看到有用的回答!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
上海海关现场业务一处地址有知道的么?有点事
恒顺经营部在哪里啊,我有事要去这个地方
以下关于流动资金贷款的说法正确的有()。A.流
深圳男工陪产假多少天,有没有这少面的规定,
跑跑卡丁车幸运石板能开无限制吗?
徐州附近有什么好玩的
淮北市宏大特种纺纱有限公司我想知道这个在什
英语翻译你能说说你正在观察的这10家公司有什
女友出轨了,还发他们发生关系的照片给我,为
新百生活广场1号门怎么去啊,有知道地址的么
qq新群怎么快速拉人
投资银行的核心业务是什么
期货账号是多少位
寄生兽加藤最后死了吗?
六年级学上买火车票买成人票吗
推荐资讯
继飞水果蔬菜粮油超市怎么去啊,有知道地址的
水浒传1到50百度云
流化床锅炉落煤管堵煤如何处理?
《雪莲》文章
用“张钧甯”三字做诗?
将四株大小差不多的同一种植物的幼苗,分别培
想起个装饰公司的名字,大家帮忙一下啊,要大
同学们都听过“蜀犬吠日”这个成语吧,“蜀”
【千山鸟飞绝万径人踪灭】“千山鸟飞绝,万径
东南亚商品馆在什么地方啊,我要过去处理事情
沈万明圪旦在什么地方啊,我要过去处理事情
冲洗底片打一名词
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?