共計 12133 個字符,預計需要花費 31 分鐘才能閱讀完成。
這篇文章主要介紹“使用 Data Guard Broker 進行 Data Guard 物理備用庫配置的方法是什么”,在日常操作中,相信很多人在使用 Data Guard Broker 進行 Data Guard 物理備用庫配置的方法是什么問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”使用 Data Guard Broker 進行 Data Guard 物理備用庫配置的方法是什么”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
1、主服務器配置 1.1 歸檔模式
檢查主數據庫是否處于歸檔日志模式。
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;
1.2 初始化參數
檢查 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;
1.3 服務配置
兩臺服務器上的 “$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
2、備用服務器配置 2.1 準備 DUPLICATE
為備用數據庫創建名為 “/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
2.2 使用 DUPLICATE 創建備用
使用臨時 “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 了。
3、啟用 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):
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):
Database Status:
SUCCESS
DGMGRL
4、數據庫切換
數據庫可以是兩種互斥模式之一(主用或備用)。可以在運行時更改這些角色,而不會丟失數據或重置日志。此過程稱為“切換”,可以使用以下命令執行。連接到主數據庫(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
5、數據庫故障轉移
如果主數據庫不可用,則可以使用以下語句將備用數據庫激活為主數據庫。連接到備用數據庫(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;
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;
# 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;
6、閃回數據庫
在上一節中已經提到過,但值得再次關注閃回數據庫。雖然切換 / 切換對主數據庫和備用數據庫都是安全的,但故障轉移會使原始主數據庫無法轉換為備用數據庫。如果未啟用閃回數據庫,則必須廢棄原始主數據庫并將其重新創建為備用數據庫。
另一種方法是在主服務器上啟用閃回數據庫(如果需要,還可以啟用備用數據庫),以便在發生故障轉移時,可以將主數據庫閃回到故障轉移之前的時間并快速轉換為備用數據庫,如上所示。
7、只讀備用和 Active Data Guard
配置備用數據庫后,可以以只讀模式打開它以允許查詢訪問。這通常用于將報告卸載到備用服務器,從而釋放主服務器上的資源。以只讀模式打開時,歸檔日志傳送將繼續,但托管恢復將停止,因此備用數據庫將逐漸過時,直到恢復管理恢復。
要將備用數據庫切換到只讀模式,請執行以下操作。
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,因此在這種情況下無需從只讀模式切換回托管恢復。
8、快照備用
在 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 物理備用庫配置的方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!