暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle | Data Guard Broker 实战及管理(三)

数据库实用技能 2021-04-19
879



数据库状态管理



               数据库状态分类

                    Broker管理的数据库可以存在多种不同的状态,在DG中扮演不同角色的数据的状态类型也不一样,详细状态如下。

Primary数据库

  • ONLINE:默认状态。Primary数据库正常打开,日志传送服务正常传送日志到Standby数据库。
    当数据库转为ONLINE状态的时候,初始化参数LOG_ARCHIVE_DEST_nLOG_ARCHIVE_DEST_STATE_n会被自动设置以启用日志传送服务,同时primary数据库以及所有standby数据库的LOG_ARCHIVE_CONFIG参数也会被设置,如果需要的话会根据broker配置中的信息重新设置数据库的保护模式,同时将数据库打开为读写模式,最后系统将做一个日志却换。

  • LOG-TRANSPORT-OFFPrimary数据库正常打开,日志传送服务不传送日志到Standby数据库。
    当数据库从别的状态切换到LOG-TRANSPORT-OFF状态的时候,参数LOG_ARCHIVE_DEST_STATE_n会被设置成FALSE,这样到所有standby数据库的日志传送将会停止,但是primary数据库的本地归档操作还是正常的。

  • OFFLINE: 数据库关闭,不再接受broker管理,重新启动数据库之后恢复默认状态。
    当数据库从别的状态切换到OFFLINE状态的时候,broker会关闭数据库,当然此时数据库无法被broker管理了,要重新启用的话只需要重启数据库到MOUNT状态就行了,broker会自动的使数据库ONLINE

Physical Standby数据库

  • ONLINE:默认状态。数据库处于MOUNT状态,日志恢复正常,不能进行只读查询。
    当数据库装换成ONLINE状态,相关参数被设置以启用日志恢复。

  • LOG-APPLY-OFF:数据库MOUNT,日志恢复停止,不能进行制度查

    询。
    当数据库装换成LOG-APPLY-OFF状态时,如果之前数据库ONLINE,则日志恢复关闭,如果之后是READ-ONLY则关闭数据库到MOUNT状态。

  • READ-ONLY:数据库只读打开,可以查询,日志恢复停止。
    当数据库装换成READ-ONLY状态时,日志恢复被停止,同时将数据库打开为只读。

  • OFFLINE:数据库关闭,不再接受broker管理,重新启动数据库之后恢复默认状态。
    当数据库从别的状态切换到OFFLINE状态的时候,broker会关闭数据库,当然此时数据库无法被broker管理了,要重新启用的话只需要重启数据库到MOUNT状态就行了,broker会自动的使数据库ONLINE

Logical Standby数据库

  • ONLINE:默认状态。数据库只读打开,日志恢复正常。
    转换为ONLINE状态时,broker将打开数据库,同时启用database guard以防止对表数据的修改,同时修改SQL应用相关参数启用SQL应用。

  • LOG-APPLY-OFF:数据库只读打开,日志恢复关。
    转换为LOG-APPLY-OFF状态时,broker将停止SQL应用草操作。

  • OFFLINE:数据库关闭,不再接受broker管理,重新启动数据库之后恢复默认状态。
    当数据库从别的状态切换到OFFLINE状态的时候,broker会关闭数据库,当然此时数据库无法被broker管理了,要重新启用的话只需要重启数据库到MOUNT状态就行了,broker会自动的使数据库ONLINE


查看主备数据库当前状态





直接使用show database命令,然后查看Intended State一项

DGMGRL> show database oms;              /*主库查看 */

Database - oms

  Role:            PRIMARY

  Intended State:  TRANSPORT-ON

  Instance(s):

    oms

Database Status:

SUCCESS

DGMGRL>

DGMGRL> show database stoms;       // 备库查看  

Database - stoms

  Role:            PHYSICAL STANDBY

  Intended State:  APPLY-ON

  Transport Lag:   0 seconds

  Apply Lag:       0 seconds

  Real Time Query: ON

  Instance(s):

    oms

Database Status:

SUCCESS

DGMGRL>

修改数据库的状态



     通过edit命令来修改数据库的状态,命令语法如下:

EDIT DATABASE 'db_unique_nmae' SET STATE='database_state';

---设置standby数据库OFFLINE

DGMGRL> edit database stoms set state='OFFLINE';

操作要求关闭实例 "oms" (在数据库 "stoms" )

正在关闭实例 "oms"...

ORA-01031: insufficient privileges

警告: 您不再连接到 ORACLE

请执行以下步骤以完成操作:

        关闭实例 "oms" (属于数据库 "stoms")

-- 此时再看数据库的state已经是OFFLINE

DGMGRL> show database stoms;

Database - stoms

  Role:            PHYSICAL STANDBY

  Intended State:  OFFLINE

  Transport Lag:   (unknown)

  Apply Lag:       (unknown)

  Real Time Query: OFF

  Instance(s):

    oms

Database Status:

SHUTDOWN

 

