1. 程式人生 > 其它 >關於dg broker的簡單配置(r5筆記第99天)

關於dg broker的簡單配置(r5筆記第99天)

dataguard broker是在dataguard使用基礎上提供的一個工具,可以把原本複雜的命令控制語句整合起來,比如switchover,failover等等,可能在多個備庫的情況下需要敲不少的命令,這個dg broker的優越性就顯示出來了。 當然dg broker需要啟用還是需要預備一些條件的,比如需要設定local_listener,需要在spfile的基礎上,需要在網路配置中進行dgmgrl相關的標示。 應該是在內部實現中預設擁有這些配置。 我們先來看看一個簡單的配置情況。 首先啟用dg broker,在資料庫引數中有一個dg_broker_start的引數,預設為false,改為true即可。在後臺程序中就會看見dmon相關的程序起來了。 SQL> alter system set dg_broker_start=true ; System altered.

如果要連入dg broker也很簡單,就是使用sys使用者,和建立一個數據庫連線差不多。 [ora11g@oel1 admin]$ dgmgrl DGMGRL for Linux: Version 11.2.0.1.0 - Production

Copyright (c) 2000, 2009, Oracle. All rights reserved.

Welcome to DGMGRL, type "help" for information. DGMGRL> connect sys/oracle@test11g Connected. 檢視配置資訊。因為這個時候還沒有進行基本的配置,還是看不到什麼資訊的。 DGMGRL> show configuration ORA-16532: Data Guard broker configuration does not exist

Configuration details cannot be determined by DGMGRL 這個時候需要做兩種配置,一種是primary database的配置,另外一種是standby的配置 主庫的配置如下: DGMGRL> create configuration 'TEST11G' as primary database is TEST11G connect identifier is TEST11G; Configuration "TEST11G" created with primary database "test11g" 備庫的配置如下: DGMGRL> add database DG11G as connect identifier is DG11G maintained as physical; Database "dg11g" added

這個時候再來檢視配置資訊就會顯出出來了,不過可以看到配置還沒有啟用。

DGMGRL> show configuration;
Configuration - TEST11G
  Protection Mode: MaxPerformance
  Databases:
    test11g - Primary database
    dg11g   - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED

如果想檢視更多的關於主庫,備庫的資訊,可以使用verbose的選項

DGMGRL> show database verbose TEST11G
Database - test11g
  Role:            PRIMARY
  Intended State:  OFFLINE
  Instance(s):
    TEST11G
  Properties:
    DGConnectIdentifier             = 'test11g'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'ASYNC'
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    MaxConnections                  = '1'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    LogShipping                     = 'ON'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyParallel                   = 'AUTO'
    StandbyFileManagement           = 'AUTO'
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '4'
    LogArchiveMinSucceedDest        = '1'
    DbFileNameConvert               = '/u02/ora11g/oradata/TEST11G, /u02/dg11g/oradata/DG11G'
    LogFileNameConvert              = '/u02/ora11g/oradata/TEST11G, /u02/ora11g/oradata/DG11G'
    FastStartFailoverTarget         = ''
    StatusReport                    = '(monitor)'
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    HostName                        = 'oel1'
    SidName                         = 'TEST11G'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oel1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=TEST11G_DGMGRL)(INSTANCE_NAME=TEST11G)(SERVER=DEDICATED)))'
    StandbyArchiveLocation          = '/u02/ora11g/switchover/TEST11G/archivelog'
    AlternateLocation               = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = '%t_%s_%r.dbf'
    TopWaitEvents                   = '(monitor)'
Database Status:
DISABLED

這個時候所做的工作就比較簡單了,我們直接啟用即可。

DGMGRL> enable configuration;
Enabled.
DGMGRL> enable database TEST11G;
Enabled.
DGMGRL> enable database DG11G;
Enabled.

這個時候我們來看看是否能夠正常顯示broker的資訊

DGMGRL> show database TEST11G;
Database - test11g
  Role:            PRIMARY
  Intended State:  TRANSPORT-ON
  Instance(s):
    TEST11G
      Error: ORA-16797: database is not using a server parameter file
Database Status:
ERROR

從錯誤可以看出去,還是需要設定spfile的。

DGMGRL> show database DG11G;
Database - dg11g
  Role:            PHYSICAL STANDBY
  Intended State:  APPLY-ON
  Transport Lag:   (unknown)
  Apply Lag:       (unknown)
  Real Time Query: OFF
  Instance(s):
    DG11G
Database Status:
DGM-17016: failed to retrieve status for database "dg11g"
ORA-16525: the Data Guard broker is not yet available
ORA-16625: cannot reach database "dg11g"

這個時候啟用spfile即可。 --主庫端驗證spfile是否使用,如果沒有啟用,需要啟用後重啟資料庫例項

SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area  435224576 bytes
Fixed Size                  1337044 bytes
Variable Size             272632108 bytes
Database Buffers          155189248 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.
SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u01/app/ora11g/product/11.2.0
                                                 /dbhome_1/dbs/spfileTEST11G.or
                                                 a        

備庫中的設定基本是一樣的 配置完成了,dg broker還是能做很多工作的。 比如修改備庫為read-only模式 DGMGRL DGMGRL> edit database 'DG11G' set state='read-only'; Succeeded. 通過sql命令檢視狀態的變化如下:

SQL> select instance_name,status from v$instance;
INSTANCE_NAME    STATUS
---------------- ------------
DG11G            MOUNTED
SQL> /
INSTANCE_NAME    STATUS
---------------- ------------
DG11G            OPEN

當然主要的功能還是做switchover,failover的切換,後臺會做大量的檢查和校驗,switchover的命令在dg broker裡面極為精簡,但是有利有弊,如果配置不當,很可能就會出現下面的問題 DGMGRL> switchover to 'DG11G'; Performing switchover NOW, please wait... Error: ORA-16664: unable to receive the result from a database 這個時候就會很可能備庫變主庫,存在兩個主庫了。 還是需要好好檢查一下dg broker的準備條件。