邏輯Data Guard 中 Standby啟動實時應用沒效果 怎麼辦

靜以致遠√團團發表於2014-03-11

邏輯Stannby無法啟動實時應用的解決思路:

 

首先需要做的是檢視一下DG環境中的啟動模式,SQL實時應用支援在最高效能和最大可用模式,不支援在最大保護模式的環境中;因為最大保護模式為確保不丟失任何資料,primary上的事務在commit前必須確認REDO已經傳遞到至少一個standby上。

 

檢視DG的模式:

SQL> set sqlprompt 'PRIMARY > '

PRIMARY > select NAME,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;

 

NAME      DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL

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

ORCL      PRIMARY          MAXIMUM AVAILABILITY RESYNCHRONIZATION

 

當前的為模式MAXIMUM AVAILABILITY(最大可用模式),無需修改,若發現為MAXIMIZE PROTECTION(最大保護模式),需啟動資料庫到mount狀態修改一下資料庫的模式:

 

PRIMARY > shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

 

PRIMARY > startup mount

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              62916852 bytes

Database Buffers          100663296 bytes

Redo Buffers                2973696 bytes

Database mounted.

 

PRIMARY > alter database set standby database to maximize availability;

Database altered.

最大效能模式對應的是maximize performance

 

PRIMARY > select NAME,DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;

 

NAME      DATABASE_ROLE    PROTECTION_MODE      PROTECTION_LEVEL

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

ORCL      PRIMARY          MAXIMUM AVAILABILITY UNPROTECTED

 

PRIMARY > alter database open;

Database altered.

 

檢視日誌傳輸方式:確保由LGWR傳輸日誌至STANDBY

 

PRIMARY > select DEST_NAME,STATUS,TYPE,ARCHIVER from v$archive_dest;

DEST_NAME                                STATUS    TYPE    ARCHIVER

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

LOG_ARCHIVE_DEST_1                       VALID     PUBLIC  ARCH

LOG_ARCHIVE_DEST_2                       VALID     PUBLIC  LGWR

LOG_ARCHIVE_DEST_3                       INACTIVE  PUBLIC  ARCH

LOG_ARCHIVE_DEST_4                       INACTIVE  PUBLIC  ARCH

LOG_ARCHIVE_DEST_5                       INACTIVE  PUBLIC  ARCH

LOG_ARCHIVE_DEST_6                       INACTIVE  PUBLIC  ARCH

LOG_ARCHIVE_DEST_7                       INACTIVE  PUBLIC  ARCH

LOG_ARCHIVE_DEST_8                       INACTIVE  PUBLIC  ARCH

LOG_ARCHIVE_DEST_9                       INACTIVE  PUBLIC  ARCH

LOG_ARCHIVE_DEST_10                      INACTIVE  PUBLIC  ARCH

PRIMARY > show parameter archive_dest;

 

NAME                                 TYPE        VALUE

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

log_archive_dest                     string

log_archive_dest_1                   string      location=/u01/log/arch_locatio

                                                 n

log_archive_dest_10                  string

log_archive_dest_2                   string      service=orcl_s_tns lgwr valid_

                                                 for=(online_logfiles,primary_r

                                                 ole) db_unique_name=orcl_std

log_archive_dest_3                   string

log_archive_dest_4                   string

log_archive_dest_5                   string

log_archive_dest_6                   string

 

如發現不是LGWR,而是ARCH傳輸,需修改一下日誌傳輸方式:

 

SQL> alter system set log_archive_dest_2='service=orcl_s_tns lgwr valid_for=(online_logfiles,primary_role) db_unique_name=orcl_std';

 

System altered.

 

細節方便可以根據以下檢視檢視SQL應用資訊:

 

v$logstdby_state

SQL> select * from v$logstdby_state;

 

PRIMARY_DBID SESSION_ID REALTIME_APPLY       STATE

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

  1369377775          1 Y                    APPLYING

 

dba_logstdby_events記錄邏輯standby的操作日誌,預設情況下記錄一百條訊息

SQL> desc dba_logstdby_events;

 Name                                      Null?    Type

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

 EVENT_TIME                                         DATE

 EVENT_TIMESTAMP                                    TIMESTAMP(6)

 CURRENT_SCN                                        NUMBER

 COMMIT_SCN                                         NUMBER

 XIDUSN                                             NUMBER

 XIDSLT                                             NUMBER

 XIDSQN                                             NUMBER

 EVENT                                              CLOB

 STATUS_CODE                                        NUMBER

 STATUS                                             VARCHAR2(2000)

 

dba_logstdby_log記錄當前重做日誌應用情況

SQL> desc dba_logstdby_log;

 Name                                      Null?    Type

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

 THREAD#                                   NOT NULL NUMBER

 RESETLOGS_CHANGE#                         NOT NULL NUMBER

 RESETLOGS_ID                              NOT NULL NUMBER

 SEQUENCE#                                 NOT NULL NUMBER

 FIRST_CHANGE#                             NOT NULL NUMBER

 NEXT_CHANGE#                                       NUMBER

 FIRST_TIME                                         DATE

 NEXT_TIME                                          DATE

 FILE_NAME                                          VARCHAR2(513)

 TIMESTAMP                                          DATE

 DICT_BEGIN                                         VARCHAR2(3)

 DICT_END                                           VARCHAR2(3)

 APPLIED                                            VARCHAR2(8)

等等..

溫馨提示:重啟系統後別忘了開監聽…

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

相關文章