DGMGRL>

--启动下这个数据库,然后再看数据库的state,又变成了ONLINE

DGMGRL> edit database stoms set state='ONLINE';

成功。

DGMGRL> show database stoms;

Database - stoms

 

  Role:            PHYSICAL STANDBY

  Intended State:  APPLY-ON

  Transport Lag:   0 seconds

  Apply Lag:       0 seconds

  Real Time Query: OFF

  Instance(s):

    oms

 

Database Status:

SUCCESS

DGMGRL>

 

数据库属性管理


     数据库属性分类

Broker管理的数据库属性包含两类:第一类是可监控的属性,第二类是可配置的属性。

可监控属性

顾名思义,可监控的属性是能在broker的界面中看到属性的设定值,但是不能够修改。

可配置属性

可配置属性既能监控,同时还能够动态的修改。可配置属性在数据库处于任何状态的是很都能够修改,不过当数据库处于OFFLINE状态或者是DISABLE状态的时候,属性的修改会先记录到broker配置文件中,在数据库broker被启用之后会被应用到据库中。

对于可配置的数据库属性,broker会保证启用了broker的数据库它在broker配置文件后中记录的数据库的属性和数据库运行所使用的参数是一致的,但这也有两种情况:

·         如果对应的数据库参数是可以动态更新的,那么broker配置文件、SGAspfile这三个地方所涉及的属性值将会是一样的。

·         如果对应的数据库参数不能动态更新,那么在数据库重启之前broker配置文件、SGA这两个地方的参数值是一样的,spfile中参数值要在数据库重新启动之后才能与broker配置文件值一致。


显示和修改数据属性


show database verbose命令可以查看数据库当前的属性设置,值显示为“(monitor)”的自然就是可监控的属性了,其他的属性都属于可配置的。

DGMGRL> show database verbose oms;           查看主库//

 

Database - oms

 

  Role:            PRIMARY

  Intended State:  TRANSPORT-ON

  Instance(s):

    oms

 

  Properties:

    DGConnectIdentifier             = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.13.199.22)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SID=oms)))'

    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               = ''

    LogFileNameConvert              = ''

    FastStartFailoverTarget         = ''

    StatusReport                    = '(monitor)'

    InconsistentProperties          = '(monitor)'

    InconsistentLogXptProps         = '(monitor)'

    SendQEntries                    = '(monitor)'

    LogXptStatus                    = '(monitor)'

    RecvQEntries                    = '(monitor)'

    HostName                        = 'oms'

    SidName                         = 'oms'

    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.13.199.22)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=oms_DGMGRL)(INSTANCE_NAME=oms)(SERVER=DEDICATED)))'

    StandbyArchiveLocation          = '/data/archivelog'

    AlternateLocation               = ''

    LogArchiveTrace                 = '0'

    LogArchiveFormat                = '%t_%s_%r.arc'

    TopWaitEvents                   = '(monitor)'

 

Database Status:

SUCCESS

 

DGMGRL> show database verbose stoms;             //备库//

 

Database - stoms

 

  Role:            PHYSICAL STANDBY

  Intended State:  APPLY-ON

  Transport Lag:   0 seconds

  Apply Lag:       0 seconds

  Real Time Query: OFF

  Instance(s):

    oms

 

  Properties:

    DGConnectIdentifier             = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.13.195.39)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SID=oms)))'

    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               = ''

    LogFileNameConvert              = ''

    FastStartFailoverTarget         = ''

    StatusReport                    = '(monitor)'

    InconsistentProperties          = '(monitor)'

    InconsistentLogXptProps         = '(monitor)'

    SendQEntries                    = '(monitor)'

    LogXptStatus                    = '(monitor)'

    RecvQEntries                    = '(monitor)'

    HostName                        = 'tc_195_39'

    SidName                         = 'oms'

    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.13.195.39)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=stoms_DGMGRL)(INSTANCE_NAME=oms)(SERVER=DEDICATED)))'

    StandbyArchiveLocation          = '/data/archivelog'

    AlternateLocation               = ''

    LogArchiveTrace                 = '0'

    LogArchiveFormat                = '%t_%s_%r.arc'

    TopWaitEvents                   = '(monitor)'

 

Database Status:

SUCCESS

 

DGMGRL>

修改数据库的属性



     通过edit database命令来修改数据库的属性,命令语法如下:

EDIT DATABASE 'db_unique_name'  SET PROPERTY  'property_name' =property_value;

---修改数据库的NetTimeout属性

-- 先看下当前的值

DGMGRL> show database oms NetTimeout;

  NetTimeout = '30'

-- 30修改成60

DGMGRL> edit database oms set property 'NetTimeout'=60;

Property "NetTimeout" updated

DGMGRL> show database oms NetTimeout;     查看已经修改成60//

  NetTimeout = '60'

日志传送管理


     使用broker配置日志传送管理需要涉及下面这些可配置的数据库属性。

    LogShipping

    决定是否传送日志到指定的数据库,和primary数据库的状态LOG-TRANSPORT-OFF不同的是LOG-TRANSPORT-OFF会停止向所有的standby数据库传送日志。

