Standby (Data guard) 常用維護命令及相關概念

tolywang發表於2009-03-05

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

[@more@]

## 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 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;

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

Dataguard 常用維護手冊

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

Start Standby Database

startup nomount
alter database mount standby database;
alter database recover managed standby database disconnect;


Disable/Enable archive log destinations

alter system set log_archive_dest_state_2 = 'defer';
alter system set log_archive_dest_state_2 = 'enable';

To remove a delay from a standby


alter database recover managed standby database cancel;

alter database recover managed standby database nodelay disconnect;

Stop and Start of Logical standby apply


alter database stop logical standby apply;
alter database start logical standby apply;


Physical Standby switchover:
In Primary Database:

ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;


In standby Database:

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
SHUTDOWN IMMEDIATE;
STARTUP;


In Primary Database:


ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

If the primary Database is down,we can use fllowing step to active standby database:


Alter DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
Alter DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
SHUTDOWN IMMEDIATE;
STARTUP;

Register missing archive log file
Find archive log gap by query:


SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;


register using:


ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

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

相關文章