Oracle

Oracle Active Data Guard - OPEN_MODE 狀態

  • November 23, 2019

我想問一些關於 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,則無需執行恢復語句 - 代理會執行它。

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