基本概念:
1.保護模式:最大保護、最大效能、最高可用。預設為 最大效能。
2.物理備機、邏輯備機:各有千秋
3.online、archived、standby redo日誌
4.日誌傳輸、日誌應用、角色切換服務
5.dg是企業版的特性。可以通過sqlplus、dbmgrl、oem操作、部署dg
軟硬體要求:
1.同硬體平台
2.同os
3.同oracle企業版
primary必要設定:
1.database必須處於archivelog模式
2.database必須處於force logging模式
3.dg內的每個成員必須具有pwdsid.ora檔案,且密碼相同
4.對於最大保護 和 最大可用 模式,必須設定standby database建立和primary database 相同size的standby redo log檔案。推薦:在primary上也進行類似設定
5.初始化參數primary:
db_name=dbname --dg內的所有成員必須相同
db_unique_name=pridbuniquename --dg內每個成員的唯一名稱
log_archive_format=arc_sid_%s_%t_%r --redo歸檔日誌的格式,dg內最好格式一致
log_archive_config='dg_config=(priservicename ,stdservicename )' --必須設定dg所有成員
standby_file_management=auto --standby對應於primary資料檔案的處理:自動處理
log_archive_dest_n='location=pathname' --必須要有一個本地歸檔路徑
log_archive_dest_m='service=stdservicename db_unique_name=stddbuniquename [lgwr] [async]' --必須要有一個活動的standby目標
--以下是primary轉化為standby時起作用的
fal_server=stdservicename --角色轉化時,standby變為primary
fal_client=priservicename --角色轉化時,primary變為standby
db_file_name_convert='stdfmt','prifmt' --standby從primary接受的資料檔案命名規則
log_file_name_convert='stdfmt','prifmt' --standby從primary接受的記錄檔命名規則
6.初始化參數standby:
db_name=dbname --dg內的所有成員必須相同
db_unique_name=stddbuniquename --dg內每個成員的唯一名稱
log_archive_format=arc_sid_%s_%t_%r --redo歸檔日誌的格式,dg內最好格式一致
log_archive_config='dg_config=(priservicename ,stdservicename )' --必須設定dg所有成員
standby_file_management=auto --standby對應於primary資料檔案的處理:自動處理。在standby上設定有效
log_archive_dest_n='location=pathname' --必須要有一個本地歸檔路徑
log_archive_dest_m='service=priservicename db_unique_name=pridbuniquename [lgwr] [async]' --必須要有一個活動的standby目標
--以下是standby轉化為primary時起作用的
fal_server=priservicename --角色轉化時,standby變為primary
fal_client=stdservicename --角色轉化時,primary變為standby
db_file_name_convert='prifmt','stdfmt' --standby從primary接受的資料檔案命名規則。在standby上設定有效
log_file_name_convert='prifmt','stdfmt' --standby從primary接受的記錄檔命名規則。在standby上設定有效
- LOG_ARCHIVE_DEST_[1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10] =
{ null_string | LOCATION=path_name | SERVICE=service_name } --path_name可以設定成USE_DB_RECOVERY_FILE_DEST
[ { MANDATORY | OPTIONAL } ] --通過使用MANDATORY可以強制rts服務進程必須等待目標standby歸檔日誌傳輸成功才可切換日誌
[
REOPEN[=seconds] ] --Specifies the minimum number of seconds before
the archiver processes (ARCn) or the log writer process (LGWR) should
try again to access a previously failed destination. The default is 300
seconds.
[ DELAY[=minutes] ] --cannot set the DELAY attribute for a logical standby database destination,default is 30 minutes
[ NOREGISTER ] --表明該dest不是dg的一部分
[ TEMPLATE=template] ]
[ ALTERNATE=destination ] --格式LOG_ARCHIVE_DEST_n,主要是解決mandatory帶來的負面影響
[ DEPENDENCY=destination ] --格式LOG_ARCHIVE_DEST_n,強制實施各目標standby的優先順序
[ MAX_FAILURE=count ] --和reopen配合,設定primary嘗試次數
[ ARCH | LGWR ] --通常在最大效能模式下用 arch進程 執行日誌傳輸,其他情況下均為lgwr
[ SYNC | ASYNC
] --network I/O is to be done synchronously or asynchronously when
archival is performed using the log writer process (LGWR) and the
network server (LNSn) processes.
[ AFFIRM | NOAFFIRM ] --synchronous or asynchronous disk I/O
[ NET_TIMEOUT=seconds ] --The default is 180 seconds.
[ VALID_FOR=(redo_log_type,database_role) ] --定義日誌傳輸的制約因素
[{ DB_UNIQUE_NAME }] --Specifies a unique name for the database at this destination.
[
VERIFY ] --Indicates if an archiver (ARCn) process should scan and
verify the correctness of the contents of a completed archived redo log
file, either local or remote, after successfully completing the
archival operation. By default, archived redo log files are not
verified.
}
- 如果設定mandatory,就必須設定alternate,也需要設定reopen 和 max_failure
- 如果欲定義各目標的dest順序,就需要設定dependency
- 通過affirm來保證redo日誌在各dest上寫入完成,來達到無損保護,同時配置gwr sync
操作步驟:
- Section 3.2.1 Create a Backup Copy of the Primary Database Datafiles Primary
- Section 3.2.2 Create a Control File for the Standby Database Primary --非常重要的一步:他用來產生用於standby資料庫的控制檔案。通過alter database create standby controlfile as 'fullpathfilename',他實質上會產生一條記錄到rman中繼資料庫中,並且被rman所用!
- Section 3.2.3 Prepare an Initialization Parameter File for the Standby Database Primary
- Section 3.2.4 Copy Files from the Primary System to the Standby System Primary
- Section 3.2.5 Set Up the Environment to Support the Standby Database Standby
- Section 3.2.6 Start the Physical Standby Database Standby
- Section 3.2.7 Verify the Physical Standby Database Is Performing Properly Standby
基本的管理:
- 設定保護模式:在primary上,mount狀態:alter database set standby database to maximize {performance|avialability|protection}
- 添加standby logfile 組、成員:alter database add standby logfile [member] filespec,...
- 刪除standby logfile 組、成員:alter database drop standby logfile [member] filespec,...
- 啟用standby 的recover管理會話、根據初始化參數應用redo日誌:alter database recover managed standby database [disconnect from session]
- 啟用standby 的recover管理會話、立即應用redo日誌:alter database recover managed standby database nodelay [disconnect from session]
- 啟用standby 的real-time recover管理會話:alter database recover managed standby database using current logfile [disconnect from session]
- 啟用standby 的recover管理會話,還原到某個scn:alter database recover managed standby database until change n [disconnect from session]
- 取消standby 的recover管理會話:alter database recover managed standby database cancel [immediate | [wait|nowait] ]
- 終止standy角色功能、結束recover管理會話,準備轉化為primary:alter database recover managed standby database finish [force] [wait|nowait]
- 轉化physical為logical standby:alter database recover to logical standby {dbname}--注意:需要在primary上執行dbms_lgstdby.build過程
- 啟用standby 為primary:alter database active [physical|logical] standby database [finish apply--只能用於logical standby database]
- 開始logical 的redo日誌應用:alter database start logical standby apply
- 結束logical 的redo日誌應用:alter database {stop|abort} logical standby apply
- 將游離於dg之外的primary變為phyisical standby:alter database convert to physical standby
常見錯誤及處理:
- rman 在duplicate target database for standby時提示找不到所需檔案:請檢查primary資料庫是否:alter database create standby controlfile as filespec
- rman 在duplicate target database for standby時提示建立錯誤:請檢查standby資料庫相關的路徑是否有效
- redo檔案傳輸失敗:檢查primary、standby的log_archive_config='dg_config=(pridbuniquename,pridbuniquename)'、db_unique_name、log_archive_dest_n、log_archive_dest_state_n參數是否設定正確。尤其是log_archive_dest_n中的 arch|lgwr 等設定!
- standby不能運行於real-time模式,該模式要求standby資料庫必須具有standby redo log檔案
- standby對應的服務不可用:設定靜態監聽並重啟監聽