您好,登錄后才能下訂單哦!
這篇文章主要介紹“使用Data Guard Broker進行Data Guard物理備用庫配置的方法是什么”,在日常操作中,相信很多人在使用Data Guard Broker進行Data Guard物理備用庫配置的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”使用Data Guard Broker進行Data Guard物理備用庫配置的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
檢查主數據庫是否處于歸檔日志模式。
SELECT log_mode FROM v$database; LOG_MODE ------------ NOARCHIVELOG SQL>
如果是 NOARCHIVELOG 模式,則切換到 ARCHIVELOG 模式。
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
通過發出以下命令啟用強制日志記錄。
ALTER DATABASE FORCE LOGGING; -- 確保至少存在一個日志文件。 ALTER SYSTEM SWITCH LOGFILE;
在主數據庫上創建備用重做日志(在切換的情況下)。備用重做日志應該至少和最大的聯機重做日志一樣大,并且與聯機重做日志相比,每個線程應該有一個額外的組。在我的例子中,必須在兩臺服務器上創建以下備用重做日志。
-- 如果使用Oracle Managed Files(OMF)。 ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M; ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M; ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M; ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M; -- 如果未使用Oracle Managed Files(OMF)。 ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oradata/cdb1/standby_redo01.log') SIZE 50M; ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oradata/cdb1/standby_redo02.log') SIZE 50M; ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oradata/cdb1/standby_redo03.log') SIZE 50M; ALTER DATABASE ADD STANDBY LOGFILE ('/u01/oradata/cdb1/standby_redo04.log') SIZE 50M;
如果您想使用閃回數據庫,請立即在主數據庫上啟用它,因此它也將在備用數據庫上啟用。它非常有用,你可以使用以下命令啟用閃回:
ALTER DATABASE FLASHBACK ON;
檢查 DB_NAME 和 DB_UNIQUE_NAME 參數的設置。在這種情況下,在主數據庫上都設置為 “cdb1”。
SQL> show parameter db_name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_name string cdb1 SQL> show parameter db_unique_name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_unique_name string cdb1SQL>
備用數據庫的 DB_NAME 與主數據庫的 DB_NAME 相同,但它必須具有不同的DB_UNIQUE_NAME 值。對于此示例,備用數據庫的值為 “cdb1_stby”。
確保已設置 STANDBY_FILE_MANAGEMENT 參數。可以使用以下命令進行設置:
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
兩臺服務器上的 “$ORACLE_HOME/network/admin/tnsnames.ora” 文件中都需要主數據庫和備用數據庫的條目。您可以使用網絡配置實用程序(netca)或手動創建這些。在本示例都使用以下條目。請注意在條目中使用 SID 而不是 SERVICE_NAME。這很重要,因為代理在關閉時需要連接到數據庫,因此服務將不存在。
cdb1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-19-dg1)(PORT = 1521)) ) (CONNECT_DATA = (SID = cdb1) ) ) cdb1_stby = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-19-dg2)(PORT = 1521)) ) (CONNECT_DATA = (SID = cdb1) ) )
主服務器上的 “$ORACLE_HOME/network/admin/listener.ora” 文件包含以下配置。
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-19-dg1)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = cdb1_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/db_1) (SID_NAME = cdb1) ) ) ADR_BASE_LISTENER = /u01/app/oracle
備用服務器上的 “$ORACLE_HOME/network/admin/listener.ora” 文件包含以下配置。由于代理在關閉時需要連接到數據庫,因此我們不能依賴于監聽器的自動注冊,因此數據庫的顯式條目。
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ol7-19-dg2)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = cdb1_stby_DGMGRL) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/db_1) (SID_NAME = cdb1) ) ) ADR_BASE_LISTENER = /u01/app/oracle
完成 listener.ora 修改后,請使用以下命令在兩臺服務器上重新啟動監聽器。
lsnrctl stop lsnrctl start
為備用數據庫創建名為 “/tmp/initcdb1” 的參數文件,內容如下:
*.db_name='cdb1'
在備用服務器上創建必要的目錄。
mkdir -p /u01/app/oracle/oradata/cdb1/pdbseed mkdir -p /u01/app/oracle/oradata/cdb1/pdb1 mkdir -p /u01/app/oracle/fast_recovery_area/cdb1 mkdir -p /u01/app/oracle/admin/cdb1/adump
創建密碼文件,SYS密碼與主數據庫的密碼匹配。
$ orapwd file=/u01/app/oracle/product/19.0.0/db_1/dbs/orapwcdb1 password=Password1 entries=10
使用臨時 “init.ora” 文件啟動備用服務器上的輔助實例。
$ export ORACLE_SID=cdb1 $ sqlplus / as sysdba SQL> STARTUP NOMOUNT PFILE='/tmp/initcdb1_stby.ora';
連接到 RMAN,為 TARGET 和 AUXILIARY 實例指定完整的連接字符串。請勿嘗試使用 OS 身份驗證。
$ rman TARGET sys/Password1@cdb1 AUXILIARY sys/Password1@cdb1_stby
現在發出以下 DUPLICATE 命令:
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER SPFILE SET db_unique_name='cdb1_stby' COMMENT 'Is standby' NOFILENAMECHECK;
如果需要轉換文件位置或更改任何初始化參數,可以在 DUPLICATE 期間使用 SET 命令執行此操作。如下所示:
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER SPFILE SET db_unique_name='cdb1_stby' COMMENT 'Is standby' SET db_file_name_convert='/original/directory/path2/','/new/directory/path2/','/original/directory/path3/','/new/directory/path3/' SET log_file_name_convert='/original/directory/path2/','/new/directory/path2/','/original/directory/path3/','/new/directory/path3/' SET job_queue_processes='0' NOFILENAMECHECK;
命令中各個項的簡要說明如下:
· FOR STANDBY:這告訴 DUPLICATE 命令將用于備用數據庫,因此它不會強制更改 DBID。
· FROM ACTIVE DATABASE:DUPLICATE 將直接從源數據文件創建,無需額外的備份步驟。
· DORECOVER:DUPLICATE 將包括恢復步驟,使待機狀態達到當前時間點。
· SPFILE:允許我們在從源服務器復制 spfile 時重置它。
· NOFILENAMECHECK:不檢查目標文件位置。
以上命令完成后,我們就可以開始使用 Broker 了。
此時我們有一個主數據庫和一個備用數據庫,所以現在我們需要開始使用 Data Guard Broker 來管理它們。連接到兩個數據庫(主數據庫和備用數據庫)并發出以下命令:
ALTER SYSTEM SET dg_broker_start=true;
在主服務器上,發出以下命令以向代理注冊主服務器:
$ dgmgrl sys/Password1@cdb1 DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:39:33 2018 Version 19.2.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected as SYSDBA. DGMGRL> CREATE CONFIGURATION my_dg_config AS PRIMARY DATABASE IS cdb1 CONNECT IDENTIFIER IS cdb1; Configuration "my_dg_config" created with primary database "cdb1" DGMGRL>
現在添加備用數據庫。
DGMGRL> ADD DATABASE cdb1_stby AS CONNECT IDENTIFIER IS cdb1_stby MAINTAINED AS PHYSICAL; Database "cdb1_stby" added DGMGRL>
現在我們啟用新配置。
DGMGRL> ENABLE CONFIGURATION; Enabled. DGMGRL>
以下命令顯示如何從 broker 檢查數據庫的配置和狀態:
DGMGRL> SHOW CONFIGURATION; Configuration - my_dg_config Protection Mode: MaxPerformance Members: cdb1 - Primary database cdb1_stby - Physical standby database Fast-Start Failover: DISABLED Configuration Status:SUCCESS (status updated 26 seconds ago) DGMGRL> SHOW DATABASE cdb1; Database - cdb1 Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): cdb1 Database Status: SUCCESS DGMGRL> SHOW DATABASE cdb1_stby; Database - cdb1_stby Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds (computed 1 second ago) Apply Lag: 0 seconds (computed 1 second ago) Average Apply Rate: 5.00 KByte/s Real Time Query: OFF Instance(s): cdb1 Database Status: SUCCESS DGMGRL>
數據庫可以是兩種互斥模式之一(主用或備用)。可以在運行時更改這些角色,而不會丟失數據或重置日志。此過程稱為“切換”,可以使用以下命令執行。連接到主數據庫(cdb1)并切換到備用數據庫(cdb1_stby)。
$ dgmgrl sys/Password1@cdb1 DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:39:33 2018Version 19.2.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected as SYSDBA. DGMGRL> SWITCHOVER TO cdb1_stby; Performing switchover NOW, please wait... Operation requires a connection to instance "cdb1" on database "cdb1_stby" Connecting to instance "cdb1"... Connected as SYSDBA. New primary database "cdb1_stby" is opening... Operation requires start up of instance "cdb1" on database "cdb1"Starting instance "cdb1"...ORACLE instance started.Database mounted.Switchover succeeded, new primary is "cdb1_stby" DGMGRL>
讓我們切換回原來的主數據庫。連接到新主服務器(cdb1_stby)并切換到新的備用數據庫(cdb1)。
$ dgmgrl sys/Password1@cdb1_stby DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:53:36 2018Version 19.2.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected as SYSDBA. DGMGRL> SWITCHOVER TO cdb1; Performing switchover NOW, please wait... Operation requires a connection to instance "cdb1" on database "cdb1" Connecting to instance "cdb1"... Connected as SYSDBA. New primary database "cdb1" is opening... Operation requires start up of instance "cdb1" on database "cdb1_stby"Starting instance "cdb1"...ORACLE instance started.Database mounted.Switchover succeeded, new primary is "cdb1" DGMGRL>
如果主數據庫不可用,則可以使用以下語句將備用數據庫激活為主數據庫。連接到備用數據庫(cdb1_stby)并進行故障轉移。
$ dgmgrl sys/Password1@cdb1_stby DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:53:36 2018Version 19.2.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected as SYSDBA. DGMGRL> FAILOVER TO cdb1_stby; Performing failover NOW, please wait... Failover succeeded, new primary is "cdb1_stby" DGMGRL>
由于備用數據庫現在是主數據庫,因此應立即進行數據庫備份。
現在可以將原始主數據庫配置為備用數據庫。如果在主數據庫上啟用了閃回數據庫,則可以使用以下命令相對輕松地完成此操作。
DGMGRL> REINSTATE DATABASE cdb1; Reinstating database "cdb1", please wait... Operation requires shut down of instance "cdb1" on database "cdb1" Shutting down instance "cdb1"... ORACLE instance shut down. Operation requires start up of instance "cdb1" on database "cdb1"Starting instance "cdb1"...ORACLE instance started.Database mounted. Continuing to reinstate database "cdb1" ... Reinstatement of database "cdb1" succeeded DGMGRL>
如果未啟用閃回數據庫,則必須手動將 cdb1 重新創建為備用數據庫。基本過程與您之前所做的相反。如下命令:
# 1) 清理舊實例。 sqlplus / as sysdba <<EOF SHUTDOWN IMMEDIATE; EXIT; EOF rm -Rf /u01/app/oracle/oradata/cdb1/* rm -Rf /u01/app/oracle/fast_recovery_area/cdb1 rm -Rf /u01/app/oracle/fast_recovery_area/cdb1_stby rm -Rf /u01/app/oracle/admin/cdb1mkdir -p /u01/app/oracle/fast_recovery_area/cdb1mkdir -p /u01/app/oracle/admin/cdb1/adumpmkdir -p /u01/app/oracle/oradata/cdb1/pdbseedmkdir -p /u01/app/oracle/oradata/cdb1/pdb1 rm $ORACLE_HOME/dbs/spfilecdb1.ora export ORACLE_SID=cdb1 sqlplus / as sysdba <<EOF STARTUP NOMOUNT PFILE='/tmp/initcdb1_stby.ora'; EXIT; EOF # 2) 連接到 RMAN. $ rman TARGET sys/Password1@cdb1_stby AUXILIARY sys/Password1@cdb1 # 3) 復制數據庫。 DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER SPFILE SET db_unique_name='cdb1' COMMENT 'Is standby' NOFILENAMECHECK; # 4) 連接到當前主節點上的 DGMDRL。 $ dgmgrl sys/Password1@cdb1_stby # 5) 啟用新備用數據庫。 DGMGRL> ENABLE DATABASE cdb1;
在上一節中已經提到過,但值得再次關注閃回數據庫。雖然切換/切換對主數據庫和備用數據庫都是安全的,但故障轉移會使原始主數據庫無法轉換為備用數據庫。如果未啟用閃回數據庫,則必須廢棄原始主數據庫并將其重新創建為備用數據庫。
另一種方法是在主服務器上啟用閃回數據庫(如果需要,還可以啟用備用數據庫),以便在發生故障轉移時,可以將主數據庫閃回到故障轉移之前的時間并快速轉換為備用數據庫,如上所示。
配置備用數據庫后,可以以只讀模式打開它以允許查詢訪問。這通常用于將報告卸載到備用服務器,從而釋放主服務器上的資源。以只讀模式打開時,歸檔日志傳送將繼續,但托管恢復將停止,因此備用數據庫將逐漸過時,直到恢復管理恢復。
要將備用數據庫切換到只讀模式,請執行以下操作。
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE OPEN READ ONLY;
重置管理恢復,請執行以下操作。
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
在 11g 中,Oracle 引入了活動數據保護功能。這允許備用數據庫以只讀模式打開,但仍應用重做信息。這意味著一個備用系統可以用于查詢,但仍然是最新的。此功能存在許可問題,但以下命令顯示如何啟用活動數據保護。
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE OPEN READ ONLY; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
由于托管恢復繼續使用 Active Data Guard,因此在這種情況下無需從只讀模式切換回托管恢復。
在 11g 中引入,快照備用允許備用數據庫以讀寫模式打開。當切換回備用模式時,在讀寫模式下所做的所有更改都將丟失。這是使用閃回數據庫實現的,可以正常工作,備用數據庫不需要顯式啟用閃回數據庫來利用此功能。
連接到主(cdb1)數據庫并將備用數據庫(cdb1_stby)轉換為快照備用數據庫。
$ dgmgrl sys/Password1@cdb1 DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:53:36 2018Version 19.2.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected as SYSDBA. DGMGRL> CONVERT DATABASE cdb1_stby TO SNAPSHOT STANDBY; Converting database "cdb1_stby" to a Snapshot Standby database, please wait... Database "cdb1_stby" converted successfully DGMGRL>
完成快照備用后,將其轉換回備用數據庫。
$ dgmgrl sys/Password1@cdb1 DGMGRL for Linux: Release 19.0.0.0.0 - Production on Tue Feb 26 22:53:36 2018Version 19.2.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected as SYSDBA. DGMGRL> CONVERT DATABASE cdb1_stby TO PHYSICAL STANDBY; Converting database "cdb1_stby" to a Physical Standby database, please wait... Operation requires shut down of instance "cdb1" on database "cdb1_stby" Shutting down instance "cdb1"... Database closed. Database dismounted. ORACLE instance shut down. Operation requires start up of instance "cdb1" on database "cdb1_stby"Starting instance "cdb1"...ORACLE instance started.Database mounted. Continuing to convert database "cdb1_stby" ...Database "cdb1_stby" converted successfully DGMGRL>
備用數據庫再次處于托管恢復狀態,并恢復歸檔日志傳送。請注意,閃回數據庫仍未啟用。
DGMGRL> SHOW CONFIGURATION; Configuration - my_dg_config Protection Mode: MaxPerformance Members: cdb1 - Primary database cdb1_stby - Physical standby database Fast-Start Failover: DISABLED Configuration Status:SUCCESS (status updated 38 seconds ago) DGMGRL>
到此,關于“使用Data Guard Broker進行Data Guard物理備用庫配置的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。