zoukankan      html  css  js  c++  java
  • Oracle 11g Data Guard Redo应用服务

    本篇主要介绍物理STANDBY数据库使用Real-Time Apply应用Redo数据,使用介质恢复来保持主数据库和备用数据库的数据同步。

    一 Real-Time Apply Service


    LGWR进程同步传输Redo数据的过程如图,首先,用户将事务变化写入重做日志缓冲区,满足一定条件后启动LGWR进程将Redo数据写入本地在线重做日志文件,同时LGWR进程启动了LNSn(LGWR Network Server Process)进程把Redo数据传输到STANDBY数据库端,在STANDBY数据库端的RFS(Remote File Server)进程接收Redo并写入STANDBY重做日志文件,如果此时启用了实时应用则使用SQL应用或Redo应用将Redo数据应用到STANDBY数据库,如果没有启动实时应用,则将redo数据写入STANDBY重做日志文件,在redo数据写入STANDBY数据库前主数据库端的事务不会结束。

                    


    二 应用Redo数据至物理STANDBY数据库


    默认情况下,重做数据通过归档重做日志文件被应用。当执行 Redo应用时,物理STANDBY数据库使用Real-Time Apply特性直接从通过RFS写入的STANDBY Redo log应用redo 。

    1、启动Redo Apply
    在物理STANDBY数据库上启动应用服务,需确保物理STANDBY数据库启动并处于Mount状态,然后使用Alter database recover managed standby database语句启动Redo应用。

    可以指定Redo应用作为前台会话或者后台进程运行,并激活实时应用。
    • 在前台启动Redo Apply
    SQL> alter database recover managed standby database;
    如果以前台会话启动,在恢复被另一个会话取消之前,控制权不会返回到命令提示符。
    • 在后台启动Redo Apply
    SQL> alter database recover managed standby database disconnect;
    
    Database altered.
    
    SQL> select process,status ,sequence# from v$managed_standby;
    
    PROCESS   STATUS	SEQUENCE#
    --------- ------------ ----------
    RFS	  IDLE			0
    ARCH	  CLOSING	       67
    ARCH	  CONNECTED		0
    ARCH	  CLOSING	       74
    ARCH	  CLOSING	       73
    RFS	  IDLE			0
    MRP0	  WAIT_FOR_LOG	       75
    RFS	  IDLE		       75
    
    8 rows selected.
    这个语句启动一个独立的服务器进程,并立即将控制权返回给用户,当管理的恢复进程在后台进行恢复的时,执行恢复语句的前台进程可以继续执行其他任务,这并没有断开当前的SQL会话。
    • 启动实时应用
    SQL> alter database recover managed standby database using current logfile;
    2、停止Redo Apply
    SQL> alter database recover managed standby database cancel;
    
    Database altered.
    3、监控Redo Apply
    • V$database
    SQL> select protection_mode,protection_level,database_role,switchover_status from v$database;
    
    PROTECTION_MODE      PROTECTION_LEVEL	  DATABASE_ROLE    SWITCHOVER_STATUS
    -------------------- -------------------- ---------------- --------------------
    MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE  PHYSICAL STANDBY NOT ALLOWED
    • V$managed_standby
    SQL> select process,status,thread#,sequence#,block#,blocks from v$managed_standby;
    
    PROCESS   STATUS	  THREAD#  SEQUENCE#	 BLOCK#     BLOCKS
    --------- ------------ ---------- ---------- ---------- ----------
    RFS	  IDLE			0	   0	      0 	 0
    ARCH	  CLOSING		1	  75	   2048       1792
    ARCH	  CONNECTED		0	   0	      0 	 0
    ARCH	  CLOSING		1	  74	  43008        625
    ARCH	  CLOSING		1	  73	      1        132
    RFS	  IDLE			0	   0	      0 	 0
    MRP0	  APPLYING_LOG		1	  76	   1869     102400
    RFS	  IDLE			1	  76	   1865 	 5
    
    8 rows selected.
    • V$archived_log
    SQL> select thread#,sequence#,first_change#,next_change# from v$archived_log;
       THREAD#  SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
    ---------- ---------- ------------- ------------
    	 1	   74	    1200127	 1212597
    	 1	   75	    1212597	 1213494
    • V$log_history
    SQL> select thread#,sequence#,first_change#,next_change# from v$log_history;
    
       THREAD#  SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
    ---------- ---------- ------------- ------------
    	 1	    1	     925702	  956418
    	 1	    2	     956418	  956928
    	 1	    3	     956928	  971683
    • V$dataguard_status
    SQL> select message from v$dataguard_status;
    
    MESSAGE
    ----------------------------------------------------------------------------------------------------------------------
    ARC0: Archival started
    ARC1: Archival started
    ARC2: Archival started
    ARC2: Becoming the 'no FAL' ARCH
    ARC1: Becoming the heartbeat ARCH
    ARC1: Becoming the active heartbeat ARCH
    Managed Standby Recovery starting Real Time Apply
    RFS[1]: Assigned to RFS process 3134
    RFS[1]: Database mount ID mismatch [0xfd4b2aab:0xfd4be4d0] (4249561771:4249609424)
    RFS[1]: Not using real application clusters
    ARC3: Archival started
    ...........
    • V$archive_dest
    SQL> select dest_id,applied_scn from v$archive_dest where target='STANDBY';


  • 相关阅读:
    php json_encode数据格式化2种格式[]和{}
    PHP实现执行定时任务的几种思路详解
    PHP json_encode 转换成空对象和空数组
    程序员职业病的种类和预防
    清空数据表并重置索引
    实现PHP中的 JSON_ENCODE 不转义中文汉字的方法
    pchart生成折线图
    自定义皮肤啦
    honeyview——本地图片浏览器
    使用potplayer视频播放器的录制屏幕功能
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975711.html
Copyright © 2011-2022 走看看