天天看點

【翻譯自mos文章】Standby Redo Logs (SRL)的用途,益處與限制

Standby Redo Logs (SRL)的用途,益處與限制

來源于:

Usage, Benefits and Limitations of Standby Redo Logs (SRL) (文檔 ID 219344.1)

目的:

本文顯示了Standby Redo Logs (SRL)的用途,益處與限制,适用于 Oracle 9i/10g/11g中帶有SRL的dataguard環境。

範圍:

所有DBA以及希望實施9i/10g/11g (9.x-11.x) DataGuard的人

1. Standby Redo Logs (SRL) ---是什麼?在什麼時候使用SRL?

從Oracle 9i開始,你有機會為Online Redo Log Groups添加Standby Redo Logs (SRL) Groups。

這些Standby Redo Logs (SRL) 存儲了從DG主庫接收的資訊。

在failover的情況下,有Standby Redo Logs比沒有Standby Redo Logs會減少資料損失(data loss)

在Oracle9i時,僅僅Physical standby支援SRL,從10g開始,Physical standby 和  Logical standby均支援SRL。

SRL的最大優勢是:主庫上每個寫入到online redologs的 entry 都會被傳輸到備庫,同時被寫入到SRL中。

是以,在備庫上減少了資料損失的可能性。

從10g 開始,可以在Physical standby  和  Logical standby 上使用實時應用(Real-Time Apply)

使用Real-Time Apply時 ,來自SRL的redo被應用到standby database中,在不使用Real-Time Apply時,redo apply一直在等待直到歸檔日志被建立。

是以,Real-Time Apply 需要SRL.

2. 我該怎麼建立SRL?

SRL是額外的Redo Log Groups。如果你在standby database上查詢v$logfile,輸出類似如下:

SQL> select * from v$logfile;

   GROUP# STATUS  TYPE    MEMBER
   ------ ------- ------- ------------------------------------
        1          ONLINE C:\ORACLE\ORADATA\STANDBY\REDO01.LOG
        2          ONLINE C:\ORACLE\ORADATA\STANDBY\REDO02.LOG
        3          ONLINE C:\ORACLE\ORADATA\STANDBY\REDO03.LOG
           

在備庫上添加SRL之前,确認一下 the number of maximum Logfile Groups and Logfile Members

如果你沒有記住這些值,可以在 CREATE CONTROLFILE的腳本中看到。 用下面的指令來得到 CREATE CONTROLFILE腳本:

SQL> alter database backup controlfile to trace;
           

上面的指令會在UDUMP目錄下建立一個trc檔案。

注意下面相關的entry:

MAXLOGFILES   8
    MAXLOGMEMBERS 3
           

在這個例子中,你最多可以建立8個logfile groups,每個groups最多可以包括3個member。

現在,我們可以給standby databae添加SRL(當然,standby databaes必須處于mount狀态)

SQL> alter database add standby logfile group 4 ('C:\ORACLE\ORADATA\STANDBY\STBY04.LOG') SIZE 5M;
           

你可以為一個group添加member:

SQL> alter database add standby logfile member 'C:\ORACLE\ORADATA\STANDBY\STBY14.LOG' to group 4;
           

請記住:如果RFS程序寫入資料到SRL,SRL的檔案大小必須等于 主庫上的目前的online redo log 的大小。

3. SRL的限制。

在Oracle 9i/10g的DG環境中,standby database上的RFS程序收到來自于Primary database的data,并寫入這些data到Disk(要麼是SRL,要麼是 Archived Redo Logs)

如果你考試使用SRL,你必須確定:這些SRL與online redo log有相同的大小。

如果你有不同大小的online redo log,你不得不建立相關的SRL.

如果SRL與online redo log 不同,RFS程序不會附加到SRL上。

It is recommended to have at least one more of Standby Redo Log Group as you have of Online Redo Log Groups per Thread and Size.

SRL 被填充的内容與 在主庫上online redo log被寫入的内容相同。

是以,隻有LGWR程序能提供這個資訊給備庫上的RFS程序,是以,隻有當主庫的LOG_ARCHIVE_DEST_n 參數設定LGWR為傳輸者時,SRL才起作用。

從10.2.0開始,arch程序可以寫入到SRL中。

The RFS-Process always tries to allocate the next available Standby RedoLog,

so it is possible that you encounter a Switch between only two Standby RedoLogs,

although you created lots more of them. There's no rota defined here like in Online RedoLogs. This is reported in Bug 2722195.

從10.2.0開始,arch程序可以寫入到SRL中。

4.使用SRL時,Log Apply Service的不同。

在不使用SRL的情況下,當歸檔日志完成時,RFS程序建立了歸檔日志。該歸檔日志由MRP(Managed Recovery Process)程序應用到備庫上。

一個打開的(不是完全寫入的)歸檔日志不能在備庫上應用,因而不能在failover情況下使用,這會導緻一定的data loss

如果你使用了SRL,RFS程序會往SRL裡寫入,并且當日志切換時,備庫的歸檔器程序會把SRL歸檔到歸檔日志,同時,MRP程序應用這些資訊到備庫。

在failover時,你将會通路這些已經被寫入SRL的資訊,是以,這些資訊不回丢失。

從10g開始,你可以使用針對 Physical Standby  and Logical Standby Apply  來使用Real-Time Apply。

When using Real-Time Apply we directly apply Redo Data from Standby RedoLogs.

如果不使用SRL,Real-Time Apply不能應用部分填充的歸檔日志來應用redo,是以,對 Real-Time Apply而言,SRL是被強制要求的。

注意:在12c中,預設的MRP會變為 Real-Time Apply 模式。

Default Standby recovery in REAL time apply.

      SQL>alter database recover managed standby database disconnect;

To Start MRP in non real time apply mode use,(in 12c)

       SQL>alter database recover managed standby database using archived logfile disconnect;

5. Standby RedoLogs and the Data Guard Broker

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

If there is an active Data Guard Broker Configuration on this Data Guard Environment the following Error can be raised in the Data Guard Broker Configuration if the setup Transport Method (LogXptMode) is 'SYNC' or 'ASYNC'

and there are no Standby RedoLogs configured:

 Warning: ORA-16809: multiple warnings detected for the database

In the corresponding DRC.LOG-Files and the Database Status you can find:

 ORA-16789: standby redo logs not configured

-> So please add corresponding Standby RedoLogs to the Standby Database. As per default the Data Guard Broker tries to start Log Apply Services in Real-Time Apply Mode which is not possible without Standby RedoLogs.Note that starting with Oracle 11g ARCH Log Transport Method is deprecated.

RELATED DOCUMENTS

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

Oracle9i  Data Guard Concepts and Administration

Oracle10g Data Guard Concepts and Administration

Oracle11g Data Guard Concepts and Administration