dg切换对应用透明的方法 oracle - CSDN
精华内容
参与话题
  • ORACLE DG概念及切换

    万次阅读 2019-01-15 16:02:46
    DG的原理: DG分为物理standy,逻辑standy 物理standy: 物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。它是直接应用REDO实现同步的。 逻辑standy: 逻辑STANDBY则不是...

    DG的原理:

    DG分为物理standy,逻辑standy

    物理standy:

    物理STANDBY提供与主数据库完全一样的拷贝(块到块),数据库SCHEMA,包括索引都是一样的。它是直接应用REDO实现同步的。

    逻辑standy:

    逻辑STANDBY则不是这样,在逻辑STANDBY中,逻辑信息是相同的,但物理组织和数据结构可以不同,它和主库保持同步的方法是将接收的REDO转换成SQL语句,然后在STANDBY上执行SQL语句。逻辑STANDBY除灾难恢复外还有其它用途,比如用于用户进行查询和报表。

    DG三种模式:

    最大保护模式(Maximum protection)  --性能不佳

    alter database set standby database to maximize protection;

    Primary Database上的每个事务的Redo日志必须在本地和Standby Database上都写入日志文件后才能提交,如果不能写入到Standby Database,Primary Database就会自动关闭(挂起)以防止数据丢失。

    最大可用性(Maximum Availability)

    Primary Database每个事务的Redo日志要写到本地和Standby Database中才能提交。

    这个和最大保护模式不同的是,如果写入到Standby Database失败,Primary Database不会自动关闭。这时Primary Database会自动转换为Maximum Performance模式,等待问题解决并且Standby Database再次和Primary Database同步之后,Primary Database会自动的转换为Maximum Availability。

    这种模式要求Standby Database必须配置Standby Redo log,而Primary Database必须配置为LGWR、SYNC、AFFIRM方式归档。

    最大性能(Maximum Performance)

    这个模式是缺省模式,他更加侧重对Primary Database的可用性不造成任何影响。

    Primary Database上的事务的Redo日志只要写到本地日志文件就可以提交,不必等待到Standby Database的传递完成。

    Primary Database的Redo流可以异步的发送到Standby Database。

    这种模式通过LGWR ASYNC或者ARCH实现,Standby Database也不要求使用Standby Redo Log。

    一、检查DG是否正常的四个方法

    1.看备库的告警日志,正在恢复的日志号是否对应得上

    2.看三个进程是否都已经启动

    SQL>select process from v$managed_standby

    主库中显示:

    PROCESS

    ---------

    ARCH

    ARCH

    ARCH

    ARCH

    备库中显示:ARCH、MRPO和RFS 表示正常

    3.先切换一次日志,再进到归档目录里,看两边的归档文件号是否对得上

    4.用命令查看两边归档是否对得上

    SQL> select max(sequence#) from v$archived_log where applied='YES';

    二、切换DG步骤

    关闭:先主库,后备机,开启的时候先开备库启动备库监听,再开主库

    1.先将主库切换成备库,然后将原主库启动到物理库的状态

    SQL> Alter database commit to switchover to physical standby with session shutdown;

    2.关闭主库

    SQL> shutdown immediate

    3.打开数据库nomount

    SQL> startup nomount

    4.更改主库为备库

    SQL> alter database mount standby database;

    SQL> alter database recover managed standby database disconnect from session;

    如果配置了 standby redo log 并需要启用实时同步则执行以下代码

    SQL>alter database recover managed standby database using current logfile disconnect from session;

    5.将备库切换成主库

    SQL> select switchover_status from v$database;

    SQL> select * from v$version where rownum<2;

    SQL> alter database commit to switchover to primary with session shutdown;

    如果备库还有未应用的日志则执行

    SQL>alter database recover managed standby database disconnect from session;

    SQL> shutdown immediate

    SQL> startup

    切换日志进行检查

    SQL> select max(sequence#) from v$log;

    SQL>select sequence#,applied from v$archived_log;

    SQL> alter system switch logfile;

     

    展开全文
  • HA/DG/RAC 三者的区别

    千次阅读 2010-08-14 16:04:00
    高可用性解决方案分为4种 (DG AR RAC HA): 一种是oracle提供的被用方法,Standby (=9i DataGuard) 一种是AR (高级复制Advanced Replication,在以前版本叫快照snapshot) 一种是oracle 并行...

    高可用性解决方案分为4种 (DG AR RAC HA):
    一种是oracle提供的被用方法,Standby (=9i DataGuard)
    一种是AR (高级复制Advanced Replication,在以前版本叫快照snapshot)
    一种是oracle 并行服务器8i的OPS (9i RAC,Real Application Cluster)
    一种是第三方HA解决方案(如Rose HA,故障切换时间是几分钟,也叫双机)

     

    各自应用的侧重点:
    HA 侧重于业务的自动接管,自动接管需要几分钟时间,且长期有一组Instance闲置,浪费资源,不能容灾。
    DG 侧重于容灾,独立存储,但两者数据不能做到实时同步。
    RAC侧重于负载均衡,但共享存储不能容灾。

     

    详细说明:
    HA 双机热备由两台计算机和一个共享存储设备构成,通过第三方软件(HA Rose等)实现切换,不需要做数据同步.

    DG Data Guard 是oracle的远程复制技术,由两个多两个以上的独立的数据库构成,他们各自有各自的存储,Oracle负责他们之间的切换和数据同步,它需要在异地有一套独立的系统,两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目录存储结构,以及数据的同步(其实也不是实时同的),这两套系统之间只要网络是通的就可以了,是一种异地容灾的解决方案。

    RAC 本地的高可用集群,RAC是多节点,每个节点一个INSTANCE,是保证应用的,只要有一个节点是正常运行的,就能连接到数据库,每个节点用来分担不同或相同的应用,以解决运算效率低下、单节点故障这样的问题,它是几台硬件相同或不相同的服务器,加一个SAN(共享的存储区域)来构成的。

     

    各自的应用:
    如是业务不要求24x7.可以考虑用dg.一台机器用于生成报表和查询..一台只用于一般的业务处理.dg主要用容灾.双机,RAC均是提供可用性,但他们实现的方法不同,数据库均放在共享设备上。
    双机同一时刻只能有一台主机接管,另一台待用,这种方式只能保护实例,不能保护db,而且备机长期处于闲置,对资源是一种极大的浪费!

    展开全文
  • oracle dg 状态检查

    万次阅读 2018-05-18 10:04:40
    先检查备库的归档日志同步情况 SELECT NAME,applied FROM v$archived_log; alter database recover managed standby database cancel;select thread#,sequence#,standby_dest,archived,applied,status from v$...

    先检查备库的归档日志同步情况 

    SELECT NAME,applied FROM v$archived_log; 

    alter database recover managed standby database cancel;

    select thread#,sequence#,standby_dest,archived,applied,status from v$archived_log order by 1,2;

    alter database recover managed standby database using current logfile disconnect from session;

    .在备库 查看gap

    1. select * from v$archive_gap;


    ALTER  DATABASE RECOVER MANAGED STANDBY  DATABASE DISCONNECT FROM SESSION;

    查看主库的基本信息:

    SYS@enmo1 hey~1->select open_mode,protection_mode,database_role,switchover_status from v$database;

    OPEN_MODE            PROTECTION_MODE             DATABASE_ROLE         SWITCHOVER_STATUS
    -------------------- ----------------------------- ------------------------ ------------------------
    READ WRITE           MAXIMUM PERFORMANCE      PRIMARY                      TO STANDBY

    查看备库的基本信息:

    SYS@enmo2 hey~2->select open_mode,protection_mode,database_role,switchover_status from v$database;

    OPEN_MODE                   PROTECTION_MODE             DATABASE_ROLE         SWITCHOVER_STATUS
    ------------------------- ----------------------------- ------------------------ ------------------------
    READ ONLY WITH APPLY MAXIMUM PERFORMANCE      PHYSICAL STANDBY      NOT ALLOWED

    备库应用日志保持和主库数据一致(如果不一致,执行如下语句应用日志)

    SYS@enmo2 hey~2->recover managed standby database using current logfile disconnect from session;
    Media recovery complete.

    SYS@enmo2 hey~2->recover managed standby database cancel;
    Media recovery complete.

    主库切换到备库角色并查看切换之后的状态为RECOVERY NEEDED

    SYS@enmo1 hey~1->alter database commit to switchover to physical standby with session shutdown;

    Database altered.

    SYS@enmo1 hey~1->shutdown abort;

    ORACLE instance started.

    Total System Global Area 830930944 bytes
    Fixed Size 2257800 bytes
    Variable Size 700451960 bytes
    Database Buffers 121634816 bytes
    Redo Buffers 6586368 bytes
    Database mounted.
    SYS@enmo1 hey~1->select switchover_status from v$database;

    SWITCHOVER_STATUS
    --------------------
    RECOVERY NEEDED

    切换应用日志,然后在查看切换状态为TO primary正常:

    SYS@enmo1 hey~1->recover managed standby database using current logfile disconnect from session;
    Media recovery complete.
    SYS@enmo1 hey~1->select switchover_status from v$database;

    SWITCHOVER_STATUS
    --------------------
    TO PRIMARY

    备库切主库:

    SYS@enmo2 hey~2->select open_mode,protection_mode,database_role,switchover_status from v$database;

    OPEN_MODE PROTECTION_MODE DATABASE_ROLE SWITCHOVER_STATUS
    -------------------- -------------------- ---------------- --------------------
    MOUNTED MAXIMUM PERFORMANCE PHYSICAL STANDBY TO PRIMARY

    SYS@enmo2 hey~2->alter database commit to switchover to primary with session shutdown;

    Database altered.

    SYS@enmo2 hey~2->alter database open;

    Database altered.

    SYS@enmo2 hey~2->select switchover_status,database_role from v$database;

    SWITCHOVER_STATUS DATABASE_ROLE
    -------------------- ----------------
    FAILED DESTINATION PRIMARY

    SYS@enmo2 hey~2->select open_mode,protection_mode,database_role from v$database;

    OPEN_MODE PROTECTION_MODE DATABASE_ROLE
    -------------------- -------------------- ----------------

    READ WRITE MAXIMUM PERFORMANCE PRIMARY


    二、备库不同步的问题检查方法

    1、检查主备两边的序号
    select max(sequence#) from v$log;   ---检查发现一致


    2、备库执行,查看是否有数据未应用
    select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;

    select SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIED from v$archived_log order by 1;

    3、检查备库是否开启实时应用
    select recovery_mode from v$archive_dest_status where dest_id=2;

    4、检查备库状态
    select switchover_status from v$database; --发现状态not allowed 

    3、看看进程MRP是否存在
     ps aux|grep mrp      --发现进程不存在

    4、如果不存在执行以下:
    alter database recover managed standby database using current logfile disconnect;

    alter database recover managed standby database disconnect from session;  --后台执行

    alter database recover managed standby database --前台执行,执行这个可以看到报错的情况

    如果有报错,查看alert日志和log.xml日志 

    5、验证是否正常
    select process,status from v$managed_standby;
    select process,status,sequence# from v$managed_standby;

    如果看到mrp0正常

    6、以上步骤处理好后,如果数据还不正常,接着处理

    关闭备库,接着处理:
    把主库上 undotbs01.dbf 文件,物理的重拷到备库机上以前undotbs01.dbf 所在目录下;

    $scp /data/oracle/oradata/voip/undotbs01.dbf   192.168.122.204:/data/oracle/oradata/voip

    再在主库上重新生成一个standby control file ,拷到备库机上相应目录下,

    alter database create standby controlfile as '/data/oracle/oradata/voip/qyqdg01.ctl'

    $scp /data/oracle/oradata/voip/qyqdg01.ctl   192.168.122.204:/data/oracle/oradata/voip
    $ mv qyqdg01.ctl  control01.ctl
    $ cp control01.ctl /data/oracle/flash_recovery_area/qyq/
    $cd /data/oracle/flash_recovery_area/qyq/
    $ mv control01.ctl  control02.ctl

    接着
    STARTUP NOMOUNT;
    ALTER DATABASE MOUNT STANDBY DATABASE;
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

    --------------------------------------
    session恢复完成后,重启打开备库;

    alter database open read only;






    展开全文
  • 有关DG的RFS进程不存在的解决办法

    千次阅读 2015-02-26 16:15:15
    当时有时候备库重新启动归档日志应用 时,发现主机不传日志过来,配置也没改过,网络也是通的,万分不解,查看备库的DG进程,发现没有RFS进程,主库切换日志不起作用。只好重新在主库上声明备机的相关参数,也不知道...
    起因是这样的:之前我们有一台不靠谱的某个数据库DG备机,老是隔一段时间网络就断掉,由于当时没做告警,总是隔个几天才有人检查日志时发现(值班人员不认真)。当时有时候备库重新启动归档日志应用 时,发现主机不传日志过来,配置也没改过,网络也是通的,万分不解,查看备库的DG进程,发现没有RFS进程,主库切换日志不起作用。只好重新在主库上声明备机的相关参数,也不知道哪个参数起作用,然后备库的RFS进程就起来了,也就没去总结。
    后来,又有一个数据库的DG备机问题更糟糕,由于是ESX的虚拟机(前任做的),隔段时间就重启在上面的所有虚拟机,包括那台DG备机。悲催的我总是得去处理下。在这过程中也重复发生前面的问题。只好在网上去查找问题,找了半天没找到,倒是在一篇文章里面看到说log_archive_dest_state_n这个参数有时候数据库不认,show paremeter 出来的参数不一定就是数据库认定的参数,所以必要时重新修改参数后在修改回来。抱着试一试的心态,在之后再发生RFS进程不存在的问题时,我就重新声明一遍log_archive_dest_state_n参数,先defer在enable,还真管用。
    总结经验下来:几乎所有重新启动归档日志应用 后,RFS进程不存在的问题都发生在主机与备机网络断开长时间后,也就是说主机很久都找不着备机了,所以我想是不是因为oracle在长时间找不到备机的情况下,自动的把重做日志传输进程LNS给停掉了,这样备机没有收到LNS进程的通知,自然不会启动RFS进程接收重做日志。而主机切换日志并不会使得主机去启动LNS进程。但当log_archive_dest_state_n参数变化时,主机会根据参数情况主动启动之前因为长时间连不上备机而停掉的LNS。
    而根据一些使用rman active duplicate做备机的方法对比发现,主机都是在声明log_archive_dest_state_n='enable'后,才开始传输重做日志的,所以利用声明log_archive_dest_state_n='enable'启动主库的LNS进程是一个靠谱的方法。
    以上是我的个人经验,不知道正不正确,实用就好,希望对大家有所帮助。
    展开全文
  • Oracle DG主备切换VIP

    千次阅读 2018-02-05 13:04:26
    在做DG主备切换时,为使应用端在不修改连接配置的情况下,正常连接DG数据库,方法有几种; 一是,应用端连接主机为主机名,... 本文为通过手动配置VIP的形式实现DG主备切换对应用透明;以下是配置过程: 1. Primary
  • oracle双机/RAC/Dataguard的区别

    千次阅读 2012-09-14 09:28:16
    高可用性解决方案分为4种 (DG、AR、RAC、HA): 一种是oracle提供的被用方法,Standby (=9i DataGuard) 一种是AR (高级复制Advanced Replication,在以前版本叫快照snapshot) 一种是oracle并行服务器8i的OPS (9i RAC...
  • Dataguard的使用试验(一)-- 主从切换一、如何主从的手动切换二、如何完成自动切换?一、 如何主从的手动切换1)在主数据库上:SQL> alter database commit to switchover to physical standby;Database altered....
  • 不同Oracle数据库之间的数据同步

    万次阅读 2017-04-19 15:11:55
    方法一:通过快照来实现 1 创建dblink 2 创建快照 Oracle快照原理及实现总结 Oracle数据库的快照是一个表,它包含有一个本地或远程数据库上一个或多个表或视图的查询的结果。对于中大型数据库,业务数据库里...
  • STANDBY一旦创建,DATAGUARD就会通过将主数据库(PRIMARY)的REDO传递给STANDBY数据库,然后在STANDBY中应用REDO实现数据库的同步。 有两种类型的STANDBY:物理STANDBY和逻辑STANDBY 物理STANDBY提供与主数据库完全...
  • Oracle 11g Dataguard搭建及知识梳理

    万次阅读 2018-04-01 19:37:09
    配置了一次dataguard,发现还挺麻烦,梳理了一些知识点,并记录下来。一.dataguard的三种模式最大性能模式(Maximum Performance):就是保证主库,备库数据不保证最大可用模式(Maximum Availability):...
  • Oracle 11g DG概念与进程详解

    万次阅读 2017-06-22 21:16:22
    RAC, Data Gurad, Stream 是Oracle 高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合。 他们各自的侧重点不同,适用场景也不同。 RAC 它的强项在于解决单点故障和负载均衡,因此RAC ...
  • Oracle Data Guard 重要配置参数

    千次阅读 2013-08-13 17:05:08
    Oracle Data Guard主要是通过为...对于Oracle DG的配置,我们可以通过Grid Control来完成,也可以通过Data Guard Broker以及SQL*Plus来完成。对于前两者方式可以在图形界面上完成,操作简单。而对于使用SQL*Plus命令行
  • Oracle 12c RAC 到单机实例 DATAGUARD搭建

    千次阅读 2016-10-15 10:32:03
    第二章:环境信息 2.1 系统平台 2.1.1 主机平台与版本 主机系统 ● HP-UX Itanium 11.31 主机数据库 ● 12.1.0.2 RAC 2.1.2 备机平台与版本 备机系统 ● HP-UX Itanium 11.31 备机数据库 ● 12.1.0.2 Single ...
  • Oracle Data Guard延迟的原因

    千次阅读 2017-04-01 16:57:11
    Oracle Data Guard中很可能出现延迟的情况,而数据一旦出现延迟就意味着丢数据。退一步来说丢数据总比数据乱了好,但是回过头来,能不丢数据但是丢了,这就有些说不过去了。 因为预防人为误操作等,可能有些环境中会...
  • 尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便。但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知其然不知其所以然,Dataguard的...
  • 使用不同颜色标识后台进程 全面了解oracle 备份和恢复机制, 参照oracle体系结构图解析进程(机构图文章有)
  • Redhat linux下安装oracle 10g 安装redhat5时要独立分配磁盘给SWAP,空间大小应该是内存大小*2,最好使用内存>1G的机器。 系统检查命令: # grep MemTotal /proc/meminfo ――检查内存大小 # grep SwapTotal /proc/...
  • Oracle11gR2下搭建DataGuard主备同步详解

    万次阅读 2016-05-13 18:26:17
    (PS:以下正文中以“//“开头的为注释行) 一,环境基本信息: 主库信息: 操作系统版本:CentOS release 6.5 ...Oracle版本信息: BANNER ----------------------------------------------------------------
  • 在blog:Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库 http://blog.csdn.net/tianlesoftware/archive/2011/03/08/6230498.aspx演示了11gR2 下duplicate from active database的例子。...
  • 起因是alert.log 里经常报 Thread 1 cannot allocate new ...这里仅仅补充一点:如果依靠增加DBWr进程数来解决,并不能缓解此问题,相反会增加日志切换频率,更容易报错。 下面就考虑以增加日志组和 修改日志组大小为
1 2 3 4 5 ... 20
收藏数 1,346
精华内容 538
热门标签
关键字:

dg切换对应用透明的方法 oracle