Oracle Data Guard配置

47328983發表於2012-05-09

執行Data Guard的條件
1
在主庫和從庫的所有機器上必須安裝同一個版本的Oracle企業版。
2
主庫必須執行在歸檔模式下。
3
主庫和從庫的作業系統必須一樣(允許版本不同),從庫可以使用與主庫不同的目錄結構。
4
主從庫硬體系統的體系結構必須相同。比如:主庫執行在64位的Sun Sparc系統上,如果從庫是32位的Linux Intel系統就不允許。主從庫硬體的配置可以不同,比如:CPU數量、記憶體大小、儲存配置等。
5
主從庫可以是單例項的資料庫,也可以是多例項的RAC資料庫。
6
每個主從庫必須有它自己的控制檔案。
7
如果把主從庫放在了一個系統裡,則必須調整初始化引數。
8
只要使用Data Guard就要保持主庫是FORCE LOGGING模式,如果在主庫上使用了no logging操作不生成日誌,因此資料也不會傳遞到從庫。 9 管理主從庫的使用者必須具有SYSDBA許可權。

主庫:win2003 server ora9i9.2.0.1.0 192.168.3.135主機名:data580 SIDPRIMARY
從庫:win2003 server ora9i9.2.0.1.0 192.168.3.136 主機名:data380 SIDSTANDBY
1
、主庫和從庫的Oracle 安裝的時候都選擇相同的安裝路徑 E:\oracle\ora92 ;並且先不要安裝資料庫,即在安裝過程中資料庫配置一項下面選擇只安裝軟體
2
、在主庫上使用DBCADatabase Configuration Assistant)建一個資料庫,SID設為PRIMARY
3
、設定主庫歸檔路徑為e:\oracle\ora92\database\Archive
   Sql>alter system set log_archive_dest_1='LOCATION=e:\oracle\ora92\database\Archive MANDATORY' scope=both;
4
、將主庫例項、資料庫關閉,然後啟動例項,但不開啟資料庫,只啟動到資料庫掛載模式:
   Sql>shutdown immediate; Sql>startup mount;
5
、將主庫設定成歸檔狀態和自動歸檔模式:
   Sql>alter database archivelog;
   Sql>alter system set log_archive_start=true scope=spfile;
6
、在主庫上面建立從庫的控制檔案standby.ctl
   Sql>alter database create standby controlfile as 'e:\oracle\oradata\standby.ctl';
7
、在主庫上面建立從庫的初始化引數檔案standby.ora(將其拷貝回從庫後轉換成從庫的 spfile):
   Sql>create pfile='e:\oracle\oradata\standby.ora' from spfile;
8
、檢視主庫的資料檔案及其的位置: Sql>select name from v$datafile; 記下查詢結果中的資料檔案的位置。
9
、關閉例項:
   Sql>shutdown immediate;
10
、將第6步中的standby.ctl、第7步中的standby.ora和第8步驟中的資料檔案、還有E:\oracle\oradata\PRIMARY路徑下面的聯機日誌檔案(REDO.LOG)、E:\oracle\ora92\database裡面的口令檔案PWDPRIMARY.ora備份出來,拷貝到從庫中;在從庫中建立路徑E:\oracle\oradata\PRIMARY ,存放standby.ctl、資料檔案、聯機日誌檔案;建立路徑

E:\oracle\admin\PRIMARY ,在裡面建立空資料夾bdumpcdumpudumpcreatepfile ;將standby.ora 放到E盤根目錄下面;將口令檔案PWDPRIMARY.ora更名為PWDSTANDBY.ora ,放到從庫的E:\oracle\ora92\database下面。
11
、回到主庫,啟動主庫例項和資料庫:
   Sql>startup
12
、轉回到從庫,手動建立服務OracleServiceSTANDBY
    oradim -new -sid STANDBY -startmode manual
   
