瞭解 Active Data Guard 如何通過即時查詢,同時應用歸檔的的日誌、將物理備用資料庫轉換為快照備用資料庫以及對基礎架構的一系列改進措施,讓您對備份環境的投資物有所值。
下載 Oracle 資料庫 11g
Oracle 資料庫 11g 對 Data Guard 功能進行了多方面的增強,難以詳盡說明。因此,在這裡我將介紹一些我最感興趣的功能增強。
備用資料庫建立更加簡單
首先,我們從建立物理備用資料庫開始。在 Oracle 資料庫 11g 中,物理備用資料庫的建立已經變得極為簡單,一條 RMAN 命令就可完成整個過程。以前您可能需要使用 Grid Control 嚮導介面在兩台電腦之間完成 Data Guard 設定。在撰寫本文時,Oracle 企業管理器網格控制 11g 還未推出,且 Database Control 沒有 Data Guard 嚮導。但不管您是否使用過 SQL 命令,在 Oracle 資料庫 11g 中設定 Data Guard 都是非常輕鬆的。過程如此簡單,因此我將在此處介紹所有步驟。
假設您的主要資料庫名稱為 prolin11,運行於 prolin1 伺服器上。您想在 prolin2 伺服器上設定一個備用資料庫。備用資料庫執行個體的名稱應當為 pro11sb。以下為設定步驟:
在 prolin1 上,首先建立 spfile(如果您沒有)。
SQL> create spfile from pfile;
這一步不是絕對必要的,但它可以簡化這一過程。建立資料庫後,重新啟動 prolin11 資料庫以使用 spfile。
儘管沒有必要建立備用重做日誌,這還是一個很好的做法。備用重做日誌可使主要資料庫中發生的更改幾乎即時地反應在備用資料庫中,這一概念稱為即時應用 (RTA)。因此,此處我們將在主要資料庫中建立一個備用重做日誌(注意在主要資料庫中建立備用重做日誌。RMAN 將在備用資料庫中建立它們):
SQL> alter database add standby redo logfile group 4
2> (‘+DG1/sby_redo01.rdo') size 50M;
SQL> alter database add standby redo logfile group 5
2> (‘+DG1/sby_redo02.rdo') size 50M;
SQL> alter database add standby redo logfile group 6
2> (‘+DG1/sby_redo03.rdo') size 50M;
SQL> alter database add standby redo logfile group 7
2> (‘+DG1/sby_redo04.rdo') size 50M;
這將建立 4 個備用重做日誌組。
在 prolin2 伺服器上的 listener.ora 檔案中建立一個 pro11sb 條目:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = pro11sb)
(ORACLE_HOME = /opt/oracle/product/11g/db1)
(SID_NAME = pro11sb)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = prolin2)(PORT = 1521))
)
重新載入監聽器使之生效。
在 prolin1 上,在 $ORACLE_HOME/network/admin 下的 tnsnames.ora 檔案中建立一個 pro11sb 資料庫條目:
PRO11SB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = prolin2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = pro11sb)
)
)
在 prolin2 上的 Oracle Home/dbs 目錄中,建立一個僅含一行的 initodba11sb.ora 檔案:
db_name=prolin11
這將作為備用執行個體的初始設定檔案,使用稍後介紹的 RMAN 命令將自動填滿其他參數。
在 prolin2 上,進入目錄 $ORACLE_BASE/admin。在其中建立 pro11sb 目錄,然後在 pro11sb 目錄中建立 adump 目錄,用於儲存備用執行個體的審計檔案。
在 prolin1 上,在 $ORACLE_HOME/dbs 目錄下,您將找到執行個體的口令檔案,通常命名為 orapworadba11。如果沒有該檔案(可能性很小),則建立一個。然後將檔案複製到 prolin2 的 $ORACLE_HOME/dbs 下。將其複製到新檔案 orapwodba11sb。這將確保主要資料庫的 sysdba 串連口令也可應用到備用資料庫。
在 prolin2 上,以 NOMOUNT 狀態啟動執行個體 pro11sb。
$ sqlplus / as sysdba
SQL> startup nomount
這將啟動執行個體但不掛載任何東西。
完成開始的準備工作後,調用強大的 RMAN 指令碼建立備用資料庫。在 prolin1 上啟動 RMAN 並運行以下指令碼。您會發現將其儲存到一個檔案中,然後從 RMAN 提示符中運行這一指令碼將更為簡便。
connect target sys/oracle123@prolin11
connect auxiliary sys/oracle123@pro11sb
run {
allocate channel c1 type disk;
allocate auxiliary channel s1 type disk;
duplicate target database
for standby
from active database
dorecover
spfile
parameter_value_convert 'prolin11','pro11sb'
set db_unique_name='pro11sb'
set db_file_name_convert='/prolin11/','/pro11sb/'
set log_file_name_convert='/prolin11/','/pro11sb/'
set control_files='/oradata/pro11sb/control01.ctl'
set fal_client='pro11sb'
set fal_server='prolin11'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(prolin11,pro11sb)'
set log_archive_dest_2='service=prolin11 LGWR ASYNC valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=pro11sb'
set log_archive_dest_state_2='enable'
set log_archive_format='pro11sb_%t_%s_%r.arc'
;
sql channel c1 "alter system archive log current";
sql channel s1 "alter database recover managed standby database using current logfile disconnect";
}
這一指令碼將建立備用資料庫,將相關的參數置於備用執行個體的 spfile 中,建立備用資料庫的診斷目標,然後重新啟動備用資料庫。為助您瞭解這一操作的具體機理,您可以在此處查看 RMAN 命令的輸出。