精华内容
参与话题
问答
  • DATAGUARD原理(一)--特点与优势

    千次阅读 2013-12-16 16:59:39
    从ORACLE9i开始,oracle standby database改成DATA GUARD,在这种模式中,开始支持三种不同的数据保护模式,并开始采用LGWR 对数据的传送而不是以往的ARCH,而且增加了一个新的后台进程叫DMON 监控数据的同步,在11...

        从ORACLE9i开始,oracle standby database改成DATA GUARD,在这种模式中,开始支持三种不同的数据保护模式,并开始采用LGWR 对数据的传送而不是以往的ARCH,而且增加了一个新的后台进程叫DMON 监控数据的同步,在11g之前最多支持9个节点的同时复制,从Oracle 9.2.0开始,开始支持逻辑standby。


    11g能够支持多少备库,通过下面的sql你就能知道了:
    SQL> show parameter log_archive_dest


    Data guard是软件级别的冗余,不需要额外购买任何组件,因此能在对主数据库影响很小的情况下,实现主备数据库的同步,而主备机的数据差异只在在线日志部分,所以被不少企业作为了数据容灾方案。到了oracle 11g版本,备库可以直接已read only方式打开。 这样可以做一些查询工作,减轻出库的压力。


    使用Data Guard技术有如下好处:
    (1)DG是一种有效的disaster recovery 和high availability的解决方案。 可以很容易的在主库和备库之间进行switchover 和 failover的切换。 如果主库出现特殊情况,也能将停机时间降到最小。
    (2)在最大保护的级别下,可以做到零数据丢失的保护,即使是一些不可预知的灾难。 并且standby 数据库也可以提供一种预防data corruption 和用户误操作的安全保护。
    (3)DG 提供了3种级别的保护:maximum protection,maximum availability,maximum performance。 用户可以根据数据保护级别的需要和性能需求综合考虑选择对应的模式。
    (4)如果主库和备份之间的的连接通信中断,比如网络故障,那么主库的归档日志就不能传送到备库。 一旦主备库之间通信重新连接,那么这些丢失的归档文件就是GAP。 DG 会自动检测GAP,如果发现有GAP,会自动把这些丢失的归档传送到备库,实现主备库的同步,这一切操作都不需要DBA的参与,自动实现。
    (5)当启用fast-start failover后,如果primary 出现故障,那么DG broker会自动把standby 转换成primary。这个过程自动实现,无需要DBA 干预。
    (6)Data Guard broker技术提供了一个用户图形界面和命令界面来自动管理和配置DG

    展开全文
  • 本套课程讲解Oracle 11gR2 RAC+DG(RAC)ADG备库,属于企业中的高端应用场景,企业中经常使用的一种方案,即Oracle高可用解决方案RAC+高安全数据容灾解决方案Dataguard
  • Oracle11g 搭建DataGuard

    万次阅读 2018-11-08 18:03:23
    一、安装环境: 名称 主库 备库 主机名 ora11g ora11gs 操作系统 Redhat6.5_64位 Redhat6.5_64位 IP 192.168.186.134 192.168.186.137 数据库版本 Oracle 11.2.0.4.0 ... ...

    一、安装环境:

    名称 主库 备库
    主机名 ora11g ora11gs
    操作系统 Redhat6.5_64位 Redhat6.5_64位
    IP 192.168.186.134 192.168.186.137
    数据库版本 Oracle 11.2.0.4.0 Oracle 11.2.0.4.0
    ORACLE_BASE /u01/app/oracle /u01/app/oracle
    ORACLE_HOME /u01/app/oracle/product/11.2.0/dbhome_1 /u01/app/oracle/product/11.2.0/dbhome_1
    ORACLE_SID orcl orcl
    归档模式
    数据库安装 安装数据库软件,创建监听,并建库 安装数据库软件,创建监听,但不建库

    二、主库配置:

    1、开启归档并强制日志模式:

    开归档步骤不在这里赘述,归档开启后如下图:

    强制日志模式:

    alter database force logging;
    SQL> select name,log_mode,force_logging from v$database;
    
    NAME	  LOG_MODE     FOR
    --------- ------------ ---
    ORCL	  ARCHIVELOG   YES

    2、创建standby redolog日志组:

    原则:

    1standby redo log的文件大小与primary 数据库online redo log 文件大小相同

    2standby redo log日志文件组的个数依照下面的原则进行计算:

           Standby redo log组数公式>=(每个instance日志组个数+1)*instance个数

           假如只有一个节点,这个节点有三组redolog

           所以Standby redo log组数>=(3+1)*1 == 4

        所以至少需要创建4Standby redo log

    查看当前线程与日志组的对应关系及日志组的大小:

    SQL> select thread#,group#,bytes/1024/1024 from v$log;
    
       THREAD#     GROUP# BYTES/1024/1024
    ---------- ---------- ---------------
    	 1	    1		   50
    	 1	    2		   50
    	 1	    3		   50
    

    如上,这里有三组redo log,所以至少需要创建4组Standby redo log,大小均为50M:

    alter database add standby logfile group 4('/u01/app/oracle/oradata/orcl/standbyredo01.log') size 50m;
    
    alter database add standby logfile group 5('/u01/app/oracle/oradata/orcl/standbyredo02.log') size 50m;
    
    alter database add standby logfile group 6('/u01/app/oracle/oradata/orcl/standbyredo03.log') size 50m;
    
    alter database add standby logfile group 7('/u01/app/oracle/oradata/orcl/standbyredo04.log') size 50m;

    查看standby 日志组的信息: 

    SQL> select group#,sequence#,status, bytes/1024/1024 from v$standby_log;
    
        GROUP#  SEQUENCE# STATUS	 BYTES/1024/1024
    ---------- ---------- ---------- ---------------
    	 4	    0 UNASSIGNED	      50
    	 5	    0 UNASSIGNED	      50
    	 6	    0 UNASSIGNED	      50
    	 7	    0 UNASSIGNED	      50
    

     3、创建主库密码文件:

    su - oracle
    orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle force=y

    4、 配置spfile文件:

    查看spfile的路径:

    SQL>  show parameter spfile;
    
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    spfile				     string	 /u01/app/oracle/product/11.2.0
    						 /dbhome_1/dbs/spfileorcl.ora
    

    用spfile创建一个pfile,用于修改:

    create pfile='/tmp/initorcl.ora' from spfile;

    修改pfile文件:

    vim /tmp/initorcl.ora

    ---------------------------------------------------------------------------------------------------------------------------------------------------------
    orcl.__db_cache_size=637534208
    orcl.__java_pool_size=16777216
    orcl.__large_pool_size=33554432
    orcl.__oracle_base='/u01/app/oracle'
    orcl.__pga_aggregate_target=671088640
    orcl.__sga_target=989855744
    orcl.__shared_io_pool_size=0
    orcl.__shared_pool_size=268435456
    orcl.__streams_pool_size=16777216
    *.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
    *.audit_trail='db'
    *.compatible='11.2.0.4.0'
    *.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
    *.db_block_size=8192
    *.db_domain=''
    *.db_name='orcl'
    *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
    *.db_recovery_file_dest_size=4385144832
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
    *.memory_target=1653604352
    *.open_cursors=300
    *.processes=150
    *.remote_login_passwordfile='EXCLUSIVE'
    *.undo_tablespace='UNDOTBS1'
    *.db_unique_name='orclpr'
    *.fal_client='orclpr'
    *.fal_server='orcldg'

    *.standby_file_management='AUTO'
    *.log_archive_config='DG_CONFIG=(orclpr,orcldg)'
    *.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archivelog'
    *.log_archive_dest_2='SERVICE=orcldg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg'
    *.log_archive_dest_state_1='ENABLE'
    *.log_archive_dest_state_2='ENABLE'

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

    复制pfile文件到spfile:

    shutdown immediate;
    create spfile from pfile='/tmp/initorcl.ora';
    startup;

     5、修改监听文件,添加静态监听:

    vi $ORACLE_HOME/network/admin/listener.ora
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.186.134)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = orcl)
          (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
          (SID_NAME = orcl)
        )
      )
    
    
    ADR_BASE_LISTENER = /u01/app/oracle
    
    SAVE_CONFIG_ON_STOP_LISTENER = ON

    重启监听服务:

    lsnrctl stop
    lsnrctl start

    6、编辑网络服务名配置文件tnsnames.ora:

    vi $ORACLE_HOME/network/admin/tnsnames.ora
    orcldg =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.186.137)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )
    
    orclpr =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.186.134)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
        )
      )

    tnsping测试:

    三、备库配置:

    1、将主库中的密码文件、pfile文件、监听文件复制到备库中:

    cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs
    scp orapworcl 192.168.186.137:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/
    
    scp /tmp/initorcl.ora 192.168.186.137:/tmp/
    
    cd /u01/app/oracle/product/11.2.0/dbhome_1/network/admin
    scp listener.ora 192.168.186.137:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/
    scp tnsnames.ora 192.168.186.137:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/

    2、配置spfile文件:

    修改pfile文件:

    vim /tmp/initorcl.ora

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

    orcl.__db_cache_size=637534208
    orcl.__java_pool_size=16777216
    orcl.__large_pool_size=33554432
    orcl.__oracle_base='/u01/app/oracle'
    orcl.__pga_aggregate_target=671088640
    orcl.__sga_target=989855744
    orcl.__shared_io_pool_size=0
    orcl.__shared_pool_size=268435456
    orcl.__streams_pool_size=16777216
    *.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
    *.audit_trail='db'
    *.compatible='11.2.0.4.0'
    *.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
    *.db_block_size=8192
    *.db_domain=''
    *.db_name='orcl'
    *.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
    *.db_recovery_file_dest_size=4385144832
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
    *.memory_target=1653604352
    *.open_cursors=300
    *.processes=150
    *.remote_login_passwordfile='EXCLUSIVE'
    *.undo_tablespace='UNDOTBS1'
    *.db_unique_name='orcldg'
    *.fal_client='orcldg'
    *.fal_server='orclpr'

    *.standby_file_management='AUTO'
    *.log_archive_config='DG_CONFIG=(orclpr,orcldg)'
    *.log_archive_dest_1='location=/u01/app/oracle/oradata/orcl/archivelog'
    *.log_archive_dest_2='SERVICE=orclpr LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orclpr'
    *.log_archive_dest_state_1='ENABLE'
    *.log_archive_dest_state_2='ENABLE'

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

    复制pfile文件到spfile:

    create spfile from pfile='/tmp/initorcl.ora';
    shutdown immediate;
    startup nomount;

    3、修改监听文件:

    vi $ORACLE_HOME/network/admin/listener.ora

     

    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = orcl)
          (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) 
          (SID_NAME = orcl)
        )
      )
    
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.186.137)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
    
    ADR_BASE_LISTENER = /u01/app/oracle

     重启监听服务:

    lsnrctl stop
    lsnrctl start

    4、tnsping测试:

     

    5、手工创建所需的目录:

    su - oracle
    mkdir -p /u01/app/oracle/admin/orcl/adump
    mkdir -p /u01/app/oracle/admin/orcl/dbdump
    mkdir -p /u01/app/oracle/admin/orcl/pfile
    mkdir -p /u01/app/oracle/oradata/orcl
    mkdir -p /u01/app/oracle/fast_recovery_area/orcl
    mkdir -p /u01/app/oracle/oradata/orcl/archivelog

    6、启动备库到nomount:

    shutdown immediate;
    startup nomount;

    7、利用RMAN在主库上执行,将主库恢复到备库上:

    rman target sys/password@orclpr auxiliary sys/password@orcldg
    
    duplicate target database for standby from active database nofilenamecheck;

    恢复过程如下:

    [oracle@ora11gs ~]$ rman target sys/123.com@orclpr auxiliary sys/123.com@orcldg

    Recovery Manager: Release 11.2.0.4.0 - Production on Thu Nov 8 15:30:39 2018

    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

    connected to target database: ORCL (DBID=1509509845)
    connected to auxiliary database: ORCL (not mounted)

    RMAN> duplicate target database for standby from active database nofilenamecheck;

    Starting Duplicate Db at 08-NOV-18
    allocated channel: ORA_AUX_DISK_1
    channel ORA_AUX_DISK_1: SID=134 device type=DISK

    contents of Memory Script:
    {
       backup as copy reuse
       targetfile  '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapworcl' auxiliary format 
     '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapworcl'   ;
    }
    executing Memory Script

    Starting backup at 08-NOV-18
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=20 device type=DISK
    Finished backup at 08-NOV-18

    contents of Memory Script:
    {
       backup as copy current controlfile for standby auxiliary format  '/u01/app/oracle/oradata/orcl/control01.ctl';
       restore clone controlfile to  '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl' from 
     '/u01/app/oracle/oradata/orcl/control01.ctl';
    }
    executing Memory Script

    Starting backup at 08-NOV-18
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting datafile copy
    copying standby control file
    output file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f tag=TAG20181108T153017 RECID=3 STAMP=991668618
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    Finished backup at 08-NOV-18

    Starting restore at 08-NOV-18
    using channel ORA_AUX_DISK_1

    channel ORA_AUX_DISK_1: copied control file copy
    Finished restore at 08-NOV-18

    contents of Memory Script:
    {
       sql clone 'alter database mount standby database';
    }
    executing Memory Script

    sql statement: alter database mount standby database

    contents of Memory Script:
    {
       set newname for tempfile  1 to 
     "/u01/app/oracle/oradata/orcl/temp01.dbf";
       set newname for tempfile  2 to 
     "/u01/app/oracle/oradata/orcl/db_temp.dbf";
       switch clone tempfile all;
       set newname for datafile  1 to 
     "/u01/app/oracle/oradata/orcl/system01.dbf";
       set newname for datafile  2 to 
     "/u01/app/oracle/oradata/orcl/sysaux01.dbf";
       set newname for datafile  3 to 
     "/u01/app/oracle/oradata/orcl/undotbs01.dbf";
       set newname for datafile  4 to 
     "/u01/app/oracle/oradata/orcl/users01.dbf";
       set newname for datafile  5 to 
     "/u01/app/oracle/oradata/orcl/example01.dbf";
       set newname for datafile  6 to 
     "/u01/app/oracle/oradata/orcl/db_test.dbf";
       set newname for datafile  7 to 
     "/u01/app/oracle/oradata/orcl/db_test1.dbf";
       set newname for datafile  8 to 
     "/u01/app/oracle/oradata/orcl/db_test11.dbf";
       set newname for datafile  9 to 
     "/u01/app/oracle/oradata/orcl/db_test12.dbf";
       backup as copy reuse
       datafile  1 auxiliary format 
     "/u01/app/oracle/oradata/orcl/system01.dbf"   datafile 
     2 auxiliary format 
     "/u01/app/oracle/oradata/orcl/sysaux01.dbf"   datafile 
     3 auxiliary format 
     "/u01/app/oracle/oradata/orcl/undotbs01.dbf"   datafile 
     4 auxiliary format 
     "/u01/app/oracle/oradata/orcl/users01.dbf"   datafile 
     5 auxiliary format 
     "/u01/app/oracle/oradata/orcl/example01.dbf"   datafile 
     6 auxiliary format 
     "/u01/app/oracle/oradata/orcl/db_test.dbf"   datafile 
     7 auxiliary format 
     "/u01/app/oracle/oradata/orcl/db_test1.dbf"   datafile 
     8 auxiliary format 
     "/u01/app/oracle/oradata/orcl/db_test11.dbf"   datafile 
     9 auxiliary format 
     "/u01/app/oracle/oradata/orcl/db_test12.dbf"   ;
       sql 'alter system archive log current';
    }
    executing Memory Script

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    renamed tempfile 1 to /u01/app/oracle/oradata/orcl/temp01.dbf in control file
    renamed tempfile 2 to /u01/app/oracle/oradata/orcl/db_temp.dbf in control file

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    executing command: SET NEWNAME

    Starting backup at 08-NOV-18
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
    output file name=/u01/app/oracle/oradata/orcl/system01.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:03:16
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
    output file name=/u01/app/oracle/oradata/orcl/sysaux01.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:03:29
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf
    output file name=/u01/app/oracle/oradata/orcl/example01.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:56
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
    output file name=/u01/app/oracle/oradata/orcl/undotbs01.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:55
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00007 name=/u01/app/oracle/oradata/orcl/db_test1.dbf
    output file name=/u01/app/oracle/oradata/orcl/db_test1.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00006 name=/u01/app/oracle/oradata/orcl/db_test.dbf
    output file name=/u01/app/oracle/oradata/orcl/db_test.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/db_test11.dbf
    output file name=/u01/app/oracle/oradata/orcl/db_test11.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
    output file name=/u01/app/oracle/oradata/orcl/users01.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00009 name=/u01/app/oracle/oradata/orcl/db_test12.dbf
    output file name=/u01/app/oracle/oradata/orcl/db_test12.dbf tag=TAG20181108T153029
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    Finished backup at 08-NOV-18

    sql statement: alter system archive log current

    contents of Memory Script:
    {
       switch clone datafile all;
    }
    executing Memory Script

    datafile 1 switched to datafile copy
    input datafile copy RECID=3 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/system01.dbf
    datafile 2 switched to datafile copy
    input datafile copy RECID=4 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
    datafile 3 switched to datafile copy
    input datafile copy RECID=5 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
    datafile 4 switched to datafile copy
    input datafile copy RECID=6 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/users01.dbf
    datafile 5 switched to datafile copy
    input datafile copy RECID=7 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/example01.dbf
    datafile 6 switched to datafile copy
    input datafile copy RECID=8 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/db_test.dbf
    datafile 7 switched to datafile copy
    input datafile copy RECID=9 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/db_test1.dbf
    datafile 8 switched to datafile copy
    input datafile copy RECID=10 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/db_test11.dbf
    datafile 9 switched to datafile copy
    input datafile copy RECID=11 STAMP=991669293 file name=/u01/app/oracle/oradata/orcl/db_test12.dbf
    Finished Duplicate Db at 08-NOV-18

    恢复完成!

    过程中若报错如下:

    DBGSQL:     TARGET> begin :fhdbi := dbms_rcvcat.getDbid; end;
    DBGSQL:        sqlcode = 6550
    DBGSQL:         B :fhdbi = 32767
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of Duplicate Db command at 11/08/2018 15:22:28
    RMAN-05501: aborting duplication of target database
    RMAN-03015: error occurred in stored script Memory Script
    ORA-06550: line 1, column 17:
    PLS-00201: identifier 'DBMS_RCVCAT.GETDBID' must be declared
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored

    说明使用了catalog,但是在连接的时候没有指定catalog,需要用下面的连接方式:

    rman target sys/123.com@orclpr auxiliary sys/123.com@orcldg nocatalog

    8、 登陆备库并查看数据库当前状态:

    [oracle@ora11gs ~]$ sqlplus / as sysdba

    SQL*Plus: Release 11.2.0.4.0 Production on Thu Nov 8 15:45:34 2018

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.


    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> select status from v$instance;

    STATUS
    ------------
    MOUNTED

    RMAN恢复完直接就是mount状态。

    9、备库启动日志应用:

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

    Database altered.

    SQL> set pagesize 100;
    SQL>  select sequence#,applied from v$archived_log order by 1;

     SEQUENCE# APPLIED
    ---------- ---------
        76 YES
        77 YES
        78 YES

    10、分别查看主库和备库的归档序列号是否一致:

    先在主库手动切换一下日志再查看:

    SQL> alter system switch logfile;

    System altered.

    SQL> archive log list;
    Database log mode           Archive Mode
    Automatic archival           Enabled
    Archive destination           /u01/app/oracle/oradata/orcl/archivelog
    Oldest online log sequence     78
    Next log sequence to archive   80
    Current log sequence           80

    再在备库上查看:

     SQL> archive log list;
    Database log mode           Archive Mode
    Automatic archival           Enabled
    Archive destination           /u01/app/oracle/oradata/orcl/archivelog
    Oldest online log sequence     78
    Next log sequence to archive   0
    Current log sequence           80

    11、查看备库中各文件如下:

    [root@ora11gs orcl]# ll
    total 2001444
    drwxr-xr-x. 2 oracle oinstall      4096 Nov  8 15:47 archivelog
    -rw-r-----. 1 oracle oinstall   9781248 Nov  8 15:48 control01.ctl
    -rw-r-----. 1 oracle oinstall  10493952 Nov  8 15:47 db_test11.dbf
    -rw-r-----. 1 oracle oinstall   5251072 Nov  8 15:47 db_test12.dbf
    -rw-r-----. 1 oracle oinstall  52436992 Nov  8 15:47 db_test1.dbf
    -rw-r-----. 1 oracle oinstall  33562624 Nov  8 15:47 db_test.dbf
    -rw-r-----. 1 oracle oinstall 328343552 Nov  8 15:47 example01.dbf
    -rw-r-----. 1 oracle oinstall 692068352 Nov  8 15:47 sysaux01.dbf
    -rw-r-----. 1 oracle oinstall 786440192 Nov  8 15:47 system01.dbf
    -rw-r-----. 1 oracle oinstall 125837312 Nov  8 15:47 undotbs01.dbf
    -rw-r-----. 1 oracle oinstall   5251072 Nov  8 15:47 users01.dbf
    [root@ora11gs orcl]# ll archivelog/
    total 5848
    -rw-r-----. 1 oracle oinstall 5109248 Nov  8 15:47 1_76_981729112.dbf
    -rw-r-----. 1 oracle oinstall  530432 Nov  8 15:47 1_77_981729112.dbf
    -rw-r-----. 1 oracle oinstall  344064 Nov  8 15:47 1_78_981729112.dbf

    至此,过程完成!

     

    展开全文
  • Oracle DataGuard介绍

    千次阅读 2017-09-05 09:10:26
    dg参数详解: log_archive_dest_2=’location=+archive valid_for=(all_logfiles,all_roles) db_unique_name=pydb’;//本地归档路径 log_archive_dest_3=’service=stydb valid_for=(online_logfiles,primary_role...

    在默认情况下,redo传输服务使用arcn进程发送redo,不过arcn归档进程只支持最高性能的保护模式,如果备库处于其他保护模式,就必须使用lgwr传输redo数据。
    Maximum Availability模式
    最高可用性(Maximum availability):这种模式在不影响Primary数据库可用前提下,提供最高级别的数据保护策略。其实现方式与最大保护模式类似,也是要求本地事务在提交前必须至少写入一台Standby数据库的Standby Redologs中,不过与最大保护模式不同的是,如果出现故障导致Standby数据库无法访问,Primary数据库并不会被Shutdown,而是自动转为最高性能模式,等Standby数据库恢复正常之后,Primary数据库又会自动转换成最高可用性模式。

    Maximum protection/AVAILABILITY模式必须满足以下条件:
    (1)Redo Archival Process: LGWR
    (2)Network Tranmission mode: SYNC
    (3)Disk Write Option: AFFIRM
    (4)Standby Redo Logs: Yes
    (5)standby database type: Physical Only

    即Standby Database 必须配置Standby Redo Log,而Primary Database必须使用LGWR,SYNC,AFFIRM 方式归档到Standby Database.
    如:
    SQL> alter system set log_archive_dest_2=’service=orcl_st lgwr sync AFFIRM’;

    注意: 主库的保护模式修改之后,备库的模式也会改变,和主库保持一致。

    在此对LGWR 进程的SYNC 方式做下说明:
    (1)Primary Database 产生的Redo 日志要同时写道日志文件和网络。也就是说LGWR进程把日志写到本地日志文件的同时还要发送给本地的LNSn进程(Network Server Process),再由LNSn(LGWR Network Server process)进程把日志通过网络发送给远程的目的地,每个远程目的地对应一个LNS进程,多个LNS进程能够并行工作。
    (2)LGWR 必须等待写入本地日志文件操作和通过LNSn进程的网络传送都成功,Primary Database 上的事务才能提交,这也是SYNC的含义所在。
    (3)Standby Database的RFS进程把接收到的日志写入到Standby Redo Log日志中。
    (4) Primary Database的日志切换也会触发Standby Database 上的日志切换,即Standby Database 对Standby Redo Log的归档,然后触发Standby Database 的MRP或者LSP 进程恢复归档日志。

       因为Primary Database 的Redo 是实时传递的,于是Standby Database 端可以使用两种恢复方法:
       实时恢复(Real-Time Apply): 只要RFS把日志写入Standby Redo Log 就会立即进行恢复;
       归档恢复: 在完成对Standby Redo Log 归档才触发恢复。
    

    Primary Database默认使用ARCH进程,如果使用LGWR进程必须明确指定。使用LGWR SYNC方式时,可以同时使用NET_TIMEOUT参数,这个参数单位是秒,代表如果多长时间内网络发送没有响应,LGWR 进程会抛出错误。

    最大性能模式:
    当dg处于最大性能模式,主库提交事务,发生checkpoint动作,会触发LGWR一次写磁盘操作,当redolog达到条件后会触发ARCn归档操作,归档路径是log_archive_dest_n规定的路径,ARCn进程会触发archivelog 传输动作,ARCn把主库archivelog日志传输给备库的RFS(remote file system)进程,由RFS进程将传输过来的日志写入到standby redolog,直接由MRP(redo apply)或者LSP(sql apply)进程直接应用standby redolog同步数据库(如果配置了standby redolog)。如果没配置standby redolog,直接由RFS写入到备库的归档日志路径,然后由MRP(redo apply)或者LSP(sql apply)进程直接应用redolog同步数据库。

    这里写图片描述

    dg 主库进程:

    SQL> select process,status,thread#,sequence#,block#,blocks from v$managed_standby;
    
    PROCESS   STATUS          THREAD#  SEQUENCE#     BLOCK#     BLOCKS
    --------- ------------ ---------- ---------- ---------- ----------
    ARCH      CLOSING               2       9698      94209       2034
    ARCH      CLOSING               1      11022          1       1411
    ARCH      CLOSING               1      11019          1        261
    ARCH      CLOSING               2       9697          1        163
    LNS       WRITING               1      11033     420893          1
    

    dg 备库进程

    SQL>  select process,status,thread#,sequence#,block#,blocks from v$managed_standby;
    
    PROCESS   STATUS          THREAD#  SEQUENCE#     BLOCK#     BLOCKS
    --------- ------------ ---------- ---------- ---------- ----------
    ARCH      CONNECTED             0          0          0          0
    ARCH      CONNECTED             0          0          0          0
    ARCH      CLOSING               1      11032      53248        282
    ARCH      CONNECTED             0          0          0          0
    RFS       IDLE                  0          0          0          0
    RFS       IDLE                  1      11033     420959          1
    MRP0      WAIT_FOR_LOG          1      11033          0          0
    
    7 rows selected.

    如果dg不是处于最大性能模式,主库传输redolog到备库并不是由ARCn而是由LGWR来完成redolog传出任务,主库不必等到redolog发生归档就可以直接传输到备库(因为就不需要归档,也不传输archivelog),备库的LGWR进程会选择一个standby redolog去接收主库redolog传输过来的日志,如果备库没有创建standby redolog文件,则standby 数据库会自动在默认的路径下创建一个归档日志,替代standby redolog文件。当主库有redo数据产生,主库会根据log_archive_dest_n参数的 sync或async属性来同步或异步来传输日志到standby数据库。
    log_archive_dest_n参数属性:
    sync:同步传输redo数据到备库,意味着主库产生的redo数据必须实时传输到备库之后主库才能进行下一步操作,主库产生的redo数据由LNSn(LGWR Network Server processes)进程发送至备库,备库的RFS进程将接受到的redo数据写入standby redolog中。需要注意的是在此期间主库事务会一直保持,直到LGWR SYNC属性的log_archive_dest_n接收完成,如果由于网络或者其他什么原因到值备库无法接收到redolog数据,那么主库将会一直等待直至报错,所以此种场景下需要设置NET_TIMEOUT属性。
    async:异步传输redo数据到备库,主库产生的redo数据会先记录在redolog中,然后在传输到备库
    这里写图片描述

    这里写图片描述
    valid_for:规定传输内容,需要设置两个属性redo_log_type、database_type,默认值为valid_for=(all_logfiles,all_roles)
    redo_log_type:可设置为 online_logfile、standby_logfile和all_logfiles
    database_role:可设置为primary_role、standby_role和all_roles。
    reopen:指向规定的目的地归档日志失败,在规定时间内重新发送。
    alternate:指定一个替补的归档目的地,当主归档路径发生错误时,可以把redolog数据写到另外一个路径。
    例如:
    log_archive_dest_1=’location=/desk1 alternate=log_archive_dest_2’
    log_archive_dest_2=’location=/desk2’
    log_archive_dest_state=’alternate’
    上述参数设置归档路径/desk1,当/desk1无法完成归档时将自动尝试向/desk2写归档。如果设置了reopen参数,则先尝试在规定的时间内发送数据,如果在规定时间没没有归档成功则尝试向备用路径归档。
    max_failure:用来指定最大失败尝试次数。

    dg参数详解:
    log_archive_dest_2=’location=+archive valid_for=(all_logfiles,all_roles) db_unique_name=pydb’;//本地归档路径
    log_archive_dest_3=’service=stydb valid_for=(online_logfiles,primary_role) db_unique_name=stydb’;//远程归档路径
    log_file_name_covert=’+DATA/pydb/’,’+DATA/stydb/’;//主–备库日志文件传输路径转换
    db_file_name_convert=’+DATA/pydb/’,’+DATA/stydb’;//主–备数据文件传输路径转换
    standby_file_management=’auto’;//备库角色传输日志,创建数据文件为数据库自动控制。
    fal_client=’rac1’,’rac2’;//发生故障转移,客户端为自己。指定客户端Net服务器名
    fal_server=’jhdb_dg’;//发生故障转移,服务端为对方。指定服务端Net服务器名
    db_name=’jhdb’//保持同一个dataguard中db_name一致,
    db_unique_name=’pydb’;//一个数据库唯一名字,RAC中节点名字应保持一致,dg中主备库应区分开来。
    log_archive_config=’dg_config=(pydb,stydb)’;//该参数用来控制从远端接受或发送redolog数据,通过此参数来控制参与dg的所有db_unique_name的成员。
    remote_login_passwordfile=’exclusive’;//远程登录方式,官方推荐设置为exclusive或shared,确保一个dg中所有的库的sys一致,强制使用密码文件来验证口令。
    fal_server=’stydb’;//指定一个Net server服务名,fal是fetch archive log的缩写,一般是发生角色转换时,获取redolog的服务端是哪个,一般填对端的tnsnames名称。
    fal_client=’pydb’;// 指定一个Net server服务名,fal是fetch archive log的缩写,一般是发生角色转换时,获取redolog的客户端是哪个,一般填对端的tnsnames名称。
    db_file_name_convert=’remote_file_path’,’local_file_path’;//standby数据库的数据文件路径与primary数据库路径不一致时,可以通过此参数来控制让其自动转换,前面的值表示转换前的路径, 表示转换后的路径。
    log_file_name_convert=’remote_log_path’,’local_log_path’;//
    standby_file_management=’auto’;//如果primary数据库文件发现修改,备库自动管理相应文件,不需要手动维护。可以自动维护主备库绝大多数DML操作(文件重命名、改变路径,redolog文件删除或添加除外)。

    注意:
    db_file_name_convert、log_file_name_convert是做主备切换时用到,这两参数要重启后才能生效。
    为了文件存储格式的,这两参数的值是成对出现的。
    在ASM的RAC中不要更改db_unique_name的值,因为ASM的文件存储方式是按些值存放的。
    更多请参考 http://blog.csdn.net/liqfyiyi/article/details/52127121

    展开全文
  • Oracle dataguard 正常切换和应急切换

    万次阅读 2012-08-27 16:56:26
    Oracle dataguard 正常切换和应急切换 oracle dataguard提供异地容灾方案,能有效的防止单点故障和提供高可用技术,这里介绍dataguard正常主备切换和应急切换(应急切换模拟主库出现问题无法还原,备库脱离...
    Oracle dataguard 正常切换和应急切换


    oracle dataguard提供异地容灾方案,能有效的防止单点故障和提供高可用技术,这里介绍dataguard正常主备切换和应急切换(应急切换模拟主库出现问题无法还原,备库脱离dataguard接管主库对外提供服务)


    1)Oracle dataguard环境搭建

    传送门:Linux 安装oracle10g 配置dataguard 介绍和步骤 http://blog.csdn.net/w63667329/article/details/7890417
    续上节环境:
    pridb 172.25.56.149
    stydb 172.25.56.150

    2)正常主备切换(switchover


    主库pridb:

    select switchover_status from v$database;(查询当前状态)

    SWITCHOVER_STATUS
    --------------------
    SESSIONS ACTIVE

    alter database commit to switchover to physical standby with session shutdown;(切换至standby模式)

    重新启动数据库至mount状态;
    shutdown immediate
    startup mount

    select switchover_status from v$database;(再检查状态)

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

    alter database recover managed standby databasedisconnect;(开启standby应用恢复模式)

    检查状态
    select open_mode,database_role from v$database;
    OPEN_MODE  DATABASE_ROLE
    ----------             ----------------
    MOUNTED       PHYSICAL STANDBY

    备库stydb:

    select switchover_status from v$database;

    SWITCHOVER_STATUS
    --------------------
    SESSIONS ACTIVE


    alter database commit to switchover to primary;

    重新启动数据库open

    shutdown immediate

    startup


    select switchover_status from v$database;

    SWITCHOVER_STATUS
    --------------------
    SESSIONS ACTIVE


    select open_mode,database_role from v$database;

    OPEN_MODE  DATABASE_ROLE
    ----------             ----------------
    OPEN     PRIMARY


    至此原主库切换至备库,原备库切换至主库了


    同步测试:
    pridb(new):
    select sequence#,applied from v$archived_log;

    stydb(new):
    select sequence#,applied from v$archived_log;
    PS:图片偷懒了,不过测试原理是一样的,只需要保证2边sequence序列号一致且最新的app返回YES了,就说明备库接收到应用且恢复了。


    3)应急切换

    (注:模拟主库由于故障无法正常switchover,需要执行failover,强制备库->pridb并接管业务)


    1.备库:

    由于是failover,所以理解主库这时候已经无法正常使用,只需备库切换至pridb


    停止应用恢复模式

    alter database recover managed standby database finish;

    转换standbydbprimary db

    alter database commit to switchover to primary;

    重启数据库,恢复正常业务

    shutdown immediate

    startup


    select open_mode,database_role from v$database;

    OPEN_MODE       DATABASE_ROLE
    ----------             ----------------
    OPEN                 PRIMARY


    PS:failover将破坏dataguard模式,需要重新配置dataguard,听说可以不用重新配置,不过本人未实验成功,有方法的可以大家一起沟通下.




    欢迎一起讨论oracle  QQ:624676778 泡泡清清



    展开全文
  • Dataguard日常维护及故障解决 一、 dataguard环境要求2.1数据库版本必须为企业版,版本最好在9i以上,主备库数据库的版本必须一致。2.2 主备数据库所在操作系统版本以及位数要求一样。2.3 主备库硬件配置可以不...
  • Data Guard实验 实验环境 主库端 基于linux系统安装11.2.0.4版本Oracle数据库 有一个单实例数据库db_name=db_unique_name=wqdb 备库端 基于linux系统安装11.2.0.4版本Oracle数据库 未起数据库实例 ...
  • Oracle 11g Dataguard搭建及知识梳理

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

    千次阅读 2016-10-11 11:46:16
    DataGuard有三种模式: 1.最大性能 这是Data Guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息,该模式在primary故障时可能丢失数据,但standby对primary的性能影响最小。 2.最大可用 ...
  • oracle dataguard安装部署

    2018-07-04 10:06:50
    oracle dataguard安装部署,详细配置信息,图文并茂。
  • 运维 oracle rac dataguard 正确 停机 启动 步骤,主用机,备用机,如何正确的启动,停机,开启同步等。
  • Oracle DataGuard学习笔记(1)DataGuard简介

    千次阅读 2017-01-08 20:36:59
    Oracle DataGuard学习笔记(1)DataGuard简介 1.什么是Oracle DataGuard(DG).  Oracle DataGuard是一个主从数据库间同步复制的工具,并且主从数据库能相互切换,确保企业数据的高可用性,数据保护以及灾难恢复....
  • 1 将primary 数据库从 dataguard 复制关系中独立出来. 参考 :https://dbaclass.com/article/remove-dataguard-configuration-from-primary-database/ 引用外部连接,如有侵权,请联系删除. ...
  • Oracle Dataguard原理,Oracle 数据实时性

    千次阅读 2019-01-22 14:50:29
    Oracle Dataguard原理   Oracle DataGuardOracle自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步,是一种...
  • Oracle DataGuard是一种数据库级别的HA方案,最主要功能是冗灾、数据保护、故障恢复等。 在生产数据库的"事务一致性"时,使用生产库的物理全备份(或物理COPY)创建备库,备库会通过生产库传输过来的归档日志(或重做...
  • 使用perl来监控ORACLE DATAGUARD脚本#!/usr/bin/perl usestrict; usewarnings; useDBI;#LoadtheDBImodule my$ZabbixServer="192.168.3.24"; my$ZabbixPort="10051"; my$HOSTNAME="o...
  • Oracle Dataguard提供了三种数据保护模式,在此分别总结一下三种数据保护模式的特点。1.最大保护模式1)这种模式提供了最高级别的数据保护能力;2)要求至少一个物理备库收到重做日志后,主库的事务才能够提交;3)...
  • 场景,重启数据库,不重启linux系统,所以不用考虑监听程序, #linux输入lsnrctl start 1 数据库关闭 1.1 关闭主库 SHUTDOWN IMMEDIATE; SQL>...
  • 1、DATAGUARD原理DATAGUARD是通过建立一个PRIMARY和STANDBY组来确立其参照关系。STANDBY一旦创建,DATAGUARD就会通过将主数据库(PRIMARY)的REDO传递给STANDBY数据库,然后在STANDBY中应用REDO实现数据库的同步。有两...
  • 此方案适合于生产运营中的数据库,DB服务器停机时间非常苛刻,或无法停机维护的情况下,如支付,电商等业务,可通过该方案在线部署Dataguard,对客户系统无任何影响。 一、基础信息 操作系统:windows2008 数据库...
  • oracle dataguard 优化

    千次阅读 2012-12-01 11:48:47
    Oracle Net Service 会话数据单元(session data unit,SDU)大小 l  TCP套接字缓冲区大小 l 网络设备队列大小 l  SRL文件的I/O调整   需要的带宽   可以根据awr或是alter计算高峰期、稳定状态是产生的redo数据...
  • Golden Gate 与 Oracle DataGuard的区别   GoldenGate TDM Oracle DataGuard(物理) Oracle DataGuard(逻辑) 基本原理 抽取在线日志中的数据变化,转换为GGS自定义的...
  • oracle dataguard 搭建手册 一、准备工作 主库: IP:192.168.199.177 数据库名:orcl 数据库SID:orcl DB_UNIQUE_NAME:orcl 数据库安装路径:D:\oracle\A 数据文件路径:D:\DATABASE 本地归档路径:D:\DATAREOV 备库:...
  • Oracle DataGuard中的一些坑 知识0:SQL> 中alter set 设置变量值时注意用引号 '' , 否则会自动设置为大写。 知识1:Oracle数据库DB_NAME、SERVICE_NAME、SID、INSTANCE_NAME等区别 DB_NAME: ①是数据库名,...
  • 一、停机 1、先关闭主库 --登录数据库 sqlplus / as sysdba sql>shutdown immediate 2、再关闭备库 --登录数据库 sqlplus / as sysdba sql>alter database recover managed standby...lsnrctl s.
  • ORACLE DATAGUARD重建备库

    2017-07-13 16:11:47
    数据库版本:11.2.0.4 操作系统版本 Linux 5.5 重建步骤 1、删除备库所有的数据文件、日志文件、控制文件 cd /opt/oracle/oradata/standby rm -rf * 进入闪回区,删...
  • Configure Rman to Purge Application standby logs. Posted on March 26, 2011 by Gary ...
  • 【操作】ORACLE DATAGUARD 重建备库 目的: Oracle DataGuard环境中,一些情况下我们需要重建Standby DB,如主库执行flashback database,或某些archive log无法找回时。 环境: Oracle Version:11.2 步骤: 1. ...
  • ORACLE DATAGUARD 进程

    2019-04-01 21:33:00
    欢迎指正与讨论。 1主库 ...LNS LNS:一般理解为log network serviceLNS 进程负责将主库redo传输到备库。在11gR1及之前版本进程命名为LNSn,其负责ASYNC和SYNC两种传输方式的日志传输.从11gR2拆分为两个进程NSAn...
  • Oracle DataGuard日志传输

    2017-11-02 18:57:00
    1. 日志传输方式 有两种日志传输方式(ARC... 注:上图来自《大话Oracle RAC》 其大致过程如下: 1)主库:日志先写入在线重做日志,当在线重做日志满后(或人为切换), ARC0进程归档该日志至主库本地归档目录,...

空空如也

1 2 3 4 5 ... 20
收藏数 9,899
精华内容 3,959
关键字:

dataguard