設定環境變數:在環境變數的“Administrator的使用者變數一欄裡面新建一個值,變數名為ORACLE_SID ,變數值為STANDBY(服務名)。
13
、建立從庫監聽器OracleOraHome92TNSListener:進入Net Configuration Assistant ,使用監聽程式配置來建立從庫的監聽器,同時會在E:\oracle\ora92\network\admin下面生成listener.ora檔案;
14
、配置本地NET服務名:進入Net Configuration Assistant ,使用本地NET服務名配置來配置,同時會在E:\oracle\ora92\network\admin下面生成tnsnames.ora檔案;
15
、配置主從庫的tnsnames.ora ,都將裡面的內容設定成如下內容:
STANDBY = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.136)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PRIMARY) ) )

PRIMARY = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.135)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PRIMARY) ) )
16
、修改E根目錄下面的初始化引數檔案standby.ora ,裡面的全部內容如下(刪除了原來的control_files引數,將instance_name改成了STANDBY,最後面的7行粗體部分是新新增的內容):
*.aq_tm_processes=1
*.background_dump_dest='e:\oracle\admin\PRIMARY\bdump'
*.compatible='9.2.0.0.0'
*.core_dump_dest='e:\oracle\admin\PRIMARY\cdump'
*.db_block_size=8192
*.db_cache_size=728760320
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='PRIMARY'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=PRIMARYXDB)','(PROTOCOL=TCP)'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='STANDBY'
*.java_pool_size=20971520
*.job_queue_processes=10
*.large_pool_size=143654912
*.log_archive_dest_1='LOCATION=e:\oracle\ora92\database\Archive MANDATORY'
*.log_archive_start=TRUE
*.open_cursors=300
*.pga_aggregate_target=324009984
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_pool_size=242221056
*.sort_area_size=52428800
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='e:\oracle\admin\PRIMARY\udump'
*.standby_file_management=AUTO
*.remote_archive_enable=TRUE
*.lock_name_space='standby'
*.fal_server='primary'
*.fal_client='standby'
*.standby_archive_dest='e:\oracle\ora92\database\Archive'
*.control_files='e:\oracle\oradata\primary\STANDBY.CTL'
17
、進入sqlplusstandby.ora建立成從庫的spfile
    Sql>create spfile from pfile='e:\standby.ora';
18
、啟動從庫的例項,並且將從庫設定成standby模式:
    Sql>startup nomount; Sql>alter database mount standby database;
19
、在從庫啟動日誌應用服務:
    Sql>alter database recover managed standby database disconnect from session;
20
、轉到主庫,啟動到物理從庫的歸檔:
    Sql>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=PRIMARY' SCOPE=BOTH;
    Sql>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;
21
、校驗Data Guard的運轉:
   
主庫,歸檔當前日誌:
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
   
從庫,校驗歸檔日誌是否正常接收:
    SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
   
從庫,檢視新的歸檔日誌是否正常用於恢復:
    SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# APP --------- ---
8 YES
9 YES
10 YES
11 YES
如果都是像以上那樣的內容,都是YES的話,那就成功了。也可以分別檢視主從庫的E:\oracle\ora92\database\archive資料夾裡面的內容,如果從庫的和主庫的內容一致,就算data guard配置成功了。
22
、這個時候從庫只是將日誌檔案拿過來存放起來,但並沒有執行日誌檔案,所以在主庫上所做的操作無法在從庫上得到結果,即無法在從庫上查詢資料。要在從庫上查詢資料,要執行以下語句:在從庫上用sysdba 使用者連線  
Sql>alter database recover managed standby database disconnect from session ;
Sql>alter database recover managed standby database cancel ;
Sql>alter database open read only ;
 
查詢資料即可。查詢完成以後,需要恢復從庫為恢復模式。
Sql>alter database recover managed standby database disconnect from session ;
這個功能的可以用來查詢前一天(或者前若干時間)以前的資料,比如報表之類的,因為今天只能查詢昨天以前的報表,對資料的同步性的要求不是那麼嚴格。查詢完後一定要將從庫設回恢復模式。

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

相關文章