oracle11g dataguard完全手册3-failover active dataguard(完)

2024-03-21 18:18

本文主要是介绍oracle11g dataguard完全手册3-failover active dataguard(完),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      一般情况下执行failover都是主库已经game over。故障转移将备库转换为主库,但不把原主库(有故障,无法正常工作)切换为备库。当故障转移发生后,你必须重建主库,或者使用闪回数据库功能将主库回退到故障发生前,然后转换其为备库并启用日志应用。

执行failover有几个前提条件如下


   1.执行failover的前提
     (1)检查归档文件是否连续
  查询待转换 standby 数据库的 V$ARCHIVE_GAP 视图,确认归档文件是否连接:
  SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
  未选定行
  如果返回的有记录, 按照列出的记录号复制对应的归档文件到待转换的 standby 服务器。 这一步非常重
  要,必须确保所有已生成的归档文件均已存在于 standby 服务器,不然可能会数据不一致造成转换时报错。
  文件复制之后,通过下列命令将其加入数据字典:
  SQL>ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

     (2)检查归档文件是否完整
  分别在 primary/standby 执行下列语句:
  SQL> select distinct thread#,max(sequence#) over(partition by thread#) a from v$archived_log;
  该语句取得当前数据库各线程已归档文件最大序号,如果 primary 与 standby 最大序号不相同,必须将
  多出的序号对应的归档文件复制到待转换的 standby 服务器。 不过既然是 failover, 有可能 primary 数据库此
  时已经无法打开,甚至无法访问,那只好听天由命了,但是如果可以到mounted,则可以传输归档日志。
  所以应该在primary机器crashed之前做好准备。
  加入此时结果是:
  THREAD#          A
  ---------- ----------
    1         87
               从库最大为87,主库也执行,如果也是87则ok,如果不一致需要scp 然后执行register

    (3)如果当前备库是处于最大保护(maximum protection)模式,要进行故障转移,必须先修改为最大性能
     (maximum performance)模式。修改方法:
              SQL> alter database set standby database to maximize performance;

    2,。执行切换
      (1)在备库停止日志应用:
                 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
      (2)结束应用任何日志:
                 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
                     或者:
                 SQL> alter database recover managed standbydatabase finish force;
                 FORCE 关键字将会停止当前活动的 RFS 进程,以便立刻执行 failover。
      (3)转换备库为主库
                SQL> alter database commit to switchover to primary with session shutdown;
                SQL> alter database open;

  注意这个时候主库已经不在dataguard中了。

     3.使用闪回重建数据库
        (1)获得原备库转换为主库时的 SCN。查询现主库102:
                  SQL> SELECT to_char(STANDBY_BECAME_PRIMARY_SCN) from V$DATABASE;
        (2)在原主库101上执行:
                   SQL> SHUTDOWN IMMEDIATE;
            SQL> STARTUP MOUNT;
          SQL> FLASHBACK DATABASE TO SCN &standby_became_primary_scn;输入之前查询到的SCN号
    如果没有开始闪回日志,最后一条命令会报错 ORA-38726: Flashback database logging is not on.,
    无法进行闪回。你就需要重新从新主库复制数据,重建原主库为备库。
    如果命令成功执行,原主库101就可以使用新主库102的日志进行恢复。将原主库101转换成物理备库,并启动日志应用进程:
                 SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
                 SQL> SHUTDOWN IMMEDIATE;
                  SQL> STARTUP MOUNT;
                  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
            
     4.客户端故障转移
        我很喜欢的一个功能是,当主备切换或故障转移发生后,客户端能够自动重连。在你的系统里,做下述实验,看结果如何。
        orcl 是主库,orcldg 是备库。客户端使用支持故障转移的 orcl_RW 服务名。
               首先,用 SYSTEM 用户和 orcl_RW 服务名在 SQL*Plus 里登录主库:
          SQL> connect system@orcl_rw
          SQL> select db_unique_name from v$database;

               查询应该返回主库名 orcl。然后做一次主备切换,在将备库转换为主库 
        alter database commit to switchover to primary with session shutdown; 这一步时,主备库均处于 MOUNT 状态。
        然后执行查询:
         SQL> select db_unique_name from v$database;

               这时查询应该挂住,这是因为客户端正在尝试寻找主库,但当前又没有可用的主库。然后继续完成主备切换。
                当主备切换完成后,客户端应该会重连并重新执行查询,查询完成后成功返回结果 orcldg,因为现在主库已经切换为 orcldg,
  不再是orcl。
  
        另一个很酷的测试方法是,执行一个执行时间非常长的查询,当查询结果返回,屏幕一直滚动时开始主备切换。
        你应该会看到屏幕暂停滚动一段时间,当切换完成后,又会继续滚动。

   5.活动数据卫士(active dataguard)
               活动数据卫士是 11g 的新功能,它允许你的物理备库在应用日志时处于只读打开状态。这明显是一个很有用的功能。
        能够允许主库有一个物理备库作为备份,并能在保持备库数据更新的同时读取备库,这是一个很好的功能。
        调整备库为“READ ONLY WITH APPLY”状态,这体现的便是Oracle 11g物理Active Data Guard功能中的“Active”真实含义。
        在实际工作中,这个功能非常好用,经常用于检查实时数据同步情况。

        (1)查看备库openmode
               sql>select open_mode from v$database;--MOUNTED
        (2)取消备库的自动恢复
                 sql>alter database recover managed standby database cancel;
                 sql>alter database open;
                 sql>select open_mode from v$database; --这时候为READ ONLY
        (3)read only下备库恢复
                 sql>alter database recover managed standby database using current logfile disconnect;
                 sql>select open_mode from v$database; --这时为READ ONLY WITH APPLY


        6.11g standby的一些变化:
           (1)standby数据库可以直接执行
               startup    --就是read only打开数据库
               startup mount  --就是mount standby数据库
   
          (2)read only的情况下可以执行managed recover standby命令。
              SQL>startup
              SQL>alter database recover managed standby database disconnect;

        7.关于备份的引申
          有了 Data Guard,你的 RMAN 备份在主库或者备库都可以执行。但既然你已经配置了物理备库,你应该减轻点主库的负载。
   基本上,能在主库执行的标准的备份命令或脚本,也能在备库执行,但也有几个值得注意地方。这些 Oracle 官方文档都有,
   我只提几个关键的事情:
                 你应该使用恢复目录(Recovery Catalog)。这是因为主库需要知道备库已经存在了哪些备份文件。你不需要在恢复目录中
   注册备库,恢复目录能认出它是备库。
                 你不能备份备库的控制文件,所以不要在主库关掉所有的备份,至少需要在主库备份控制文件和参数文件。
                 备份和恢复可以写一整篇文章,我只是讲下我是如何配置备份的,让你能从这里开始,修改并形成自己的策略。
   测试下,确认你能从你当前实现的备份设置中恢复。在运行备份前,你需要配置一些基本的东西。
  (1)确认开启控制文件和 spfile 自动备份:
     RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

  (2)根据你的需要设置备份文件保留策略:
     RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

  (3)如果一个文件已经有备份,并且检查点 SCN 相同,就不备份:
     RMAN> CONFIGURE BACKUP OPTIMIZATION ON;

  (4)只在主库的归档日志已经在备库应用(或者配置为已经传输到备份)后才删除:
     RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;

  (5)允许 RMAN 在主备间重新同步:
    RMAN> CONFIGURE DB_UNIQUE_NAME P10AC CONNECT IDENTIFIER ‘JED’;
    RMAN> CONFIGURE DB_UNIQUE_NAME P11AC CONNECT IDENTIFIER 'JED2';

                在主库我仍然备份归档日志。首先,在主备库都备份归档提供了冗余。其次,当发生需要恢复的事件(比如数据文件下线等)后,
  我在主库已经有归档了。我需要删除过期的归档,以清理磁盘空间。
  在 Data Guard 环境下,不能使用标准的在单机删除归档的命令,两者有一点小区别。因为我们必须使用恢复目录,
  我创建了一个全局脚本(global script):
  create global script dg_primary_arch
  {
      backup archivelog all;
      delete noprompt archivelog all completed before 'sysdate-.5';
      delete noprompt backup of archivelog all completed before 'sysdate-2';
  }

               在备库我运行标准的全库和归档备份,并删除过期的备份集。在 Data Guard 环境下,将备份归档包含在备份全库的命令里,
        会经常导致报错 RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process。
        为避免此报错,你应该将备份归档放在单独的命令里。我还是创建一个全局脚本:
  create global script dg_standby_full
  {
      backup database plus archivelog;
      delete noprompt archivelog all completed before 'sysdate-1';
      delete noprompt obsolete;
  }

              另外一个有用的技巧是,如果可能,使用共享文件系统进行备份。这样你在两台服务器上都可以访问备份文件。
       这样,当你需要恢复时,你不需要从另一台服务器上复制文件了。但如果使用共享文件系统的话,你的归档备份虽然有两份,
       却都放在一个文件系统里,如果硬盘出现故障,两份备份都会丢失。


       参考文档:
       1.《Oracle 11g Data Guard 物理备库快速配置指南》
       2.《三思笔记:一步一步学dataguard》
       3.《Red_HatOracle11gDataGuard配置宝典》
       4.其他网络资料

