Oracle ORA-08104報錯處理方法及注意事項


【環境介紹】

系統環境:IBM P740 8205-E6C (AIX) + 11.2.0.3.0 Oracle RAC

【背景介紹】

故障描述:數據庫表空間超過90%,無法進行擴容表空間,需要業務側清理歷史數據,在清理期間出現ORA-08104報錯,無法再進行清理數據。

反饋報錯信息:

從數據庫報錯看出,有會話執行了重建索引操作或者重建索引操作時回退。

【問題分析】

查看數據庫日志信息:發現數據庫報錯,出現臨時表空間不足情況,查看當前表為分區表,大小為180多G,懷疑重建索引時臨時表空間不足導致回滾。

查看等待事件信息:沒有發現異常等待事件。

查看有會話對這個對象進行索引操作:根據用戶帥選,發現ACTIVE狀態會話沒有對該對象索引操作。

查看是否有大事務回滾情況:查詢沒有大事務回滾信息。

查看是否僵死進程:根據對象名,定位sqltext,sql_id發現有INACTIVE狀態會話有重建索引操作

經過咨詢,需求方反饋期間對該對象重建索引操作,但是期間終端終端,之后重新刪除分區時報錯。

確認可以殺掉該會話,當前status為INACTIVE狀態,需要spid定位主機進程殺掉,殺到進行后需要清理索引信息,否則還是會報錯。

declare
done boolean;
begin
   done:=dbms_repair.online_index_clean(275314);---OBJECT_ID
end;
/

 

【總結】

雖然操縱很簡單,但是注意的問題會有很多,准確評估才能使工程的正常完成:

刪除數據時,需要備份數據(物理備份,邏輯備份),制定正確清理策略,定期移動或者清理歷史數據,防止誤操作引起的數據丟失;

對於日志類型監控表,建議使用分區方式存儲數據,方便清理歷史數據,SQL分區查詢性能優化;

對於全局索引建議在表比較小的情況下使用online方式重建索引;

重建索引時注意表大小和臨時表空間大小,對於對象較大的情況,建議使用並行方式重建索引;

建議使用腳本刪除或者重建索引操作,防止網絡引起終端斷開導致事務回滾;

建議對表操作后可根據分區進行收集統計信息;

建議對分區表使用local index,全局索引刪除分區導致索引失效。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM