数据库状态管理
数据库状态分类
broker管理的数据库可以存在多种不同的状态,在DG中扮演不同角色的数据的状态类型也不一样,详细状态如下。
-
ONLINE:默认状态。Primary数据库正常打开,日志传送服务正常传送日志到Standby数据库。
当 数据库转为ONLINE状态的时候,初始化参数LOG_ARCHIVE_DEST_n和LOG_ARCHIVE_DEST_STATE_n会被自动设置以 启用日志传送服务,同时primary数据库以及所有standby数据库的LOG_ARCHIVE_CONFIG参数也会被设置,如果需要的话会根据 broker配置中的信息重新设置数据库的保护模式,同时将数据库打开为读写模式,最后系统将做一个日志却换。 -
LOG-TRANSPORT-OFF:Primary数据库正常打开,日志传送服务不传送日志到Standby数据库。
当数据库从别的状态切换到LOG-TRANSPORT-OFF状态的时候,参数LOG_ARCHIVE_DEST_STATE_n会被设置成FALSE,这样到所有standby数据库的日志传送将会停止,但是primary数据库的本地归档操作还是正常的。 -
OFFLINE: 数据库关闭,不再接受broker管理,重新启动数据库之后恢复默认状态。
当数据库从别的状态切换到OFFLINE状态的时候,broker会关闭数据库,当然此时数据库无法被broker管理了,要重新启用的话只需要重启数据库到MOUNT状态就行了,broker会自动的使数据库ONLINE。
-
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。
-
ONLINE:默认状态。数据库只读打开,日志恢复正常。
转换为ONLINE状态时,broker将打开数据库,同时启用database guard以防止对表数据的修改,同时修改SQL应用相关参数启用SQL应用。 -
LOG-APPLY-OFF:数据库只读打开,日志恢复关。
转换为LOG-APPLY-OFF状态时,broker将停止SQL应用草操作。 -
OFFLINE:数据库关闭,不再接受broker管理,重新启动数据库之后恢复默认状态。
当数据库从别的状态切换到OFFLINE状态的时候,broker会关闭数据库,当然此时数据库无法被broker管理了,要重新启用的话只需要重启数据库到MOUNT状态就行了,broker会自动的使数据库ONLINE。
数据库各种转换路径 |
相关DGMGRL命令
1. 查看一个数据库当前的状态
直接使用show database命令,然后查看“Intended State”一项
Database
Name: torcla
Role: PHYSICAL STANDBY
Enabled: YES
Intended State: ONLINE
Instance(s):
torcla
Current status for "torcla":
SUCCESS
2. 修改数据库的状态
通过edit命令来修改数据库的状态,命令语法如下
下面我们来个设置数据库offline的操作
DGMGRL> edit database torcla set state='OFFLINE';
Operation requires shutdown of instance "torcla" on database "torcla"
Shutting down instance "torcla"...
ORA-01109: database not open
Database dismounted.
ORACLE instance shutdown.
-- 此时再看数据库的state已经是OFFLINE了
SYS@torcla> startup mount
ORACLE instance started.
Total System Global Area 1191182336 bytes
FixedSize 1259312bytes
VariableSize 355207376bytes
DatabaseBuffers 819200000bytes
RedoBuffers 15515648bytes
Database mounted.
DGMGRL> show database torcla
Database
Name: torcla
Role: PHYSICALSTANDBY
Enabled: NO
IntendedState: OFFLINE
Instance(s):
torcla
Current status for "torcla":
SHUTDOWN
-- 下面我们启动下这个数据库,然后再看数据库的state,又变成了ONLINE
SYS@torcla> startup mount
ORACLE instance started.
Total System Global Area 1191182336 bytes
FixedSize 1259312bytes
VariableSize 355207376bytes
DatabaseBuffers 819200000bytes
RedoBuffers 15515648bytes
Databasemounted.
DGMGRL> show database torcla
Database
Name: torcla
Role: PHYSICALSTANDBY
Enabled: YES
IntendedState: ONLINE
Instance(s):
torcla
Currentstatusfor"torcla":
SUCCESS
数据库属性管理
数据库属性分类
broker管理的数据库属性包含两类:第一类是可监控的属性,第二类是可配置的属性。
对于可配置的数据库属性,broker会保证启用了broker的数据库它在broker配置文件后中记录的数据库的属性和数据库运行所使用的参数是一致的,但这也有两种情况:
- 如果对应的数据库参数是可以动态更新的,那么broker配置文件、SGA、spfile这三个地方所涉及的属性值将会是一样的。
- 如果对应的数据库参数不能动态更新,那么在数据库重启之前broker配置文件、SGA这两个地方的参数值是一样的,spfile中参数值要在数据库重新启动之后才能与broker配置文件值一致。
显示/修改数据库属性
1. 同show database verbose命令可以查看数据库当前的属性设置,值显示为“(monitor)”的自然就是可监控的属性了,其他的属性都属于可配置的。
Database
Name: torcla
Role: PHYSICALSTANDBY
Enabled: YES
IntendedState: ONLINE
Instance(s):
torcla
Properties:
InitialConnectIdentifier = 'torcla.mycompany'
LogXptMode = 'SYNC'
Dependency = ''
DelayMins = '0'
Binding = 'OPTIONAL'
MaxFailure = '0'
MaxConnections = '1'
ReopenSecs = '300'
NetTimeout = '180'
LogShipping = 'ON'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyParallel = 'AUTO'
StandbyFileManagement = 'MANUAL'
ArchiveLagTarget = '3600'
LogArchiveMaxProcesses = '2'
LogArchiveMinSucceedDest = '1'
DbFileNameConvert = 'torclb, torcla'
LogFileNameConvert = 'torclb, torcla'
FastStartFailoverTarget = ''
StatusReport = '(monitor)'
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
HostName = 'orainst.desktop.mycompany.com'
SidName = 'torcla'
LocalListenerAddress = '(ADDRESS=(PROTOCOL=tcp)(HOST=orainst.desktop.mycompany.com)(PORT=8000))'
StandbyArchiveLocation = '/data1/dg/databases/torcla/redolog'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = 'log-%s-%t-%r.arc'
LatestLog = '(monitor)'
TopWaitEvents = '(monitor)'
Current status for"torcla":
SUCCESS
2. 通过edit database命令修改数据库属性,基本语法如下
下面实战一下,修改下数据库的NetTimeout属性
DGMGRL> show database torcla NetTimeout
NetTimeout = '60'
-- 将60修改成120
DGMGRL> edit database torcla set property 'NetTimeout'=120;
Property "NetTimeout" updated
-- 再看torclb的broker日志文件,可以看到broker在修改log_archive_dest_2值
DG2009-08-31-07:21:25 020 Executing SQL [altersystemsetlog_archive_dest_2 = 'service="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=orainst.desktop.mycompany.com)(PORT=8000)))(CONNECT_DATA=(SERVICE_NAME=torcla_XPT.mycompany)(INSTANCE_NAME=torcla)(SERVER=dedicated)))"', ' LGWR SYNC AFFIRM delay=0 OPTIONAL max_failure=0 max_connections=1 reopen=300 db_unique_name="torcla" register net_timeout=120 valid_for=(online_logfile,primary_role)']
-- 这个时候torcla的broker日志文件也有动作,是在同步broker配置……
DG2009-08-31-07:21:32 020DRCX: Startreceivingmetadatafile: /data1/dg/10.2.0.2/A10db/dbs/dr2torcla.dat
DG2009-08-31-07:21:32 020DRCX: Receivingblock#1, 86 blocks.
日志传送管理
使用broker配置日志传送管理需要涉及下面这些可配置的数据库属性。
- ON:传送日志到指定数据库
- OFF:不传送日志到指定数据库
- SYNC:相当于LGWR, SYNC, AFFIRM
- ASYNC:相当于LGWR, ASYNC, NOAFFIRM
- ARCH:相当于ARCH
除了上面几个重要的设置之外还有Binding、MaxFailure、NetTimeout、ReopenSecs这几个属性,这些属性会在数据库加入broker的时候自动导入,通常不需要修改。
日志应用管理
日志应用相关的可配置参数有下面这些。
- ApplyInstanceTimeout
- DelayMins
- PreferredApplyInstance
- ApplyParallel
- LsbyASkipTxnCfgPr
- LsbyDSkipTxnCfgPr
- LsbyASkipCfgPr
- LsbyDSkipCfgPr
- LsbyASkipErrorCfgPr
- LsbyDSkipErrorCfgPr
- LsbyMaxEventsRecorded
- LsbyTxnConsistency
- LsbyRecordSkipErrors
- LsbyRecordSkipDdl
- LsbyRecordAppliedDdl
- LsbyMaxSga
- LsbyMaxServers
数据库保护模式
设置数据库的保护模式
保护模式与其他设置之间的关系
MAXPROTECTION | SYNC | 是 | 否 |
MAXAVAILABILITY | SYNC | 是 | 是 |
MAXPERFORMANCE | ASYNC或ARCH | ASYNC时是 | 否 |
PS:在MAXAVAILABILITY和MAXPROTECTION保护模式下,standby database的standby redo logfile组个数必须大于等于standby database的standby redo logfile组数,并且standby redo logfile的大小必须大于等于redo logfile. 同时,standby redo logfile组的编号(v$standby_log.group#)必须于primary database上的standby redo logfile组编号(v$log.group#)一致。
使用broker来设置保护模式也是通过edit configuration来操作
DGMGRL> show configuration
Configuration
Name: FSF
Enabled: YES
ProtectionMode: MaxPerformance
Fast-Start Failover: DISABLED
Databases:
torcla - Physical standby database
torclb - Primary database
-- 然后我们将它变更为MaxAvailability
DGMGRL> edit configuration set protection mode as maxavailability;
Operation requires shutdown of instance "torclb" on database "torclb"
Shutting down instance "torclb"...
Database closed.
Database dismounted.
ORACLE instance shutdown.
Operation requires startup of instance "torclb" on database "torclb"
Starting instance "torclb"...
ORACLE instance started.
Database mounted.
DGMGRL> show configuration
Configuration
Name: FSF
Enabled: YES
ProtectionMode: MaxAvailability
Fast-StartFailover: DISABLED
Databases:
torcla - Physical standby database
torclb - Primary database
Currentstatusfor"FSF":
SUCCESS
broker还是很聪明的,会自动的关闭primary数据库然后将保护模式修改为MaxAvailability。
不同的保护模式对broker操作的影响
1. 当升级保护模式的时候,broker会自动的重启primary数据库。降低保护模式级别的时候是不需要重启数据库的。
2. switchover操作不会改变当前的保护模式。
3. 做手工的failover之后,如果原来保护模式是MaxProtection的话会被自动降级为MaxPerformance;如果是其他模式的话则保持不变。
4. fast-start failover所作的自动的failover操作不会改变数据库的保护模式。
5. 做disable操作或remove database之前,broker会检查disable之后是否还能保证满足当前的保护模式,如果不能的话disable/remove会失败。
6. fast-start failover启用的是很不能做disable configuration操作。
数据库监控状态查看
broker会自动的收集同一个配置之下的所有数据库的健康状态,管理员只需要通过简单的show命令就可以查看数据库的状态了。命令格式如下
可用的状态命令列表如下:
命令操作示例
STATUS REPORT
INSTANCE_NAME SEVERITYERROR_TEXT
torclb ERRORORA-16737: theredotransportserviceforstandbydatabase"torcla"hasanerror
DGMGRL> show database orclt1cn_aLogXptStatus
LOGTRANSPORTSTATUS
PRIMARY_INSTANCE_NAMESTANDBY_DATABASE_NAME STATUS
torcla torclb
DGMGRL> show database torcla InconsistentProperties
INCONSISTENTPROPERTIES
INSTANCE_NAME PROPERTY_NAME MEMORY_VALUE SPFILE_VALUE BROKER_VALUE
DGMGRL> show database torcla InconsistentLogXptProps
INCONSISTENTLOGTRANSPORTPROPERTIES
INSTANCE_NAME STANDBY_NAME PROPERTY_NAME MEMORY_VALUE BROKER_VALUE
参考至:http://www.dbabeta.com/2009/learn-data-guard-broker_db-management.html
如有错误,欢迎指正
邮箱:czmcj@163.com
相关推荐
Data_Guard_Broker
Oracle 9i Data Guard Broker Release 2 (9.2)
Oracle Data Guard Broker 11g Release 2 (11.2)-290
【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置.pdf【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置.pdf
·实施Oracle Data Guard Broker管理框架 ·集成Oracle Grid Control ·监视Oracle Data Guard环境 ·使用Oracle Active Data Guard启用只读服务与灾难恢复功能 ·发生故障时顺利转移数据库和应用程序 ·利用Oracle ...
详细讲述了Data Guard Broker概念、安装、管理配置、Switchover和Failover切换、使用DGMGRL命令行管理、故障排查解除…………
Data Guard Configurations,Primary Database,Standby Databases,Data Guard Services.,Redo Transport Services.,Apply Services, Role Transitions.,Data Guard Broker.,Using Oracle Enterprise Manager ...
Primary Database , Standby Databases , Far Sync Instances , Zero Data Loss Recovery Appliance, Redo Transport Services , Apply Services , Role Transitions , Oracle Data Guard Broker ,
本文指导如何进行dataguard broker环境的配置和切换。
有时候会遇到这样的问题:未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持。如果希望使用通知,请为此数据库启用 Service Broker。
Message Broker连接数据库
AMQPConnection::connect - 建立一个连接与AMQP broker。 AMQPConnection::disconnect - 关闭连接与AMQP broker。 AMQPConnection::isConnected - 确定AMQPConnection对象连接到 broker。 AMQPConnection::reconnect...
附件包含三个文件db.c db.h db.lib其中,lib文件在Keil5下基于CortexM3生成。
Data Broker Interface
(八.1)物理dg配置客户端无缝切换--Data Guard Broker 的配置 (八.2)物理dg配置客户端无缝切换--Fast-Start Failover 的配置 (八.3)物理dg配置客户端无缝切换 --客户端TAF 配置 (八.4)物理dg配置客户端无缝切换 --ora...
3、数据库维护管理内容 数据库管理维护主要包含以下内容: 数据库用户以及权限的分配与维护 数据库的备份与恢复的设置和演练 数据库性能的定期巡检和优化 数据库高可用性,可扩展性架构方面的不断研究和应用 数据库...
mqtt_client.exe 上位机,GO语言写的
Pro SQL Server 2008 Service Broker 国外数据库高级教程 PDF格式 英文版
狂神Redis课堂笔记,Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. 翻译为:Redis是一个开源的内存中的数据结构存储系统,它可以用作...