引數配置 -- 最大效能模式 dataguard 不影響Production DB .

tolywang發表於2008-04-02

log_archive_dest_2='SERVICE=standby_test MANDATORY REOPEN=60';
當從庫出現問題的時候,要不影響到主庫的生產,我們可以去掉 MANDATORY 和 REOPEN

目前比較好的辦法就是STANDBY的設定為optional ,因為有可能是半夜網路當掉,那時DBA又不在位子上,無法手工設為defer的。有個可選的辦法就是白天為mandatory,晚上為optional,可以寫指令碼定時執行轉換的。

[@more@]

附: Oracle9i Dataguard建立

-------------------------------------------------------------------------------

操作環境:Windows 2000 Professional + Serveice pack 4
資料庫:Oracle 9201
主庫SID:pormals
從庫SID:pormals
oracle安裝採用OMF結構

1.主從兩機的作業系統和相同pack

2.在主從庫上建立資料庫,選擇只安裝Software

3.在主庫上,透過dbca建立資料庫,除了字符集選擇 zhs16gbk外,全部使用預設方式

4.在從庫上,手工建立和主庫相同目錄

5.關閉主庫資料庫,備份資料檔案到從庫
確定需要copy過去的資料檔案以及redo log
sqlplus /nolog
SQL> conn / as sysdba;
SQL> select file_name from dba_data_files;
確定所要copy資料檔案
SQL> select member from v$logfile;
確定所要copy聯機日至檔案
SQL> shutdown immediate;
copy 上面選出的所有檔案到從庫上相應的目錄.

6.開啟主庫資料庫,修改為歸檔方式(oracle9i使用者操作)
手工建立歸檔目錄C:OracleArch
sqlplus /nolog
SQL> conn / as sysdba;
Connected.
SQL> startup mount;
SQL> alter database archivelog;
SQL> archive log start;
SQL> archive log list;
SQL> alter database open;
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=C:OracleArch';
SQL> alter system set log_archive_format='%t_%s.dbf' scope=spfile;
SQL> alter system set log_archive_start=true scope=spfile;
重新啟動資料庫,使修改結果生效
SQL> shutdown immediate;
察看歸檔模式
SQL> startup
SQL> archive log list;

7.在主庫上製作從庫control file
sqlplus /nolog
SQL> conn / as sysdba;
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'C:Oraclecontrol01.ctl';
copy主庫C:oraclecontrol01.ctl 到從庫 C:oracleoradataporamals目錄下

8.配置主庫listener.ora和tnsnames.ora檔案
可以用net manager配置或者直接編輯c:oracleora92networkadminlistener.ora和tnsname.ora檔案
也即正常為主庫配置偵聽和連線到主庫(primary)、主庫到從庫(standby)的網路服務名

9.配置從庫listener.ora和tnsnames.ora檔案
可以用net manager配置或者直接編輯c:oracleora92networkadminlistener.ora和tnsname.ora檔案
也即正常為從庫配置偵聽和連線到從庫到主庫(primary)、直接到從庫(standby)的網路服務名

10.啟動主從庫的listener
分別在主從庫上執行如下命令
lsnrctl start
看主從庫listener是否正常啟動

11 檢查主從庫tnsnames.ora配置
主庫 tnsping standby
從庫 tnsping primary
看分別到主從庫的服務名是否配置正確

12.在主庫上建立pfile,因為9i預設使用spfile
sqlplus /nolog
SQL> conn / as sysdba;
Connected.
SQL> create pfile='C:oracleora92databaseinitporamls.ora' from spfile;

13.copy 剛才建立的C:oracleora92database.orainitpormals.ora 到從庫相應目錄

14.修改從庫剛才copy的initpormals.ora檔案
主要修改新增:
修改CONTROL_FILES使它符合你的控制檔案的實際路徑
新增:
STANDBY_ARCHIVE_DEST=’location=c:oracleStarch’
FAL_SERVER=’PRIMARY’
FAL_CLIENT=’STANDBY’
standby_file_management=’AUTO’
其中standby_file_management不是必須要,但是為了後面主庫新增檔案,從庫能自動處理,加上這個引數,避免麻煩。
同時收工建立從庫的相關歸檔日誌路徑C:oracleStarch。

15.copy 主庫的C:oracleora92databasepwdpormals.ora到從庫相應目錄
16.建立從庫例項名 dos>oradim -new -sid pormals
17.啟動從庫
sqlplus /nolog
SQL> startup nomount;
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
將從庫置為standby模式
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

18.在主庫上設定到從庫的歸檔
SQL> alter system set log_archive_dest_2='SERVICE=standby MANDATORY REOPEN=60';
SQL> select *from v$log;
切換當前聯機日誌
SQL> alter system switch logfile;
SQL> select *from v$log;
察看從庫後臺日誌
C:oracleadminpormalsbdumppormals_arler.
看當前歸檔日誌是否已經正常完成恢復
至此data guard配置完成。

19.測試一下
在主庫上
SQL> create user test identified by 密碼;
SQL> grant connect ,resource to test ;
SQL> conn test/密碼@primary;
SQL> create table test(name varchar2(20));
SQL> insert into test values('hi,data guard');
SQL> commit;
SQL> conn / as sysdba
SQL> alter system switch logfile;

察看從庫日誌
C:oracleadminporamlsbdumppormals_alert.ora
看當前歸檔日誌是否已經正常完成恢復

已只讀方式開啟從庫察看是否insert into test values('hi,data guard');已經生效。
在從庫上
SQL> conn / as sysdba;
SQL> alter database recover managed standby database cancel;
SQL> alter database open read only;
SQL> conn test/密碼
SQL> select * from test;
察看是否insert into test values('hi,data guard');已經生效。
如果生效說明已經完全正常工作,data guard到此完全配置完畢。
再次置從庫在恢復模式
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE disconnect from session;
注:
1、關於啟動關閉順序
啟動的時候,先從庫的listener,然後啟動從庫,然後啟動主庫的listener 接著是主庫 關閉的時候正好相反,先關閉主庫,然後是從庫。
2、一些常用的view
V$ARCHIVE_DEST_STATUS 這裡面會紀錄到standby 的狀態和恢復到那個日誌
V$ARCHIVE_GAP 這裡面會紀錄當前從庫mrp程式恢復需要的膽識還沒有傳到從庫得日誌
V$ARCHIVED_LOG 這裡面會紀錄所有已經歸檔到從庫的日誌,並且記錄該日誌是否已經恢復
V$DATABASE 會紀錄系統的保護狀態和是否處於force logging狀態
V$MANAGED_STANDBY (Physical Standby Databases Only) 會紀錄當前從庫的一些程式情況和程式的process id,如rfs,mrp等
V$STANDBY_LOG (Physical Standby Databases Only) 會紀錄當前從庫的standby redo log的一些情況。

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

相關文章