问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 查询报ora-08103

发布网友 发布时间:2022-04-10 06:53

我来回答

2个回答

热心网友 时间:2022-04-10 08:22

ORA-8103是我们Database Consultant 经常要遇到的一个问题,了解ORA-8103的成因非常重要。
【数据恢复】利用构造ROWID实现无备份情况下绕过ORA-1578、ORA-8103、ORA-1410等逻辑/物理坏块问题
简单来说ORA-8103 的主要成因有2类:
数据块的 block type 类型 是 无效的 或者读出来的块类型与Oracle期望的不一致。 例如 Oracle 认为该数据块的类型为data(type=6),但实际却不是。
数据块中的data_object_id 和 数据字典中的data_object_id不匹配

针对ORA-8103问题 我们优先推荐一些措施:
ORA-08103问题的诊断最好是能生成8103错误的ERROR STACK TRACE, 在TRACE中会记录具体引发8103的对象的OBJ和OBJD,这便于我们定位可能存在corruption的对象。
问题在于往往前台进程遇到ORA-08103错误不会在后台生成TRACE文件,这需要我们手动设置8103 触发ERRORSTACK的EVENTS:
ALTER SYSTEM SET EVENTS ’8103 TRACE NAME ERRORSTACK LEVEL 3′;
解决思路包括:
1. 通过OBJD和DBA定位到具体的表名和块号
2. 有条件的情况下对该表做一个analyze .. validate structure
3. 有条件的情况下对该表所在tablespace做一个 dbms_space_admin.ASSM_TABLESPACE_VERIFY
4. 有条件的情况下move这张表或者相关的分区,尝试绕过该问题
5. 有条件的情况下降该表或分区移动到MSSM表空间上,绕过该问题
execute dbms_space_admin.tablespace_verify(‘&tablespace_name’)
oradebug setmypid
oradebug tracefile_name
execute dbms_space_admin.assm_tablespace_verify(‘&tablespace_name’,dbms_space_admin.TS_VERIFY_BITMAPS)
oradebug setmypid
oradebug tracefile_name

针对不同的 analyze validate structure 后得到的结果 , 我们可以得到一些初步的结论:

如果执行 flush buffer cache之后再次analyze validate structure不再报ORA-8103错误则说明:
可能是完全正常的现象,之前的ORA-8103正是也因为对象正在被DROP/TRUNCATE而导致SELECT报ORA-8103。一般来说Call Stack会显示进程正尝试访问该段的segment header。 更多信息可以参考BUG 7441661
也可能该问题仅仅发生在buffer cache层,而没有发生在DISK上。通过flush buffer_cache若能解决,则一般是这种情况,往往是Buffer Cache管理的BUG 。

如果执行 flush buffer cache之后再次analyze validate structure再次报ORA-8103错误则说明:
如果mp对应的数据块发现 该块在逻辑上是完整一致的(也可以用bbed/dbv工具验证), 则有可能是Lost Write,则不是被其他对象重格式化使用了。
这里判断Lost Write的一个重要手段是 对块做recover/blockrecover,如果recover能修复该块,则说明是因为Lost Write引起了本ORA-8103问题,如果不是则说明99%的可能性是BUG引起的。
常见的一种现象是 使用第三方工具在数据库打开的情况下copy 数据库,这些工具的BUG可能导致copy 老的版本的block到目标新库中。

另一种可能是 extent盘区级别的不一致。 同一个数据块/extent 可能 同时属于 2个数据段segment,这导致其中的一个被后者覆盖。 通过recover的方式是无法修复这种场景的, 因为这种逻辑的讹误发生在表空间级别的extent信息上。 可以检查dba_extents/dba_segments/dba_free_space这些视图来确定问题数据块到底是否同时属于多个对象, 或者 一个数据块 同时出现在dba_extents/dba_segments/dba_free_space 三个视图中, 因为 used extent 不该出现在dba_free_space中,而free extent不该在dba_extents,当然要排除recyclebin中对象的影响。 绝大多数情况下这种extent逻辑不一致的现象, 被称作extent overlap , 通常是Oracle Space Management空间管理层面的BUG。

