8i,9i,10g Standby 資料庫引數配置,後臺程式,問題處理等

tolywang發表於2008-07-19

 

======================================================================
8i Standby init parameter configuration .
====================================================================== 

## The following parameters are the HA parameters needed for Standby Database on primary side

LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_FORMAT = "%t_%s.arc"
LOG_ARCHIVE_DEST_1='LOCATION=/data/umlaut/arch'

LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE 

LOG_ARCHIVE_DEST_2='SERVICE=standby  OPTIONAL REOPEN=60' 
LOG_ARCHIVE_MIN_SUCCEED_DEST=1 

 

## The following parameter are the HA parameters needed for Standby Database on standby side

LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_FORMAT = "%t_%s.arc"
LOG_ARCHIVE_DEST_1='LOCATION=/stby/umlaut/arch'

LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE

STANDBY_ARCHIVE_DEST='/stby/umlaut/arch'
LOG_ARCHIVE_MIN_SUCCEED_DEST=1

 

 

 


======================================================================
9i/10g Standby init parameter configuration .
====================================================================== 

9i/10g Primary DB:

# for oracle9i standby .
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_dest_2="service=standby optional reopen=60" 
*.log_archive_min_succeed_dest=1


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


9i/10g Standby DB:

# for oracle9i standby .
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_archive_dest="/data/acer/arch"
*.db_file_name_convert=("/data/acer","/data/acer")
*.log_file_name_convert=("/u01/product/oradata/acer","/u01/product/oradata/acer")
*.log_archive_trace=0
*.log_archive_min_succeed_dest=1
*.standby_file_management=AUTO
*.remote_archive_enable=TRUE
*.fal_server='acer'
*.fal_client='standby' 

 

 

 

======================================================================
8i Standby Windows 下的sqlnet設定問題 .
====================================================================== 


8i Standby Server作業系統應該是Windows系統,那麼使用arch自動傳輸模式(以上
引數),需要在standby上sqlnet.ora中註釋掉

# SQLNET.AUTHENTICATION_SERVICES= (NTS)

因為這個設定會導致需要primary db透過standby的OS認證才能以sysdba的身份登入
到standby中,而primary db不知道standby windowsServer的管理員密碼(除非兩臺
機器administrator密碼一樣)。

9i/10g 沒有這些問題。

 

 


======================================================================
9i/10g Standby parameter 說明1 :fal_server,fal_client  
====================================================================== 

fal_server與fal_client
這兩個引數是9i的新引數,指明瞭自動日誌同步,在以前的環境中(如8i),只有手工解
決日誌差異,但是9i的這兩個引數可以自動檢測並解決日誌差異。Oracle8i 沒有這些引數,
由於一些問題導致的arch gap 需要手工複製然後恢復,由於8i Standby設定了
# SQLNET.AUTHENTICATION_SERVICES= (NTS) 【註釋掉了】,
所以不能以 sqlplus internal登入執行恢復動作 。請注意。

例如:
fal_server='primary'
fal_client='standby'
其中primary與standby必須是連線到主資料庫與備用資料庫的連線

standby_file_management
這個引數也是9i的新引數,可以自動同步資料檔案。
例如:  standby_file_management=auto

 

 


======================================================================
9i/10g Standby parameter 說明2:   
====================================================================== 

Standby上的 LOG_ARCHIVE_DEST_1和 standby_archive_dest

如果建立了standby redo log那麼online redo log將不需要轉化為archived檔案就可以傳輸到備機(LGWR),
這樣的話(LGWR方式),這些standby redo log在Standby上需要歸檔,用到standby上設定的引數log_archive_dest。
所以Standby上的 log_archive_dest 或 log_archive_dest_1 是standby 以lgwr方式傳輸的時候standby上的
online redo log 生成的archived log 檔案存放點。一般Oracle建議這兩個引數設定同樣的值。 

Standby預設的arch傳輸方式,primary會遠端將archived log傳輸到standby_archive_dest下 。


LOG_ARCHIVE_DEST_1和 standby_archive_dest

STANDBY_ARCHIVE_DEST is used when logs are transmitted automatically from the
primary database.  We use this parameter to determine where these logs should
be placed.

LOG_ARCHIVE_DEST is the location where we look for logfiles by default when
recovering the standby database.  It is recommended to set the values of
STANDBY_ARCHIVE_DEST and LOG_ARCHIVE_DEST to the same values in most cases.

 

 

 

======================================================================
Standby上的開啟關閉注意點 .
======================================================================  

關閉開啟Primary 以及 Standby一般步驟:
     關閉:  先關閉Primary DB , 然後Standby DB.
     開啟:  先開啟Standby DB , 然後Primary DB.

不過有時候出現問題點,生產期間只能關閉Standby DB ,那麼就只能直接關閉Standby
, 而不能先關閉正在使用的Primary DB . 這個時候產生兩個問題: 

8i 情況: 如果關閉期間primary db上產生了歸檔,那麼需要手工複製,恢復。
9i/10g 情況: 一般設定了fal_server ,fal_client 不需要手工複製,standby啟動後自動傳輸應用。
              但是偶爾也有一些問題點,需要手工複製,並register,詳細參考後面的standby問題
              點處理。

 


