Oracle Active Data Guard - OPEN_MODE 狀態
我想問一些關於 Oracle Active Data Guard 的問題。
目前,我們正在尋找一種有效的方法來獲取 Oracle 數據庫的實時備份。我們嘗試在執行 Windows Server 2012 R2 和未經許可的 Oracle 11g R2 的測試伺服器上應用 Oracle Active Data Guard。
我們在物理備用伺服器上應用了這些命令:
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE OPEN READ ONLY; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
我們檢查了
OPEN_MODE
數據庫的狀態:SQL> select database_role, open_mode from v$database;
結果我們得到了這個:
DATABASE_ROLE OPEN_MODE ---------------- -------------------- PHYSICAL STANDBY READ ONLY WITH APPLY
我們嘗試重新啟動 Oracle 服務(以模擬突然的電源波動或意外的伺服器關閉)。
OPEN_MODE
狀態變為:DATABASE_ROLE OPEN_MODE ---------------- -------------------- PHYSICAL STANDBY READ ONLY
如果我們重新啟動服務,狀態是否預設
OPEN_MODE
變為?READ ONLY
還是我們真的需要獲得許可才能完全訪問 Oracle Active Data Guard 功能,這樣即使我們重新啟動 Oracle 伺服器,OPEN_MODE
狀態也會永久保持?READ ONLY WITH APPLY
在使用 DataGuard 時,我強烈建議使用 DataGuard Broker (dgmgrl)。
它極大地簡化了集群管理過程,是查詢和診斷集群問題的首選工具。
dgmgrl / DGMGRL> show configuration . . . DGMGRL> show database PRIMARY_DB . . . DGMGRL> show database STANDBY_DB . . .
1. 沒有活動的 Data Guard
通常備用數據庫處於掛載狀態和恢復模式(應用來自主數據庫的更改)。對使用者數據的查詢將不起作用,因為 DB 已安裝但未打開。如果我們想打開數據庫,那麼我們必須停止恢復然後打開數據庫。
因此存檔日誌將繼續出現但不會應用 - 數據庫是不可更改的。如果表在主數據庫上更新 - 在備用數據庫上,我們將看不到此更改。
2. 使用 Active Data Guard
通常 ADG Standby 數據庫處於打開狀態和恢復模式。並且查詢返回(幾乎)目前數據 - 如果表在主數據庫上更改 - 它在備用數據庫上更改。當我們想從主伺服器解除安裝一些高負載查詢(報告)時,ADG 備用非常有用。如果 Data Guard 的主要原因是 HA/DR,則不需要 ADG 許可證。
當我們在 Windows 上重新啟動 oracle 服務時,它是打開的數據庫。
所以執行 regedit,在 HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_OraDb11g_home1 之類的地方將 ORA_xxxxx_AUTOSTART 更改為 false,其中 xxxxx - 是您的 oracle 實例名稱。現在啟動服務不會啟動 oracle 實例。您需要手動或在腳本中執行
startup mount recover managed standby ...
如果您設置了 DataGuard Broker,則無需執行恢復語句 - 代理會執行它。