zoukankan      html  css  js  c++  java
  • Oracle Dataguard failover 操作步骤

    在11g里面,Oracle认为最理想的情况是,虽然Oracle数据库不能打开,但是可以启动到 mount状态。
    Mount状态之所以重要,就在于如果可以到这个阶段,控制文件control_file就可以读取 归档日志和在线日志的位置信息。这也就意味着最大可能性的进行数据恢复,避免数据损失。

    在11g中,推出了日志手工flush的功能,来弥补日志数据没有传递的问题。

    10g版本下没有办法自动flush redo。但是可以从Primary目录中,将日志拷贝到Standby端,手工去加载。

    1 主库续传日志到备库

    如果主库可以到mount状态,在11G里可以通过下面的命令,将未传送到standby端的日志传送过去:

    alter system flush redo to 'standby_db_unique_name';
    

    2 备库查询归档缺失

    既然是failover,主库已经处于down状态。查看备库的状态:

    SQL> select name,open_mode,database_role,switchover_status from v$database;
    
     NAME  OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS
     ----- -------------------- ---------------- --------------------
     ORCL  READ ONLY            PHYSICAL STANDBY NOT ALLOWED
    

    查看是否存在未传送的归档:

    select thread#, low_sequence#, high_sequence# from v$archive_gap;
    no rows selected
    

    如果没有查到结果,说明归档在standby 端没有缺失。那么数据上基本不会有丢失,即使丢失,也只有 redo buffer 中未来得及刷出的部分可能会丢失。

    如果 有未传送至备库的归档 , 将其复制到standby 后进行注册

    alter database register physical logfile '/arch/oradata/dg01/1_109900.arc';

    3 备库取消数据复制

    将备库切换为主库.此时,我们不能通过cancel来取消数据同步,而是通过finish。 这个操作,实际上是关闭了MRP进程。可以通过alert日志来确认。

    alter database recover managed standby database cancel;
    alter database recover managed standby database finish;
    # 终止进程后,查看备库的状态,如果是to_primary 说明可以进行切换
    select name,open_mode,database_role,switchover_status from v$database;
    

    4 备库切换为主库

    # 切换
    alter database commit to switchover to primary [with session shutdown];
    # 查看切换后状态
    select open_mode,database_role,switchover_status from v$database;
    
    OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS
    -------------------- ---------------- --------------------
    READ WRITE           PRIMARY          FAILED DESTINATION
    

    5 查看新主库角色切换时的scn

    通过查询这个时间点儿的SCN,确定主备之间数据一致的点。

    SELECT to_char(STANDBY_BECAME_PRIMARY_SCN) from V$DATABASE;

    6 原主库切换为备库

    将原主库启动,并闪回到上一步查询的scn点.

    FLASHBACK DATABASE TO SCN &standby_became_primary_scn;
    #将原主库转换成物理备库,并启动日志应用进程
    ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
    

    7 启动备库数据同步

    alter database recover managed standby database using current logfile disconnect from session;
  • 相关阅读:
    html基础之html标签
    unittest框架(二)单元测试及测试报告
    unittest框架(一)用例管理
    python实现http接口自动化测试(完善版)
    python学习笔记(二十九)为什么python的多线程不能利用多核CPU
    深入理解JVM(三)——配置参数
    深入理解JVM(二)——内存模型、可见性、指令重排序
    深入理解JVM(一)——基本原理
    做了两款数据库监控工具,打算在近期开源
    电商系统中的商品模型的分析与设计—续
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/10639081.html
Copyright © 2011-2022 走看看