Oracle設定日誌引數-ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

大稳·杨發表於2024-02-27

要實現兩個資料庫之間的實時同步,需要給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命令時,如果命令長時間不響應,並且決定中斷(kill)這個操作,這可能會有幾種不同的結果,取決於命令執行到了哪個階段以及Oracle資料庫的具體處理機制。
是否會引起回滾?
  • 命令特性: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一個資料庫操作之前,最好是謹慎考慮,因為這可能會留下未完成的狀態。如果必須這麼做,確保你瞭解可能的後果,並準備好執行必要的後續步驟,比如重新執行命令或檢查資料庫的一致性。
總的來說,雖然中斷ALTER DATABASE ADD SUPPLEMENTAL LOG DATA命令可能不會導致大規模的資料回滾,但任何強制中斷操作都應謹慎進行,以避免潛在的問題。在操作前最好諮詢Oracle的官方文件或尋求專業的DBA支援。

相關文章