Oracle

ORA-02049 超時:分佈式事務等待鎖定解決方案需要

  • May 18, 2016

我們正在清理主數據庫中去年的交易。我們使用公共數據庫連結每天從另一個數據庫中刪除記錄。每天的記錄大約是 30-40k,但有時交易量會達到 100 萬條記錄。當刪除過程面臨這樣的日子時,它會鎖定主數據庫並導致鎖定。什麼是清除記錄的理想解決方案?我們也嘗試使用alter table truncate partition解決方案。但是,鎖定情況在這一點上更糟。當我們清除數據庫時,新記錄正在實時寫入數據庫。所以我無法重新啟動或增加distributed_lock_timeout參數。任何解決方案表示讚賞。

首先,不要將數據庫連結用於較大的事務。這可能會導致阻塞會話出現太多問題。另一個提示是保持交易的大小(不要小,不要大)。

如果您的表未分區,則編寫一段程式碼以僅刪除 1000 行,送出並刪除接下來的 1000 行。


你說的alter table <table_name> truncate partition <partition_name>;是這張表是分區的嗎?

  • 為什麼要每天從分區表中刪除數據?表的分區方式是否相同?

要歸檔整個分區,最好將其與具有相同結構的空表進行交換。之後,您可以導出/備份表,然後將其刪除。如果您的分區位於專用表空間中,您還可以將其標記為只讀並在每日備份中跳過它(在 RMAN 中啟用備份優化)。

引用自:https://dba.stackexchange.com/questions/138391