Oracle 10g Data Guard的建立與維護

tonywi888發表於2007-03-19
Oracle 10g Data Guard的建立與維護[@more@]Maximum protection:零資料丟失。發生事務時需要同時向主資料庫和備用資料寫重做日誌。
為了保證資料不丟失,如果有一個事務發現不能向備用資料寫重做日誌,那麼主資料庫會自動關閉。
Maximum availability:在保證主資料庫可用的情況下最大程度上保證資料的不丟失。同Maximum protection一樣也是同時向主和備用資料庫寫重做日誌。與Maximum protection不同的時當發現不能向備用資料庫寫重做日誌時不會關閉資料庫,而是採用Maximum performance的模式管理直到修復故障。
當發生第二次錯誤時至少要能夠將重做日誌寫入到一個備用資料庫中才能保證零資料丟失。(多備用庫的情況下。如果是一個備用庫發生一次錯誤就會丟失資料)

Maximum performance:Oracle預設採用這種方式。在不影響主庫的效能的情況下最大程度上保證資料不丟失。由於前兩種方式要同時向主和備庫寫重做日誌這就會給系統的效能帶來負面影響。當事務提交時會立即將資料寫入到本地的聯機日誌中。主庫的重做資料流
至少要寫入到一個從庫中,但是這個並不是與主庫同時發生的。
如果採用了足夠的頻寬的話,這種模式提供的資料保護保證最大的可用性,同時最主庫的效能影響最小。

建立物理備用資料庫的步驟:
一、強制主庫產生日誌,由於備庫是採用歸檔日誌恢復的,如果沒有歸檔日誌恢復無從談起。
SQL> ALTER DATABASE FORCE LOGGING;
二、建立備庫的密碼檔案
D:>orapwd file=D:oracleproduct10.2.0db_1databasePWDauxdb.ora password=oracle entries=5;
建立例項
D:> oradim -NEW -SID auxdb -INTPWD D:oracleproduct10.2.0db_1databasePWDauxdb.ora -STARTMODE manual
三、建立備庫的重做日誌
1)、maximum protection 和 maximum availability模式必須要求有從庫的重做日誌。資料傳輸模式建議採用LGWR ASYNC。
Data Guard可以更多地採用備庫的重做日誌恢復,而不僅僅是採用歸檔日誌恢復。
2)、確保從庫的重做日誌大小與主庫的重做日誌大小完全一致。
3)、建立合適的重做日誌組數量。
從庫的重做日誌組至少要比主庫多一組。
通常情況下一個例項對應一個thread。
推薦採用如下公式來計算重做日誌組的個數。
(maximum number of logfiles for each thread + 1) * maximum number of threads
採用這中方式可以減少由於備庫重做日誌不能被分配從而導致主庫的日誌讀寫程式(LGWR)的阻塞。
例如:主庫每個thread有兩個日誌組,那麼備庫應該有6個重做日誌組。
新增從庫的日誌組。
SQL>alter database add standby logfile thread 1 'D:oracleproduct10.2.0oradataorclredo04.log' size 50m;
SQL>alter database add standby logfile thread 1 'D:oracleproduct10.2.0oradataorclredo05.log' size 50m;
SQL>alter database add standby logfile thread 1 'D:oracleproduct10.2.0oradataorclredo06.log' size 50m;
SQL>alter database add standby logfile thread 1 'D:oracleproduct10.2.0oradataorclredo07.log' size 50m;
4)、檢查備用重做日誌是否建立成功
在主庫上執行
SQL>alter system switch logfile;
然後從庫查詢
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

GROUP# THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
4 1 0 NO ACTIVE
5 1 0 YES UNASSIGNED
6 1 0 YES UNASSIGNED
7 1 0 YES UNASSIGNED
四、修改主庫的引數檔案,並同步到spfile
orcl.__db_cache_size=88080384
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__shared_pool_size=67108864
orcl.__streams_pool_size=0
*.audit_file_dest='D:oracleproduct10.2.0adminorcladump'
*.background_dump_dest='D:oracleproduct10.2.0adminorclbdump'
*.compatible='10.2.0.1.0'
*.control_files='D:oracleproduct10.2.0oradataorclCONTROL01.CTL','D:oracleproduct10.2.0oradataorclCONTROL02.CTL','D:oracleproduct10.2.0oradataorclCONTROL03.CTL'
*.core_dump_dest='D:oracleproduct10.2.0adminorclcdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest_size=2147483648
*.db_recovery_file_dest='d:oracleproduct10.2.0flash_recovery_area'
*.db_unique_name='orcl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.log_archive_config='dg_config=(orcl,auxdb)'
*.log_archive_dest_1='location=D:oracleproduct10.2.0oradataorclarchive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'
*.log_archive_dest_2='service=AUX VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=auxdb'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.log_archive_max_processes=1
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:oracleproduct10.2.0adminorcludump'
*.fal_client='aux'
*.standby_archive_dest='D:oracleproduct10.2.0oradataorclstandbyarchive'
*.standby_file_management=auto
五、建立備庫的資料檔案
檢視主庫資料檔案列表
SQL> select file#,name from v$datafile;

FILE# NAME
----- ----------------------------------------------------
1 D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
2 D:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS01.DBF
3 D:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
4 D:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
5 D:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF
6 D:ORACLEPRODUCT10.2.0ORADATAORCLTEST01.DBF

已選擇6行。
1)、將主庫的資料檔案copy到從庫的路徑下
SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'd:bakstandby.ctl';
然後關閉資料庫將file 1、2、3、4、5、6 copy到d:bak下。
或採用如下方法:
2)、採用rman將資料檔案copy到備庫中
C:Documents and SettingsAdministrator.XY>rman target/

恢復管理器: Release 10.2.0.1.0 - Production on 星期四 3月 15 14:42:25 2007

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已連線到目標資料庫: ORCL (DBID=1140649303, 未開啟)

RMAN> copy datafile 1 to 'd:baksystem01.dbf',datafile 2 to 'd:bakundotbs01.d
bf',datafile 3 to 'd:baksysaux01.dbf',datafile 4 to 'd:bakusers01.dbf',dataf
ile 5 to 'd:bakexample01.dbf',datafile 6 to 'd:baktest01.dbf', current contr
olfile for standby to 'd:bakstandby.ctl';
2>
啟動 backup 於 15-3月 -07
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 啟動資料檔案副本
。。。
通道 ORA_DISK_1: 資料檔案複製完畢, 經過時間: 00:00:01
通道 ORA_DISK_1: 啟動資料檔案副本
複製備用控制檔案
輸出檔名 = D:BAKSTANDBY.CTL 標記 = TAG20070315T144240 recid = 40 時間戳 = 61
7294620
通道 ORA_DISK_1: 資料檔案複製完畢, 經過時間: 00:00:01
完成 backup 於 15-3月 -07
RMAN>
開啟資料庫
SQL> ALTER DATABASE OPEN;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-905777/,如需轉載,請註明出處,否則將追究法律責任。

相關文章