ORA-12801,ORA-08103

一:版本信息

操作系统版本:AIX 61009

数据库版本:11.2.0.3.11(RAC)


二:错误描述

研发反应,今天他们很多过程报“ORA-12801: 并行查询服务器 P004,ORA-08103: 对象不再存在” 错误。查看了他们的过程具体报错部分发现

都是 insert into test select /*+ parallel(a,4) */ * from test1 a类似的语句报的错


三:错误原因及解决方法
   对于这种之前作同样的处理一直是正常的,某天突然出现故障的问题,分析思路还是很清楚的。(一般情况下都是因为对数据库做了变动造成的)

   首先看了一下ORACLE 的alert日志没有发现任何报错。然后问了几个同事,结果发现在报错的那个时间段他在对一些分区表做压缩处理。进一步检查发现
报错涉及的表都是他做压缩处理的表。分析到这里已经可以大胆的猜测故障的原因就是因为他的压缩操作。
 

带着我们的猜测去MOS上查询了一下ORA-08103错误,找到如下两篇NOTE
1)“Getting ORA-1410 or ORA-8103 When Running Select Against Partition or Subpartition With Active Exchange (Doc ID 727597.1)”
2)“OERR: ORA-8103 "object no longer exists" Master Note / Troubleshooting, Diagnostic and Solution (Doc ID 8103.1)”。
  从两篇文章中我们知道对数据库中的相关对象(实体对象,如表及索引等)做truncate table,alter index .. rebuild,alter table .. move等操作会使对象的data_object_id发生变化。
如果我们在某个会话正在访问相关对象时,在该对象作如上几种操作,就有可能触发ORA-08103报错。压缩表的分区其实也是一种move操作(alter table aaa move partition PM201407 compress;)
会造成data_block_id改变


四:解决方案
  尽量不要在程序运行过程中,对程序设计到的表作变动。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔夫数据库笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值