·         ON:传送日志到指定数据库

·         OFF:不传送日志到指定数据库

    LogXptMode

    这个属性设置的是LOG_ARCHIVE_DEST_n中传送模式那部分

·         SYNC:相当于LGWR, SYNC, AFFIRM

·         ASYNC:相当于LGWR, ASYNC, NOAFFIRM

·         ARCH:相当于ARCH

    StandbyArchiveLocation

    指定standby数据库上从primary接收的归档日志的存放位置,和standby自己本地的日志归档不一样,standby数据库本地的日志归档由LOG_ARCHIVE_DEST_n指定。当然这个值最好设置和本地归档位置一样最好。

    AlternateLocation

    这个属性是和StandbyArchiveLocation配合使用,如果设置了这儿属性,一旦StandbyArchiveLocation指定的目录因为磁盘满之类的原因fail了的话数据库就会归档日志存放在这个属性指定的位置上。

    Dependency

    这个参数设置一个standby数据库的归档日志依赖于别的那个standby或者是primary数据库,这个参数在多个数据库放在一个机器上的是很很有用,可以保证不用再同一个机器上存好几份同样的归档日志。

除了上面几个重要的设置之外还有BindingMaxFailureNetTimeoutReopenSecs这几个属性,这些属性会在数据库加入broker的时候自动导入,通常不需要修改。

日志应用管理


     日志应用相关的可配置参数有下面这些。

     同时适应于Redo ApplySQL Apply

·         ApplyInstanceTimeout

·         DelayMins

·         PreferredApplyInstance

     只适用于Redo Apply的属性

·         ApplyParallel

    只适用于SQL Apply的属性

·         LsbyASkipTxnCfgPr

·         LsbyDSkipTxnCfgPr

·         LsbyASkipCfgPr

·         LsbyDSkipCfgPr

·         LsbyASkipErrorCfgPr

·         LsbyDSkipErrorCfgPr

·         LsbyMaxEventsRecorded

·         LsbyTxnConsistency

·         LsbyRecordSkipErrors

·         LsbyRecordSkipDdl

·         LsbyRecordAppliedDdl

·         LsbyMaxSga

·         LsbyMaxServers


数据库保护模式


 设置数据库的保护模式

    保护模式与其他设置之间的关系

保护模式

日志传送模式

是否需要standby日志

是否能和fast-start failover一起用

MAXPROTECTION

SYNC

MAXAVAILABILITY

SYNC

MAXPERFORMANCE

ASYNC或ARCH

ASYNC时是

通过edit configuration来操作设置broker保护模式

---先查看当前设置

DGMGRL> show configuration

配置 - dg_oms

  保护模式:        MaxPerformance

  数据库:

    oms   - 主数据库

    stoms - 物理备用数据库

 

快速启动故障转移: DISABLED

 

配置状态:

SUCCESS

 

DGMGRL>

-- 然后将它变更为MaxAvailability

DGMGRL> edit configuration set protection mode as maxavailability;

Error: ORA-16627: operation disallowed since no standby databases would remain to support protection mode

 

Failed.

DGMGRL>

  

不同的保护模式对broker操作的影响

·         当升级保护模式的时候,broker会自动的重启primary数据库。降低保护模式级别的时候是不需要重启数据库的。

·          switchover操作不会改变当前的保护模式。

·         做手工的failover之后,如果原来保护模式是MaxProtection的话会被自动降级为MaxPerformance;如果是其他模式的话则保持不变。

·         fast-start failover所作的自动的failover操作不会改变数据库的保护模式。

·         disable操作或remove database之前,broker会检查disable之后是否还能保证满足当前的保护模式,如果不能的话disable/remove会失败。

·         fast-start failover启用的是很不能做disable configuration操作。

 

数据库监控状态查看



    Broker会自动的收集同一个配置之下的所有数据库的健康状态,管理员只需要通过简单的show命令就可以查看数据库的状态了。命令格式如下

    show database db_unique_name statue_name

    可用的状态命令列表如下:

    StatusReport    显示所有broker检查到的问题

DGMGRL> show database oms statusreport

STATUS REPORT

       INSTANCE_NAME   SEVERITY ERROR_TEXT

LogXptStatus    显示日志传送的状态

DGMGRL> show database oms LogXptStatus

LOG TRANSPORT STATUS

PRIMARY_INSTANCE_NAME STANDBY_DATABASE_NAME               STATUS

            oms           stoms                     

    InconsistentProperties  显示不一致的数据库属性

DGMGRL> show database oms InconsistentProperties

INCONSISTENT PROPERTIES

   INSTANCE_NAME        PROPERTY_NAME         MEMORY_VALUE         SPFILE_VALUE         BROKER_VALUE

 

DGMGRL>

 

InconsistentLogXptProps   显示不一致的日志传送设定



文章转载自数据库实用技能,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论