一、修改Broker的配置属性
1.1 使用EDIT命令你可以修改三个级别的属性:configuration, database,instanceEDIT CONFIGURATION SET PROPERTY =
EDIT DATABASE SET PROPERTY =
EDIT INSTANCE SET PROPERTY =
如果在整个primary-standby系统中实例名不是唯一的,你可以在SET PROPERTY加上ON DATABASE
1.2 修改CONFIGURATION级别的配置
1.2.1 获得配置属性
要修改配置,首先得知道CONFIGURATION级别到底包含哪些配置项,以及每个配置项的意义。
我们可以通过如下命令来查看CONFIGURATION的详细配置。DGMGRL> show configuration verbose;
Configuration - dr1
Protection Mode: MaxPerformance
Databases:
11gdg1 - Primary database
11gdg2 - Physical standby database
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
可以看出CONFIGURATION控制着数据库的保护模式、是否启用快速故障转移、以及还有7个属性。
FastStartFailoverThreshold:
Observer在指定时间内一直都连不通Primary数据库,就开始进行快速故障转移。
OperationTimeout:
Broker等待 health check, get monitorable property,set property操作完成的最大时间。
FastStartFailoverLagLimit:
如果standby数据库的日志应用延迟超过这个值,则不允许进行故障转移。也就是用来保护数据最多可丢失多少。
注:其他参数具体意义,请参考《Oracle Data Guard Broker 11g Release 2 (11.2)》
1.2.2 修改属性DGMGRL> EDIT CONFIGURATION SET PROPERTY FastStartFailoverLagLimit = 20;
Property "faststartfailoverlaglimit" updated
1.3 修改database级别属性
同样,先查看database级别到底有哪些属性DGMGRL> show database verbose 11gdg1;
Database - 11gdg1
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
dgtst
Properties:
DGConnectIdentifier = '11gdg1'
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 = ''
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
SidName = 'dgtst'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=11gdg1.localdomain.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=11gdg1_DGMGRL)(INSTANCE_NAME=dgtst)(SERVER=DEDICATED)))'
StandbyArchiveLocation = 'USE_DB_RECOVERY_FILE_DEST'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t_%s_%r.dbf'
TopWaitEvents = '(monitor)'
Database Status:
SUCCESS
下面看看如何修改数据库的日志传输模式DGMGRL> EDIT DATABASE 11GDG1 SET PROPERTY LogXptMode='SYNC';
Property "logxptmode" updated
二、修改数据库状态
数据库级别除了有上面列出的那么多属性值,database还有一个state的概念。有如下TRANSPORT-ON、TRANSPORT-OFF、APPLY-ON、APPLY-OFF四种。分别表示传输日志开关、应用日志开关。DGMGRL> EDIT DATABASE 11GDG1 SET STATE=TRANSPORT-OFF;
Succeeded.
经过测试,发现TRANSPORT-OFF,并没有生效。Why?(不知道是因为什么原因导致这个设置有延迟,在后续的操作中发现,该参数是有效的)
如果将从库的日志应该改为APPLY-OFF,则从库不应用日志。此功能测试成功。DGMGRL> EDIT DATABASE 11GDG2 SET STATE=APPLY-OFF;
Succeeded.
三、修改数据库的保护模式DGMGRL> SHOW CONFIGURATION;
Configuration - dr1
Protection Mode: MaxPerformance
Databases:
11gdg1 - Primary database
11gdg2 - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
目前数据库的保护模式为最大性能。
下面我们尝试将保护模式修改为最大保护和最高可用。DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Error: ORA-16627: operation disallowed since no standby databases would remain to support protection mode
Failed.
我们知道,最大保护和最高可以的前提条件是日志传输模式为SYNC .所以我们要先修改日志传输模式DGMGRL> EDIT DATABASE 11gdg1 SET PROPERTY LogXptMode='SYNC';
Property "logxptmode" updated
再次修改保护模式DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Error: ORA-16627: operation disallowed since no standby databases would remain to support protection mode
为什么还是报错呢?我们来分析一下参数LogXptMode,这个参数其实是个反向参数。配置了11gdg1数据库的LogXptMode。表示别人向11gdg1用SYNC的方式传输日志。
我们的本意是配置主库以sync的方式向备库传输日志,那么应该改的是11gdg2的配置。DGMGRL> EDIT DATABASE 11gdg2 SET PROPERTY LogXptMode='SYNC';
Property "logxptmode" updated
DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MaxAvailability;
Succeeded.
因为考虑到以后要进行故障转移,所以需要将所有的数据库的LogXptMode都设置为SYNC.