程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> ORA-12801,ORA-08103

ORA-12801,ORA-08103

編輯:Oracle教程

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改變


四:解決方案
盡量不要在程序運行過程中,對程序設計到的表作變動。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved