要實現兩個數據庫之間的實時同步,需要給Oracle設置參數
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; -- 執行了12小時,等待數據庫中的其它事務都提交以後才執行完成 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
遇到的問題
在執行第一條命令的時候,等待超過12小時,命令掛起12小時。原因是要等待數據庫中的其它事務都提交以後纔可以執行這個命令。
解決方案
1. 等待其它事務全部執行完成
2. 數據庫停機重啓,強制關閉所有事務就可以順利的執行你的命令了。
注意:如果在等待命令的過程中,強行kill掉這個設置參數的命令會如何。下面是參考資料,注意,僅供參考。
-
命令特性:ALTER DATABASE ADD SUPPLEMENTAL LOG DATA這類DDL (Data Definition Language) 命令通常不涉及大量數據的修改,而是修改數據庫的元數據或配置。因此,從理論上講,即使這個命令被中斷,需要回滾的操作相對較少,不像大規模的數據插入或更新那樣涉及大量的數據回滾。
-
Oracle處理機制:Oracle數據庫對於DDL操作的處理通常是原子性的,意味着要麼完全執行,要麼完全不執行。如果你強行中斷了這個命令,Oracle會嘗試撤銷已經部分完成的操作,以保持數據庫的一致性和完整性。這種撤銷操作通常涉及的是元數據的更改,而不是大量數據的回滾。
-
數據庫狀態:強行中斷可能會留下未完成的操作,這可能需要數據庫在後續操作中進行清理或恢復,但這種情況對於ALTER DATABASE ADD SUPPLEMENTAL LOG DATA來說影響通常較小。
-
性能影響:即使有回滾發生,由於這個命令涉及的更改主要是配置性質的,不涉及大量數據的移動,所以對數據庫性能的影響應該是有限的。
-
監控和分析:如果這個命令長時間不響應,建議先通過Oracle的動態性能視圖(如V$SESSION或V$SQL等)監控命令的執行狀態,瞭解是否真的卡住,還是隻是執行較慢。
-
謹慎操作:在決定kill一個數據庫操作之前,最好是謹慎考慮,因爲這可能會留下未完成的狀態。如果必須這麼做,確保你瞭解可能的後果,並準備好執行必要的後續步驟,比如重新執行命令或檢查數據庫的一致性。