在对ORA-8103问题的诊断过程中 定位问题的OBJD异常重要。应当说准确地将ORA-8103错误与BUG定位起来是有难度的,因为这往往需要涉及到redo mp以发现到底是哪些opcode造成了后续的objd 或 block type 不一致。在一些BUG中我们发现,由于可能的变量陈旧,造成objd的结构未合理清除, 之后就发现block上的objd是错的了,可能遇到ORA-8103也可能是ORA-1410, 这引起了后续其他的逻辑讹误,以至于很难通过TRACE/REDO LOG DUMP来定位原始问题所在。 这也是为什么虽然在例如版本10.2.0.4上有几个ORA-8103的bug Note, 但这些BUG最终未被close为real software bug即真的软件BUG , 大多都是不了了之,因为在用户现场的TRACE和REDO DUMP都未必能真实定位到问题所在,这也是为什么我们要说逻辑讹误的分析和处理原要比物理讹误来的复杂。

Maclean的经验是 在有大量Oracle DB的环境下 一年出个几次的逻辑/物理坏块是很正常的事情, 对于物理讹误 我们只要切实备份即可99%得解决。 而对于逻辑坏块可做的 事情不多, 打最新的补丁 开 db_block_checking、db_block_checksum几件事情而已。

值得一说的是 如果去读一下ORA-8103的一些Bug Note,可以发现使用 LOB、APPEND INSERT、PARALLEL INSERT、exchange partition 、Split partition、advanced compression、HCC 混合列压缩往往是引起ORA-8103的高危操作 , 但实际我们又不可能放弃上述操作。

热心网友 时间:2022-04-10 09:40

Oracle DBA神器:PRM-DUL灾难恢复工具可以直接从这种受损的Oracle数据库中将数据拯救出来。
当你的数据库因为ORA-00600/ORA-07445或其他ORA-报错,或丢失关键的system表空间数据文件,或ASM diskgroup损坏时均可以考虑采用PRM-DUL来做恢复。PRM-DUL采用独创的DataBridge恢复技术,直接从数据文件中抽取数据后可以像DBLINK那样直接插入到新建数据库中,而无需数据落地成为DMP文件占用空间。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...玩网页游戏当输入完用户名,密码 点登入时 网页会自动关闭,就是点下... 一看电影网页游戏就掉线 771天津到无锡在那个火车站上车 天津1469次火车到无锡哪个火车站?求解 天津西到无锡东的G211途经哪些站? k5268次列车途经站点 java.applet描述 小动物之星禁止跳舞成就怎么完成 小动物之星如何解锁禁止跳舞 小动物之星蕉驴不焦虑成就怎么做 小动物之星蕉驴不焦虑成就完成方 小动物之星农场奇遇的完成方法 舞蹈艺考集训费用是多少? 高三舞蹈艺考生集训大概要多少钱 艺考生体育舞蹈花费高吗 初三中考艺考舞蹈生学费多少 学舞蹈艺考生上大学一年花多少钱? 东莞市正帆五金科技有限公司怎么样? 舞蹈艺考集训要花多少钱? 武汉正帆教育科技有限公司怎么样? 舞蹈生艺考具体花多少钱? 正帆科技出差每次多久回来一趟 气体股票有哪些 上海正帆半导体设备有限公司怎么样? 上海正帆科技靠谱吗 如何查看每支股票的市盈率? 骗取银行贷款一定是犯罪吗 骗取贷款罪是行为犯还是结果犯 在银行贷款,然后跑了,欠债不还,这是一种什么行为? 诈骗是行为犯还是结果犯 贷款诈骗是行为犯还是结果犯 集资诈骗罪是行为犯还是结果犯! 急急急``求一份年度个人总结 我买了一份平安聚宝盆保险一年交一万交三年五年取钱但是看合同上写的十年期请问怎么办好? 9岁较太平洋聚宝盆未来星怎么算 太平洋聚宝盆我今年53岁每年交一万到65岁能领多少钱 荣耀x30i手机怎么截屏 太平洋聚宝盆年金保险交到十年以后到了退休年龄能拿回本金吗? 荣耀30i 怎么截屏? 我今年49交太平洋聚宝盆寿险,每年一万,交五年,什么时候领钱 荣耀x30i怎么打开小物件 送给小宝贝的生日祝福怎么写 减税降费持续推进取得了什么?成果 教师招聘考试之迁移理论 举一隅不以三隅反则不复也反映的是学习迁移还是定势 学习迁移的理论 减税降费持续释放深圳实体经济活力 教育心理学题苛勒的小鸡啄米实验证明了关系转换学习迁移理论,知觉方面的实验是___证据 学前教育《游戏论》中,什么叫转换理论? 贾德证明学习迁移概括化理论的实验是 被人打致轻伤派出所说是公诉对吗?派出所都会走什么程序? 桑代克 迁徙理论