An Issue of Oracle DataGuard Broker

來源:互聯網
上載者:User

最近一直在研究用Broker搭建Data Guard,以前一直都很順利,這兩天突然發現一個奇怪的問題,自己確認配置的步驟是沒有問題的,但是show configuration的時候,就是老出如下錯誤提示: 

DGMGRL> show configuration;

Configuration
  Name:                dgmgrl_1
  Enabled:             YES
  Protection Mode:     MaxPerformance
  Fast-Start Failover: DISABLED
  Databases:
    prod - Primary database
    sbdb - Physical standby database

Current status for "dgmgrl_1":
Warning: ORA-16608: one or more databases have warnings

 

DGMGRL> show database 'prod' statusreport;
STATUS REPORT
       INSTANCE_NAME   SEVERITY ERROR_TEXT

DGMGRL> show database 'sbdb' statusreport;
STATUS REPORT
       INSTANCE_NAME   SEVERITY ERROR_TEXT
                   *    WARNING ORA-16707: the value of the property DbFileNameConvert is invalid, valid values are pairs of file specifications
                SBDB    WARNING ORA-16714: the value of property DbFileNameConvert is inconsistent with the database setting

 

從這個錯誤提示可以看出,是standby 庫SBDB 的db_file_name_convert有問題,於是我做了如下的操作,終於發現問題的所在,下面紅色的字型部分,竟然被截斷了一部分。

DGMGRL> show database verbose SBDB

Database
  Name:            sbdb
  Role:            PHYSICAL STANDBY
  Enabled:         YES
  Intended State:  ONLINE
  Instance(s):
    SBDB

  Properties:
    InitialConnectIdentifier        = 'sbdb'
    LogXptMode                      = 'ASYNC'
    Dependency                      = ''
    DelayMins                       = '0'
    Binding                         = 'OPTIONAL'
    MaxFailure                      = '0'
    MaxConnections                  = '1'
    ReopenSecs                      = '300'
    NetTimeout                      = '180'
    LogShipping                     = 'ON'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyParallel                   = 'AUTO'
    StandbyFileManagement           = 'AUTO'
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '2'
    LogArchiveMinSucceedDest        = '1'
    DbFileNameConvert               = '/u01/app/oracle/oradata/PROD/Disk1, /u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk2, /u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk3,
/u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk4, /u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk5, /u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk6, /u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk7,
/u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk8'
    LogFileNameConvert              = '/u01/app/oracle/oradata/PROD/Disk1, /u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk2, /u01/app/oracle/oradata/SBDB, /u01/app/oracle/oradata/PROD/Disk3, /u01/app/oracle/oradata/SBDB'
    FastStartFailoverTarget         = ''
    StatusReport                    = '(monitor)'
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    HostName                        = 'even.oracle.com'
    SidName                         = 'SBDB'
    LocalListenerAddress            = '(ADDRESS=(PROTOCOL=tcp)(HOST=even.oracle.com)(PORT=1521))'
    StandbyArchiveLocation          = '/u01/app/oracle/bak/arch1'
    AlternateLocation               = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = '%t_%s_%r.dbf'
    LatestLog                       = '(monitor)'
    TopWaitEvents                   = '(monitor)'

Current status for "sbdb":
Warning: ORA-16809: multiple warnings detected for the database

 

我initSBDB.ora裡是下面這樣的,明顯的broker 裡和我SPFILE裡是不一致的,所以一直報錯誤。

db_file_name_convert=
'/u01/app/oracle/oradata/PROD/Disk1','/u01/app/oracle/oradata/SBDB',
'/u01/app/oracle/oradata/PROD/Disk2','/u01/app/oracle/oradata/SBDB',
'/u01/app/oracle/oradata/PROD/Disk3','/u01/app/oracle/oradata/SBDB',
'/u01/app/oracle/oradata/PROD/Disk4','/u01/app/oracle/oradata/SBDB',
'/u01/app/oracle/oradata/PROD/Disk5','/u01/app/oracle/oradata/SBDB',
'/u01/app/oracle/oradata/PROD/Disk6','/u01/app/oracle/oradata/SBDB',
'/u01/app/oracle/oradata/PROD/Disk7','/u01/app/oracle/oradata/SBDB',
'/u01/app/oracle/oradata/PROD/Disk8','/u01/app/oracle/oradata/SBDB',
'/u01/app/oracle/oradata/PROD','/u01/app/oracle/oradata/SBDB'

 

查看metlink發現有如下bug:
Bug 9469176: BROKER DOESNOT SET DB_FILE_NAME_CONVERT (DBFILENAMECONVERT) CORRECTLY

DescriptionData Guard broker limit the pairs of strings in DbFileNameConvert and LogFileNameConvert to only 10. Exceeding that number, broker will not set them into the actual DB_FILE_NAME_CONVERT and LOG_FILE_NAME_CONVERT
parameter

仔細分析發現v$parameter 的VALUE為VARCHAR2(512),我在pfile中設定的值比這個長,導致show 和 broker中看到的都是被截斷的值

SQL> desc v$parameter
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 NUM                                                NUMBER
 NAME                                               VARCHAR2(80)
 TYPE                                               NUMBER
 VALUE                                              VARCHAR2(512)
 DISPLAY_VALUE                                      VARCHAR2(512)
 ISDEFAULT                                          VARCHAR2(9)
 ISSES_MODIFIABLE                                   VARCHAR2(5)
 ISSYS_MODIFIABLE                                   VARCHAR2(9)
 ISINSTANCE_MODIFIABLE                              VARCHAR2(5)
 ISMODIFIED                                         VARCHAR2(10)
 ISADJUSTED                                         VARCHAR2(5)
 ISDEPRECATED                                       VARCHAR2(5)
 DESCRIPTION                                        VARCHAR2(255)
 UPDATE_COMMENT                                     VARCHAR2(255)
 HASH                                               NUMBER

Broker重要的診斷命令:

show database 'sbdb' statusreport;

show database verbose SBDB;


總結:參數檔案的值的長度最好不要超過512,否則會出現問題的。記錄下來,給自己一個Lessons learned的把。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.