`
mikixiyou
  • 浏览: 1098696 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:353058
社区版块
存档分类
最新评论

Data Guard之逻辑备库的正常切换(logical standby switchover)

阅读更多

Oracle Data Guard 用来保护Oracle数据,可提供最高级别的数据保护和可用性的同时,使Oracle数据库保持最卓越的性能。它的运行遵循一个原则:传输重做数据,然后应用重做数据。

它分成两种实现方式,分别为逻辑备库(logical standby)和物理备库(physical standby),用于不同的应用场景。如逻辑备库用于数据库的读写分离,物理备库用于数据库异地灾备。

 

在一运行logical standby 模式的Data Guard 环境中,主库是RAC 数据库,备用库是单实例的数据库。

 

Oracle 提供了两种将逻辑备库转换为主库的方式,分别为灾难转换failover 和正常转换switchover

 

Data Guard 之逻辑备库的故障切换(failover) (链接:  http://mikixiyou.iteye.com/blog/1530120 )一文中,我们介绍了如何在主库出现故障时将逻辑备库转换为主库的操作方法。

 

在本文中,我们将介绍正常地将逻辑备库转换为主库的操作方法。

 

( miki 西游 @mikixiyou 文档:原文链接 http://mikixiyou.iteye.com/blog/1542922 )

 

有这样一种需求,将数据库从A 服务器迁移至B 服务器,使用logical standby 方式迁移。在迁移完成后,可以检查B 服务器上的主库是否满足应用要求。如果不能,可以快速切回去。这点是failover 方式无法做到的,也是数据备份与恢复方式无法实现的。

我们马上介绍如何将单实例的逻辑备用库转换成正常的主库,而RAC 的数据库又转换成逻辑备用库的操作过程。

第一步,我们分析主库和备用库的环境。

主库是多节点的RAC 数据库,备库是单实例的逻辑灾备库,操作系统版本都是一致的,使用数据库文件存储方式都是ASM 。这点避免了一些文件转换的麻烦。在逻辑备用库的配置中,建议采用一致的存储方式。

 

第二步,我们开始做逻辑备库切换准备工作。

先将主库上所有的数据库客户端连接关闭。这里采用一种最有效的方式,关闭数据库。

srvctl stop database -d xxxdb -o immediate

再将实例1 启动起来,禁用其他实例的线程

alter database disable thread 2;

因为备用库只有一个线程,所以主库也要限制。在主库RAC 切换成备用库后,可以再启动起来。

Oracle 对此做了解释,如下:

If the primary database is a RAC database, ensure that all but one instance are shut down, and the corresponding threads are disabled before initiating the switchover. Similarly, if the logical standby database is a RAC database, ensure that all instances except the one where SQL Apply is running are shut down, and the corresponding threads are disabled before initiating the switchover. You can reenable the threads and start the instances once the switchover operation has completed successfully. Although the instances are shut down, the role change will be automatically propagated to these instances when they are restarted.

 

第三步,检查主库上SWITCHOVER_STATUS 的状态值,这里会有两种值,分别是  TO STANDBY   SESSIONS ACTIVE 。如果是其他的值,这里就要暂停一下,解决掉这个问题才能继续下一步。

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

SESSIONS ACTIVE

 

第四步,将主库设置为logical standby 的切换准备阶段

SQL>  ALTER DATABASE PREPARE TO SWITCHOVER TO LOGICAL STANDBY;

Database altered.

检查主库上SWITCHOVER_STATUS 的状态值,应该是PREPARING SWITCHOVER

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

PREPARING SWITCHOVER

 

第五步,将逻辑备库设置为主库的切换准备阶段

SQL> ALTER DATABASE PREPARE TO SWITCHOVER TO PRIMARY;

Database altered.

执行结束后,V$DATABASE.SWITCHOVER_STATUS 的值应该是PREPARING SWITCHOVER

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

PREPARING SWITCHOVER

 

第六步,在主库上查询切换状态字段SWITCHOVER_STATUS 的值

在备库上做了切换准备工作后,主库上切换状态字段值应该变成了TO LOGICAL STANDBY

SQL> r

  1* SELECT SWITCHOVER_STATUS FROM V$DATABASE

SWITCHOVER_STATUS

--------------------

TO LOGICAL STANDBY

注意,到这一步,我们还有放弃的机会。如果这时决定放弃转换,可以执行下面的操作。

在主库和备库上都执行这个SQL

ALTER DATABASE PREPARE TO SWITCHOVER CANCEL;

 

第七步,将主库转换成逻辑备用库

在主库上执行切换操作

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;

Database altered.

 

第八步,检查备库的切换状态字段值,正确的值是TO PRIMARY

在备库上执行这个SQL

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

 

SWITCHOVER_STATUS

--------------------

TO PRIMARY

 

第九步,将备库切换成主库

在备库上执行这个SQL

A LTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

到这一步,我们已经完成了切换工作。主库变成了备库,备库变成了主库,已经是一个新的data guard 环境。

但是,要使这个DATAGUARD 环境真正运行起来,主库和备库的初始化参数需要做一些修改。

将原来的备库上的初始化参数修改一下, 修改为

alter system set fal_client='' scope=memory;

alter system set fal_server='' scope=memory;

alter system set log_archive_dest_1='location=+VG2/' scope=memory;

alter system set log_archive_dest_2='SERVICE=SWITCH_READER LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=XXXDB' scope=memory;

 

将原来的主库上的初始化参数修改一下, 修改为

alter system set fal_client='SWITCH_STANDBY' scope=memory;

alter system set fal_server='SWITCH_PRIMARY' scope=memory;

alter system set log_archive_dest_1='LOCATION=+VG2/ VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=XXXdB' scope=memory;

alter system set log_archive_dest_2='LOCATION=+LOGVG/ VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=XXXDB' scope=memory;

新的备库,就是原来的主库,要加上standby logfile

ALTER DATABASE ADD STANDBY LOGFILE group 21 ('+VG2/standby_redo21.log')  SIZE 52428800 reuse;

ALTER DATABASE ADD STANDBY LOGFILE group 22 ('+VG2/standby_redo22.log')  SIZE 52428800 reuse;

ALTER DATABASE ADD STANDBY LOGFILE group 23 ('+VG2/standby_redo23.log')  SIZE 52428800 reuse;

 

 

        这种转换方式,可以用于数据库的数据迁移工作。

 

本文链接: http://mikixiyou.iteye.com/blog/1542922 欢迎转载,请注明出处和作者,谢谢合作。

 

 

 

0
1
分享到:
评论

相关推荐

    oracle10gr2_data_guard.rar_data guard_oracle_oracle data guard

    1. 创建备库:使用DBMS_RAC_ADMIN.SYNC_INSTANCE或RMAN命令创建物理备库,或者通过Logical Standby和Datapump创建逻辑备库。 2. 数据同步:通过Redo Transport Services传输redo日志,备库应用这些日志进行数据更新...

    Oracle 12c 部署Data Guard,Switchover和Failover

    逻辑备用数据库(Logical Data Guard)是Data Guard中的一种类型,它可以在不同的数据库版本和平台上配置,适用于需要跨不同环境进行数据保护的场景。搭建逻辑备用数据库涉及多个步骤,包括停止备用数据库日志应用、...

    oracle data guard文档

    5. Logical Standby:逻辑备用数据库,通过SQL重播实现数据同步,支持数据转换和报表查询。 四、Oracle Data Guard的配置和管理 1. 创建Data Guard配置:使用DBMS_LOGMNR_D和DBMS_REDO包进行初始化,设置redo传输...

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

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

    Data Guard10gR2 中文翻译

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

    oracle容灾技术(Data Guard)

    它允许用户在网络环境下对生产数据库进行完整的在线备份,并能够确保在主数据库发生故障时,备库能够迅速接管业务,从而最大程度地降低数据丢失的风险。 #### 二、Data Guard 的新特性(9i R2) 在Oracle 9i R2...

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

    3. Switchover和Failover:Switchover是在主备数据库之间非破坏性的角色交换,Failover是当主数据库不可用时,备用数据库接管。 4. Managed Standby Databases:自动管理Data Guard配置,简化维护。 5. Data Guard ...

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

    - **逻辑备用数据库(Logical Standby Database)**:通过SQL Apply过程将redo日志转换为SQL语句再应用到备用数据库,支持在线查询。 - **远距离备用数据库(Distant Standby Database)**:位于远离主数据库的...

    Data Guard10gR2中文翻译

    - **Logical Standby**:逻辑备用数据库允许在备用上执行SQL查询,因为它接收并解析redo数据,而不是直接应用。 - **Snapshot Standby**:快照备用数据库仅用于定期数据备份,不支持实时应用redo日志。 2. **保护...

    PacktPub.Oracle.Data.Guard.11gR2.Administration.Beginners.Guide

    Data Guard保证了数据的零丢失,并支持物理备用数据库(physical standby database)和逻辑备用数据库(logical standby database)两种工作模式。 本书详细阐述了Data Guard的两种主要的工作模式,以及它们各自的...

    Oracle11G DataGuard相同SID物理Standby搭建手册

    - **配置逻辑切换**:通过`ALTER DATABASE RECOVER MANAGED STANDBY DATABASE`命令开始同步进程,启用Logical Standby Redo Apply。 4. **redo日志传输** - **Physical Standby的redo应用**:通过Fast ...

    ocp资料(oracle必学)

    3. **逻辑 standby数据库(Logical Standby Database)**:与物理 standby 类似,但可以进行在线查询,因为redo日志被转换为SQL语句再应用。 4. **最大保护模式(Maximum Protection Mode)**:确保数据零丢失,但在...

    大牛教你配置Oracle 11g Active Dataguard

    在不影响主数据库性能的情况下,Active Data Guard还支持使用Logical Standby功能进行报表查询,将读取压力转移到standby数据库,提高整体系统的性能。 9. **安全性和审计**: 配置Active Data Guard时,也要考虑...

    dataguard 参考指南

    3. Switchover与Failover:Switchover是计划内的主备角色互换,Failover则是因主库故障的应急切换。 4. SQL Apply:用于处理逻辑 standby 数据库,解析redo日志并执行SQL语句来更新备用数据库。 5. Dataguard Broker...

    oracle 官方培训课程dataguard

    4. **Failover和Switchover**:学习如何在主备数据库之间安全地进行故障切换和角色切换,以确保业务连续性。 5. **监控和维护**:了解使用`DGMGRL`命令行工具和Enterprise Manager Cloud Control进行监控和管理的...

    dataguard 图文手册

    - **Switchover/Failover**:在必要时可安全地将角色从主库切换到备库。 5. **Logical Standby Databases**: - 不是数据文件的简单副本,而是通过SQL Apply处理redo日志,适用于需要进行复杂转换或分析的场景。 ...

    转载的文章《DataGuard交流讲义.pdf》

    - **逻辑备用(Logical Standby)**:逻辑备用接收重做日志,并使用 SQL 应用程序将其转换为 SQL 语句,然后执行这些语句以更新备用数据库。这种方式适用于需要实时查询的场景。 #### 五、快照备用数据库 **快照...

    ORACLE dataguard

    2. **Standby Database(备用数据库)**:它可以是物理副本(Physical Standby)或逻辑副本(Logical Standby),用于接收并应用来自主数据库的重做日志,以保持与主数据库的数据一致性。 - **Physical Standby...

    ADG指导手册.docx

    - **逻辑备用数据库 (Logical Standby):** - 通过接收并转换来自主数据库的日志文件为SQL语句,在备用数据库上执行这些SQL语句来实现同步。 - **物理备用数据库 (Physical Standby):** - 通过接收并应用主数据库的...

    如何实现Oracle数据库的读写分离

    在Oracle Data Guard中,可以通过`ALTER DATABASE`命令将数据库转换为Logical Standby模式,并使用`SWITCHOVER`或`FAILOVER`操作在主库和Standby库之间切换,以应对故障转移或维护需求。 通过这种方式,Oracle...

Global site tag (gtag.js) - Google Analytics