對於設定了自動傳輸歸檔模式的standby,其standby開啟步驟為:
     1.  開啟standby監聽;
     2.  sqlplus '/as sysdba'登陸並執行
         startup nomount;
         alter databae mount standby database;
         recover managed standby database disconnect ;


需要重啟standby機器,則步驟為:
     1. sqlplus '/as sysdba'登陸並執行
        alter database recover managed standby database cancel ;
        shutdown immediate;
     2. 關閉監聽。

 

 


======================================================================
Standby上的各種特殊後臺程式 .
======================================================================

工作原理參考: http://space.itpub.net/35489/viewspace-405012 


SQL> select process,status from v$managed_standby;  【Standby上】

PROCESS   STATUS
--------- ------------
ARCH      CONNECTED
ARCH      CONNECTED
RFS       RECEIVING
MRP0      WAIT_FOR_LOG
RFS       ATTACHED

 

說明:

ARCn
當standby使用online redo的時候,也就是maximum protection或maximum availability模式下,ARCn用於歸檔。

MRP (Managed Recovery Process)就是管理恢復程式, 如果沒有MRP程式,說明你的備庫沒有處於恢復狀態, 沒有開啟為
recover managed standby database狀態 ; 可以使用  alter database recover managed
standby database disconnect from session ;開啟為自動恢復應用歸檔模式。 Physical Standby DB Only .


RFS (Remote File Server)  接受由primary資料庫的lgwr或arch透過oracle net傳來的redo 資料,
寫入standby redo logs或standby archived redo logs


FAL(fetch archive log): 在primary和standby資料庫的兩端同時配置。Primary端是fetch archive log server,standby
端是fetch archive log client. FAL是自動探測primary/standby資料庫之間archived logs是否有有間隔(gap)的一個程式。
Physical Standby Database Only .


LSP (Logical standby process)(For logical standby databases only):  用SQL介面把歸檔應用到logical database


DMON (Data Guard broker monitor) :用於監控資料庫的狀態,管理log transport services and log apply services
On the primary and standby locations, the Data Guard broker使用DMON程式 .


On primary database:
Data Guard除了以上傳統的Arch日誌傳送過程外,還可以採用聯機日誌(LGWR)的傳送,在備用端(Standby)建議
建立一組備用日誌,並保持與主資料庫備用日誌相同大小,而且最好比主資料庫的聯機日誌多一組以上。如果LGWR
傳送日誌,但是不在備用端建立備用日誌的話,聯機日誌將自動寫到備用端的歸檔日誌中。即使是用LGWR進行日誌
的傳輸,備用庫的online redo log的內容是不能馬上被應用的,必須當歸檔完成後才由MRPn程式應用到備用資料庫
,所以說,恢復不是連續的,但是,傳送過程可以是連續的。即使備用資料庫不是在歸檔的模式,所有的線上日誌
還是會進行歸檔的操作,前提是ARCn程式必須開啟。

 

 


======================================================================
常用的幾個Standby View :
======================================================================
v$managed_standby和日誌傳輸,接收,應用有關 .
v$archive_gap 主要可以用來檢視備庫丟失了那些日誌.
v$archive_dest 如果日誌無法傳送,可以檢視v$archive_dest; 
v$archive_dest_status檢視可以檢視備庫的狀態,保護模式,歸檔日誌路徑狀態
v$archived_log可以檢視日誌的一些資訊 ,包括日誌名字,應用時間,是否應用

 

 

 

======================================================================
Standby問題處理 :
====================================================================== 

是否被應用應該在STANDBY查詢最準確(錯誤會在standby alert log中出現)

SQL> select dest_name,status,error from v$archive_dest;

DEST_NAME
--------------------------------------------------------------------------------
STATUS    ERROR
--------- -----------------------------------------------------------------
LOG_ARCHIVE_DEST_1    VALID
LOG_ARCHIVE_DEST_2    ERROR     ORA-12540: TNS:internal limit restriction exceeded

 

 


======================================================================

如果Oracle9i,10g  Standby上因為某些問題導致出現gap 而又不能在問題恢復之後正常傳輸到
Standby上,那麼需要手動複製歸檔到Standby上,然後
ALTER DATABASE REGISTER [OR REPLACE] [PHYSICAL | LOGICAL] LOGFILE filespec;
    對於每一個手工拷的日誌都需要註冊一下, 如果是Physical Standby, 命令為:
ALTER DATABASE REGISTER OR REPLACE PHYSICAL LOGFILE '檔案路徑';  寫Standby控制檔案。


======================================================================


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

例項操作: 

歸檔日誌之間經常產生 gap,

1、Standby 確認歸檔日誌之間有無遺漏
SQL>SELECT  THREAD#, LOW_SEQUENCE#,  HIGH_SEQUENCE#  FROM  V$ARCHIVE_GAP;

THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1 90 92

2、將遺漏的歸檔日誌 copy 到備庫的 standby_archive_dest 下然後對其分別註冊
ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

3、恢復歸檔日誌
SQL> ALTER DATABASE RECOVER AUTOMATIC STANDBY DATABASE ;

4、如果有關閉Standby,那麼需要重新開啟為managed 恢復模式。
SQL> startup nomount;
SQL> alter databae mount standby database;
SQL> recover managed standby database disconnect;

 

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

相關文章