这篇关于oracle11g dataguard完全手册3-failover active dataguard(完)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/833497

相关文章

HDU 2159 二维完全背包

FATE 最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停的杀怪做任务。久而久之xhd开始对杀怪产生的厌恶感,但又不得不通过杀怪来升完这最后一级。现在的问题是,xhd升掉最后一级还需n的经验值,xhd还留有m的忍耐度,每杀一个怪xhd会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,xhd就不会玩这游戏。xhd还说了他最多只杀s只怪。请问他能

zoj 1721 判断2条线段(完全)相交

给出起点,终点,与一些障碍线段。 求起点到终点的最短路。 枚举2点的距离,然后最短路。 2点可达条件:没有线段与这2点所构成的线段(完全)相交。 const double eps = 1e-8 ;double add(double x , double y){if(fabs(x+y) < eps*(fabs(x) + fabs(y))) return 0 ;return x + y ;

linux dlopen手册翻译

名称 dlclose, dlopen, dlmopen 打开和关闭一个共享对象 简介 #include <dlfcn.h>void *dlopen(const char*filename, int flags);int dlclose(void *handle);#define _GNU_SOURCE#include <dlfcn.h>void *dlmoopen(Lmid_t lm

代码随想录算法训练营Day37|完全背包问题、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)

完全背包问题                  和01背包最大区别就是一个物品可以重复放多次,因此遍历空间时可以从前往后。 import java.util.*;public class Main{public static void main (String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt

uva674(完全背包)

题意: 有5种硬币1,5,10,25,50,;现在随意的给出一个价钱,问你有几种组合方式! 输入11 输出4 1+...+1(10个),5+(6*1),5+5+1,  10+1(共4种) 思路; 满足完全背包思想,状态转移方程:dp[i+num[k]] += dp[i](dp[i]为组合成i的不重复种数,num[k]分别为1,5,10,25,50)不能合在一起转移,否则会导致重复!

Git命令文本手册

git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" # 配置用户名git config --global user.email "xxx@xxx.com"

222.完全二叉树的节点个数

(写给未来遗忘的自己) 题目: 代码: class Solution {public:int countNodes(TreeNode* root) {queue<TreeNode*>node_que;if(root==nullptr) return 0;node_que.push(root);int result;while(!node_que.empty()){int layer_s

SMIDI-SAP接口配置手册

目录 一、 SAPERP相关接口配置(必要条件) 1. SAP ERP 配置 1.1 配置

五一假期出行必备的高科技手册

今天小编看了眼朋友圈,发现无节操的同学真是太多了,你们出去玩就好了,为啥要发图呢……各种晒,简直要虐死上班狗啊。 不过掐指一算,小编期盼已久的五一马上就要来了。抱着拯救同样期待假期出行同胞们的想法,小编给大家准备了一份出行旅游必备的高科技手册,助大家防火防水防(yi)搭(yue)讪( pao),下面将会开启高(zhuang)冷(BI)模式,如有雷同,纯属故意。 攻略篇 攻略在手,说走就走。

合宙Air780E硬件设计手册02

上文文主要介绍了Air780E的硬件设计中的的应用接口部分。 上文链接:Air780E低功耗4G模组硬件设计手册01-CSDN博客 在本文我们会继续介绍Air780E的硬件设计介绍。  二、应用接口 2.10  SIM卡接口 Air780E支持2路SIM卡接口,支持ETSI和IMT-2000卡规范,支持1.8V和3.0VUSIM卡。 以满足双SIM 卡切换的需求。 2.10.1. S