標籤:儲存 曆史 使用 status object_id alt 表操作 方式 line
【環境介紹】
系統內容: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;
/
Drop Partition Failed With ORA-08104: This Index Object Is Being Online Built Or Rebuilt (文檔 ID 2358693.1)
【總結】
雖然操縱很簡單,但是注意的問題會有很多,準確評估才能使工程的正常完成:
刪除資料時,需要備份資料(物理備份,邏輯備份),制定正確清理策略,定期移動或者清理曆史資料,防止誤操作引起的資料丟失;
對於日誌類型監控表,建議使用分區方式儲存資料,方便清理曆史資料,SQL分區查詢效能最佳化;
對於全域索引建議在表比較小的情況下使用online方式重建索引;
重建索引時注意表大小和暫存資料表空間大小,對於對象較大的情況,建議使用並行方式重建索引;
建議使用指令碼刪除或者重建索引操作,防止網路引起終端斷開導致交易回復;
建議對錶操作後可根據分區進行收集統計資訊;
建議對分區表使用local index,全域索引刪除分區導致索引失效。
Oracle ORA-08104報錯處理方法及注意事項