`

Data Guard Broker系列之五:数据库角色转换

 
阅读更多

数据库转换的基本概念

转换的类型

数据库之间的转换有switchover和failover两种方式。

switchover
switchover是primary数据库和它的一个standby数据库之间角色的切换,通常是有计划的数据库转换,保证不会有数据丢失。
failover
failover发生在primary数据库失败之后,它的一个standby接替它成为primary数据库。failover通常发生primary数据库不可恢复的情况下,根据数据库保护模式的不一样failover可能会有数据丢失。

转换目标的选择

对于switchover操作来说,遵循以下的步骤

  1. 首先选择未应用的redo的standby,这个可以通过SHOW DATABASE db_unique_name RecvQEntries看到。
  2. 对于物理和逻辑standby同时存在时,优先选择redo apply queue最小的物理standby,因为物理standby在转换之后所有的standby都能正常工作,而转换到逻辑standby之后同一组里面的物理standby将要重建。

对failover操作来说,遵循以下的步骤

  1. 为降低数据丢失的数量,首先要选择应用日志最多的standby。
  2. 对于物理和逻辑standby同时存在时,优先选择物理standby,因为物理standby在转换之后所有的standby都能正常工作,而转换到逻辑standby之后同一组里面的standby将要重建。另外一个如果逻辑standby使用DBMS_LOGSTDBY.SKIP忽略了一部 分数据库话也会造成数据丢失。

Data Guard转换的三个层次

第一个层次是在没有配置broker的环境中,在这种环境下,如果要进行数据库的角色却换的话通常需要3个步骤:

  1. 首先是检查data guard环境中的数据库是否满足转换的条件。
  2. 然后登陆到primary数据库运行sql转换角色,再重启primary数据库使其变成standby。
  3. 再登录到要转换的standby数据库上,运行sql转换角色,再重新启动standby以变成新的primary。

第二个层次是配置了broker但是没有配置FSF(fast-start failover)的环境中,在这里做switchover和failover都只需要一个简单的命令,剩下的重启primary和standby的操作就交给broker去做了。

第三个层次是配置了FSF的机器,这时候数据库的状态由FSF Observer监控着,一旦primary数据库出现了问题需要failover操作,FSF会自动进行数据库的转换,根本就不需要人来参与了。

broker管理下的switchover和failover

switchover

broker管理下的switchover的过程

  1. 检查primary和standby是否online,是否有错误,如果有错误则switchover失败。
  2. 如果primary是RAC,则关掉RAC中所有不参与switchover的instance。
  3. 将primary数据库转换成standby数据库,然后将目标standby数据库转换成新的primary数据库。
  4. 更新broker控制文件记录转换之后的数据库角色信息。
  5. 如果新的standby是物理standby的话将会重启之,然后开始redo log应用。RAC环境中将会重启那些被关闭的instance。
  6. 如果是物理standby环境的话重启新的primary数据库然后开始rodo log的传送到其他的standby中。
    最后broker会确认转换之后的新primary和standby都工作正常,redo log传送和应用都正常。对于那些没有参与switchover的standby将会保持不变。

下面是一个switchover的详细过程

DGMGRL> show configuration
 
Configuration
 
Name:                FSF
 
Enabled:             YES
 
Protection Mode:     MaxAvailability
 
Fast-Start Failover: DISABLED
 
Databases:
    
torcla - Physical standby database
    
torclb - Primary database
 
Current status for "FSF":
SUCCESS
 
DGMGRL> switchover to torcla
Performing switchover NOW, please wait...
Operation requires shutdown of instance "torclb" on database "torclb"
Shutting down instance "torclb"...
ORA-01109: database not open
 
Database dismounted.
ORACLE instance shutdown.
Operation requires shutdown of instance "torcla" on database "torcla"
Shutting down instance "torcla"...
ORA-01109: database not open
 
Database dismounted.
ORACLE instance shutdown.
Operation requires startup of instance "torclb" on database "torclb"
Starting instance "torclb"...
ORACLE instance started.
Database mounted.
Operation requires startup of instance "torcla" on database "torcla"
Starting instance "torcla"...
ORACLE instance started.
Database mounted.
Switchover succeeded, new primary is "torcla"
DGMGRL> show configuration

Configuration
 
Name:                FSF
 
Enabled:             YES
 
Protection Mode:     MaxAvailability
 
Fast-Start Failover: DISABLED
 
Databases:
    
torcla - Primary database
    
torclb - Physical standby database
 
Current status for "FSF":
SUCCESS

failover

failover有两种类型:完全failover和立即failover。

完全failover
进行完全failover操作的是很broker会竟可能的恢复数据,同时在failover完成之后会根据情况尽可能的将没有参与failover的standby变成新的primary的可用的standby。
立即failover
立即failover的操作开始之后broker不再去试图恢复更多的数据,另一个就是failover完成之后所有没有参与failover的standby都要重新启用。

调用这两种failover的命令如下

-- 完全failover
FAILOVER TO standby_database_name;
-- 立即failover
FAILOVER TO standby_database_name IMMEDIATE;

broker执行完全failover的过程

  1. 检查primary是否可用,可用的话给出一条警告信息。
  2. 确认目标standby可用,不可用的话failover失败。RAC环境中将关闭standby的其他不参与的instance。
  3. 等待目标standby完成还在队列中的redo信息之后关闭redo log apply或是sql apply。
  4. 将目标standby转换成新的primary。
    • 将新的primary数据库打开为读写模式。
    • 检查其他的standby是否能成为新primary的standby,如果可以的话则该standby的状态保证不变,否则则需要re-enable。
    • 启动redo传送服务将redo传送给那些不需要re-enable的standby数据库。
  5. 如果是RAC环境则重启那些之前关闭的instance。

broker执行立即failover的过程

  1. 确认目标standby可用,不可用的话failover失败。RAC环境中将关闭standby的其他不参与的instance。
  2. 立即停止redo log apply或是sql apply,不管是否还有可恢复的数据,这样可能会造成数据丢失。
  3. 将目标standby转换成新的primary并打开到读写模式,并启动redo传送服务。

一个完全failover的例子

DGMGRL> failover to torclb
Performing failover NOW, please wait…
Failover succeeded, new primary is “torclb”
DGMGRL> show configuration

Configuration

Name: FSF
Enabled: YES
Protection Mode: MaxPerformance
Fast-Start Failover: DISABLED
Databases:
torcla – Physical standby database (disabled)
torclb – Primary database

Current status for “FSF”:
SUCCESS

从上面的状态我们可以看到此时的新standby是不可用的,处于disabled状态。


角色转换之后的数据库的启用

在角色转换之后我们可能还需要进行额外的操作来启用被禁用的数据库,操作已经data guard的类型不同需要启用数据库情况也不同。

转换操作 reinstate或recreate 有问题的primary数据库 重新启用没有参与failover的standby
switchover到物理standby 不需要其他操作 不需要其他操作
switchover到逻辑standby 不需要其他操作 所有物理standby需要recreate
完全failover到物理standby 如果启用了flashback而且retention足够的话可以reinstate,否则只能recreate 对于物理standby如果启用了flashback而且retention足够的话可以reinstate,否则只能recreate
对于逻辑standby必须recreate
完全failover逻辑standby 如果启用了flashback而且retention足够的话可以reinstate,否则只能recreate 所有standby都会被disabled,都需要recreate
立即failover到物理standby或逻辑standby 必须要recreate 所有standby都会被disabled,都需要recreate


reinstate操作

在broker中进行reinstate数据库操作只需要运行一个命令就行了,不过前提是配置了flashback以及足够的retention。

REINSTATE DATABASE db_unique_name;

基本步骤是:

  1. 重启数据库到mount状态
  2. 使用dgmgrl连接到primary数据库
  3. 运行REINSTATE DATABASE命令

下面对上一步failover之后的新standby做一次reinstate操作

DGMGRL> reinstate database torcla
Reinstating database "torcla", please wait...
Operation requires shutdown of instance "torcla" on database "torcla"
Shutting down instance "torcla"...
ORA-01109: database not open
 
Database dismounted.
ORACLE instance shutdown.
Operation requires startup of instance "torcla" on database "torcla"
Starting instance "torcla"...
ORACLE instance started.
Database mounted.
Continuing to reinstate database "torcla" ...
Reinstatemen to fdatabase "torcla" succeeded
DGMGRL> show configuration
 
Configuration
 
Name:                FSF
 
Enabled:             YES
 
ProtectionMode:     MaxPerformance
 
Fast-Start Failover: DISABLED
 
Databases:
    
torcla - Physical standby database
    
torclb - Primary database
 
Current status for "FSF":
SUCCESS

可以看到reinstate之后数据库torcla已经可以正常使用了。

 

参考至:http://www.dbabeta.com/2009/learn-data-guard-broker_role-transition.html

如有错误,欢迎指正

邮箱:czmcj@163.com

 

分享到:
评论

相关推荐

    Oracle Data Guard Broker 11g Release 2 (11.2)-290

    5. **红蓝切换(Switchover/Failover)**:Broker简化了主数据库与standby数据库之间的角色转换。Switchover是在计划内进行的,用于维护或升级,而Failover是在主数据库无法使用时进行的紧急操作。 6. **redo应用**...

    12c Data Guard配置手册-01

    对于监控和维护Data Guard环境,管理员还需要了解如何使用Oracle Data Guard Broker和Oracle Enterprise Manager等工具,以便于更直观和高效地管理Data Guard配置。 综上所述,该手册为IT专业人员提供了一套完整的...

    【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置

    Data Guard Broker 提供了一系列强大的命令,可以轻松地管理 Data Guard 环境中的数据库。例如: 1. **显示当前状态**: ```sql SHOW DATABASE; ``` 2. **执行切换操作**: ```sql SWITCHOVER DATABASE oradg11g...

    dataguard broker配置参考

    首先,Data Guard Broker允许管理员通过一个中心控制点来管理多个数据库实例,无论是主数据库还是备用数据库。它自动处理参数设置、角色转换和故障切换,确保在出现故障时能快速恢复服务。对于FSFO,它提供了一种...

    Oracle 10G Data Guard 资料--全面详细,绝对值得学习!!!

    Data Guard的主要组件包括主数据库(Primary Database)、备用数据库(Standby Database)以及Data Guard Broker,它们协同工作以实现数据的实时复制和故障切换。主数据库负责处理用户事务,而备用数据库则接收来自...

    Oracle Data Guard 部署

    Data Guard 可以通过命令行方式管理 primary 数据库或 standby 数据库,也可以通过 Data Guard broker 提供的专用命令行界面(DGMGRL),或者通过 OEM 图形化界面管理。 Data Guard 的优点包括:高可用性、灾难恢复、...

    ORACLE之Data Guard部署培训讲学.pdf

    - 使用Data Guard Broker进行集中管理和监控,自动化处理部分任务,如日志传输和角色转换。 10. **安全性与网络**: - 安全地通过TNS网络传输归档重做日志,确保数据安全。 - 需要定期验证备用数据库的完整性和...

    Data Guard10gR2中文翻译

    3. **角色转换**:在必要的时候,Data Guard 支持将备用数据库转换为主数据库,或是将主数据库转换为备用数据库。这种转换通常发生在计划内的维护操作或是非计划的故障转移场景中。 #### 三、Data Guard 的配置类型...

    oracle10gr2_data_guard.rar_data guard_oracle_oracle data guard

    Oracle Data Guard是Oracle数据库系统中一个强大的高可用性和灾难恢复解决方案。它提供了数据保护,确保在主数据库出现故障时能够迅速切换到备用数据库,从而保证业务连续性。在Oracle 10g Release 2(10gR2)中,...

    Oracle11g RAC 上安装和配置 Data Guard.pdf

    - **故障转移(Failover)**:当主数据库出现故障时,自动将备用数据库转换为主数据库。 以上是在 Oracle 11g RAC 环境中安装和配置 Data Guard 的详细步骤和注意事项。通过遵循这些步骤,可以有效地实现数据的最大...

    Data Guard10gR2 中文翻译

    Data Guard由一系列组件组成,包括物理 standby数据库、逻辑 standby数据库以及相应的管理工具。物理standby数据库与主数据库保持实时同步,而逻辑standby则允许在不影响主数据库运行的情况下进行数据转换。这些...

    Oracle Data Guard概念和管理10g版本2

    Oracle Data Guard是Oracle数据库系统中一个强大的高可用性和灾难恢复解决方案。它为Oracle数据库提供了一套全面的保护机制,确保在面临硬件故障、软件错误、自然灾害或其他潜在数据丢失的情况下,能够保持业务连续...

    Oracle Data Guard 11g完全参考手册

    1. **Data Guard角色**:Data Guard配置包括三种主要角色:主数据库(Primary Database)、备用数据库(Standby Database)和监视器(Monitor)。主数据库处理用户事务,而备用数据库接收并应用主数据库的redo日志,...

    Oracle Data Guard白皮书

    - **Oracle Data Guard 技术**:本文档讨论了 Oracle 数据库 10g 中的 Data Guard 技术及其如何成为企业业务连续性基础设施的关键组成部分。 #### 灾难的后果 - **中断的影响**:随着电子商务的发展,企业面临复杂...

    Oracle 11G RAC Data Guard 实施方案.docx

    (2)灾难恢复:在发生灾难时,Data Guard 可以快速地将备库转换为生产数据库,确保业务连续性。 (3)简化管理:Data Guard 可以自动地将数据从生产数据库同步到备库中,从而简化了数据库管理。 2. Data Guard ...

    Oracle Data Guard在塔河数字林业中的应用与实现.pdf

    3. **角色转换服务**:当生产数据库出现故障时,Data Guard可以快速将备用数据库提升为新的生产库,以最小化服务中断时间。这种角色转换是透明的,用户通常不会感知到变化。 4. **保护模式**:Data Guard提供了多种...

    Oracle Data Guard最佳实践

    Switchover是在计划内进行主备角色转换,而Failover则是在主数据库出现故障时自动或手动进行。Oracle9i、10g和11.2版本的文档分别详细阐述了不同版本下的最佳实践,包括如何准备、执行和验证这些操作。 理解并遵循...

    McGraw.Hill.Oracle.Data.Guard.11g.Handbook.Jul.2009.pdf

    Data Guard提供了一套完整的监控和管理工具,如Data Guard Broker,用于监控数据库的状态、配置参数和复制状态,帮助管理员更好地管理和维护Data Guard环境。 #### 7. 作者信息 手册由Larry Carpenter、Joe Meeks和...

    Data Guard技术文档

    五、Data Guard的挑战与优化 1. 网络延迟:重做日志的传输对网络质量有较高要求,优化网络配置可提高数据同步效率。 2. 性能影响:不同的保护模式对主数据库性能有一定影响,合理设置参数可以平衡保护与性能。 3. ...

    Data Guard Concepts and Administration 10g Release 2

    8. **Data Guard Broker**:是Oracle 10g引入的一个重要工具,它简化了Data Guard环境的管理和监控,可以集中管理多个standby数据库,并实现自动化操作。 9. **GoldenGate集成**:Oracle 10g的Data Guard也开始支持...

Global site tag (gtag.js) - Google Analytics