dataguard安装

dataguard安装1 1 nbsp nbsp nbsp nbsp Dataguard 实施前准备 nbsp nbsp nbsp nbsp Oracle 安装分包括 2 块 安装 DB nbsp 软件和升级 如果是 10g 的话 可以先将 DB 升级到 10 2 0 5 升级的原因是为了避免某些 bug 先安装软件 升级 升级完在用 DBCA nbsp 创建实例 这样比安装 DB nbsp 和创建实例之后升级要简单点 nbsp nbsp nbsp nbsp 1 redo nbsp 文件默认是 50M 改成 100M nbsp nbsp nbsp nbsp 2 每个 redogroup 里改成 2 个 nbsp

1.1    Dataguard实施前准备

注释: 本次实施中 {SID} = oratest

2      Dataguard实施步骤

2.1 Primary端设置

2.1.1        设置oracle为归档模式

查看当前归档模式情况: archive log list 
    设置本地归档目录修改init{SID}.ora文件
        *.log_archive_dest_1=’LOCATION=/home/ora_arch’
        *.log_archive_format=’%t_%s_%r.dbf’
    注意
    oracle startup
启动数据库查询启动文件的顺序:
         1. spfile{SID}.ora
文件 (为二进制文件不可以手动更改)
         2.  spfile.ora
文件
         3.  init{SID}.ora
文件 (可以更改)
         4.  pfile.ora
文件

    设置为归档模式,命令如下:    
        SQL> archive log list; 
        SQL> shutdown immediate 
        SQL> startup mount 
        SQL> alter database archivelog; 





        SQL> archive log list; 
 




2.1.2           设置主数据库为force logging 模式

SQL> alter database force logging;

2.1.3           添加red log file

添加一个新的Standby Redologs组(注意组号不要与当前存在的Online Redologs组重复),并为该组指定一个成员
    SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 (‘/u01/app/oracle/oradata/orcl/redo04.log’) size 100M; 
    SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 (‘/u01/app/oracle/oradata/orcl/redo05.log’) size 100M; 
    SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 (‘/u01/app/oracle/oradata/orcl/redo06.log’) size 100M; 
    SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 (‘/u01/app/oracle/oradata/orcl/redo07.log’) size 100M;



2.1.4           创建备库的密码文件和控制文件

   SQL> alter database create standby controlfile as ‘/home/u01/control01.ctl’;
        — 
说明: 判断一个数据库是Primary还是Standby,就是通过控制文件来判断的。

    拷贝/home/u01/product/10R2/db/dbs/orapw{SID} 至 /home/u01.
 

2.1.5           修改初始化参数文件

    SQL> create pfile=’/home/u01/initorcl.ora’ from spfile;
    
在initorcl.ora 添加如下内容:
    *.DB_UNIQUE_NAME=’PRIMARY’
    *.FAL_CLIENT=’primary’
    *.FAL_SERVER=’standby’
    *.log_archive_config=’DG_CONFIG=(PRIMARY,STANDBY)’
    *.log_archive_dest_1=’LOCATION=/home/ora_arch db_unique_name=PRIMARY’
    *.log_archive_dest_2=’SERVICE=STANDBY DB_UNIQUE_NAME=STANDBY’
    *.log_archive_dest_state_1=’ENABLE’
    *.log_archive_dest_state_2=’ENABLE’ 
    *.standby_archive_dest=’/home/ora_arch’
    *.standby_file_management=’AUTO’
     注意: 
        如果主库和备库的数据文件位置不同,还需要加如下2个参数:
        *.log_file_name_convert=’/u02/oradata/orcl/’,’/u03/oradata/orcl/’
        *.db_file_name_convert=’/u02/oradata/orcl/’,’/u03/oradata/orcl/’
     TNS设置:
    primary =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.6)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = oratest)
        )
      )























standby =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.7)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = oratest)
        )
      )
 
    









用’/home/u01/init{SID}.ora’ 这个pfile 启动数据库,并生成spfile。
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup pfile=’/home/u01/init{SID}.ora’;
    ORACLE instance started.
    Total System Global Area bytes
    Fixed Size                   bytes
    Variable Size              bytes
    Database Buffers           bytes
    Redo Buffers                bytes
    SQL> create spfile from pfile=’/home/u01/init{SID}.ora’;
    File created.












2.1.6           修改listener.ora 和tnsnames.ora 文件

Listener.ora 文件: (本次不做修改, 启动时先从库. 关闭时先关闭主库)
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /home/u01/product/10R2/db)
          (PROGRAM = extproc)
        )
    (SID_DESC =
    (GLOBAL_DBNAME = orcl)
    (ORACLE_HOME = /home/u01/product/10R2/db)
           (SID_NAME = orctest
       )
      )
    LISTENER =
      (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )
    注意:SID_LIST_LISTENER 配置的是静态注册,如果没有该参数,而且Data Guard 启动顺序又不正确,那么在主库可能会报 PING[ARC1]: Heartbeat failed to connect to standby ‘orcl_st’. Error is 12514. 错误,导致归档无法完成。

    tnsnames.ora 文件
    primary =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.6)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = oratest)
        )
      )
    standby =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.21.7)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = oratest)
        )
      )








































2.2 Standby 端配置

2.2.1        创建备库存放数据文件和后台跟踪目录

这个目录可以和主库相同,如果不同,就需要在主库的初始化文件中进行转换。 
   如: *.log_file_name_convert=’/u02/oradata/orcl/’,’/u03/oradata/orcl/’
        *.db_file_name_convert=’/u02/oradata/orcl/’,’/u03/oradata/orcl/’

2.2.2        将主库的密码文件,控制文件,数据文件,参数文件,日志文件copy到备库

说明一点,这个控制文件是我们自己创建的standby 控制文件。将copy过来的控制文件再复制三份就可以了。 
   主备的控制文件是不一样的。这里除了采用直接copy 文件之外,还可以采用Rman恢复来做。 直接copy 需要停数据库,如果采用RMAN 的话,就不需要停机了。 
     文件如下: 
      (初始安装oracle, 没有其他数据文件; 若对现网数据库做DG,需要拷贝相应的文件)
       control01.ctl  redo01.log  redo04.log  redo07.log    temp01.dbf
       control02.ctl  redo02.log  redo05.log  sysaux01.dbf  undotbs01.dbf
       control03.ctl  redo03.log  redo06.log  system01.dbf  users01.dbf





2.2.3        修改初始化参数文件

修改之后如下:
       *.log_archive_config=’DG_CONFIG=(PRIMARY,STANDBY)’
       *.log_archive_dest_1=’LOCATION=/home/ora_arch db_unique_name=STANDBY’
       *.log_archive_dest_2=’SERVICE=PRIMARY DB_UNIQUE_NAME=PRIMARY’
       *.log_archive_dest_state_1=’ENABLE’
       *.log_archive_dest_state_2=’ENABLE’ 
       *.fal_client=’STANDBY’
       *.fal_server=’PRIMARY’
       *.DB_UNIQUE_NAME=’STANDBY’
       *.standby_archive_dest=’/home/ora_arch’








2.2.4        配置Listener.oratnsnames.ora

如果不存在,就从主库上copy 过去。

2.2.5        在备库添加redo log file

       如果主库没有添加redo log file,可以先用copy 过来的初始化文件将数据库启动到mount 状态。在创建个spfile,最后添加redo log。
       SQL> startup mount pfile=’/home/u01/init{SID}.ora’
       ORACLE instance started.
       SQL> create spfile from pfile=’/home/u01/init{SID}.ora’;
 
       添加一个新的Standby Redologs组(注意组号不要与当前存在的Online Redologs组重复),并为该组指定一个成员:
       SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 (‘/home/u01/product/oradata/oratest/redo04.log’) size 100M; 
       SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 (‘/home/u01/product/oradata/oratest/redo05.log’) size 100M; 
       SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 (‘/home/u01/product/oradata/oratest/redo06.log’) size 100M; 
       SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 (‘/home/u01/product/oradata/oratest/redo07.log’) size 100M; 
提示: 在主库上面已经添加了standby redologs 可以先用下面语句删除掉. 再重新添加
      alter database drop standby logfile group 4;

      查看配置情况: 

SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

        GROUP#    THREAD#  SEQUENCE# ARC STATUS
———- ———- ———- — ———-
         4          1          0 YES UNASSIGNED
         5          0          0 YES UNASSIGNED
         6          0          0 YES UNASSIGNED
         7          0          0 YES UNASSIGNED
      





提示,由于从Primary数据库复制文件时并没有复制Online Redologs,因此物理Standby数据库在第一次启动REDO应用时,会在Alert文件中报Online Redo Logfile文件不存在,没有关系,物理Standby会自动重建这批文件,同时你也不用担心会丢失数据,Online Redologs中的数据会以归档文件的形式从Primary端接收。
       至此,Data Guard 的操作已经完成,下面来开始验证。











注意:  tns的primary和standby配置需要先通过测试. 保证通信无误后再启动双机服务.
        Data Guard 启动顺序:
        
启动顺序:先standby ,后primary;
        关闭顺序:先primary 后standby;

2.3 证Dataguard状态

在备库将实例启动到mount 状态:
    SQL> startup nomount;
    SQL> alter database mount standby database ; 
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 
    SQL> alter database recover managed standby database disconnect from session; 
     //希望实时应用(MANAGED REAL TIME APPLY) 需要使用下面语句进行启动:
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY USING CURRENT LOGFILE DISCONNECT FROM SESSION;
 
    在备库启动监听:
    $lsnrctl start
 
    在主库启动实例:
    SQL> startup;
 
    在主库启动监听:
    $lsnrctl start
 
    在主库验证归档目录是否有效:
    SQL> SELECT STATUS,DESTINATION, ERROR FROM V$ARCHIVE_DEST;
    如果有错误,要排查原因。
 
    SQL> alter system switch logfile;
    
    查看归档日志情况.
 
    SQL> archive log list; 
   
    主备查询结果一致,Data Guard 搭建结束。






























3      主备切换

    由于目前数据库由3台服务器组成,因此做主备切换后,需要重新对GIS分析数据库做Stream同步。 下面主要介绍主从切换。
    Data  Guard主从数据库双向切换:
    A.准备工作
    (1)首先查询主库状态,确认可以做切换:
        SQL> select switchover_status from v$database;       
        SWITCHOVER_STATUS
        ——————
        TO STANDBY
                
        SWITCHOVER_STATUS有三个状态: to standby、 sessions active、 not allowed(该状态下无法切换)
 
    (2)在从库上面确认所有的archive log 都已经apply:
        select sequence#,first_time,next_time,applied from v$archived_log;
    (3)在主库上switch  logfile:
        Alter system switch logfile;
    (4)观察从库上已经 apply所有archive log:
        select sequence#,first_time,next_time,applied from v$archived_log;















        查看是否仍然有连接
        select username,program  from v$session  where status=’ACTIVE’;

    B.切换:
    (1)
将主库转变为可切换状态: 
        ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;
        ——–此时会有日志切换,并传输到旧standby点。Standby端会自动cancel(查看alter{SId}.log日志。

    (2)standby    
        ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; 
    (3)

原primary
        SHUTDOWN IMMEDIATE;
        STARTUP NOMOUNT;
        alter database mount standby database;


(4)原primary
        alter system set log_archive_dest_state_2=defer scope=both;
    (5)

原standby
        RECOVER MANAGED STANDBY DATABASE CANCEL——-系统已自动执行。(会报异常错误, 可忽略)
        shutdown immediate;
        startup
    (6)原standby( new primary)
        alter system set log_archive_dest_state_2=enable scope=both;
    (7)新的primary
        ALTER SYSTEM SWITCH LOGFILE; 
        查看archive log是否自动传输
    (8)原来的primary 新的standby
        RECOVER MANAGED STANDBY DATABASE disconnect; (清除原有日志信息)
    (9)新的primary
        ALTER SYSTEM SWITCH LOGFILE; 
    (10)新standby     
        archive log list; 查看
    经测试,系统双向切换成功,目前整套系统工作正常。














4      主库失败,启用备库(Failovers)

2. 然后停止应用归档:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; Database altered.

SQL> ALTER DATABASE OPEN; 或者 shutdown immediate+startup

Database altered.

检查数据库是否已经切换成功:

SQL> SELECT DATABASE_ROLE FROM V$DATABASE;

至此,FAILOVER切换完成。这个时候应该马上对新的PRIMARY数据库进行备份。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206951.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:07
下一篇 2026年3月19日 下午3:08


相关推荐

  • 从最大似然到EM算法浅解「建议收藏」

    从最大似然到EM算法浅解「建议收藏」从最大似然到EM算法浅解zouxy09@qq.comhttp://blog.csdn.net/zouxy09机器学习十大算法之一:EM算法。能评得上十大之一,让人听起来觉得挺NB的。什么是NB啊,我们一般说某个人很NB,是因为他能解决一些别人解决不了的问题。神为什么是神,因为神能做很多人做不了的事。那么EM算法能解决什么问题呢?或者说EM算法是因为什么而来到这个世界

    2022年6月9日
    28
  • Ifconfig_5k是多少啊

    Ifconfig_5k是多少啊文章目录Linux_day06-07Linux的网络相关一.设置主机名二.chkconfig服务配置三.ntp服务四.防火墙服务——软件防火墙五.网络相关的一些命令1. **ifconfig**2. **netstat**3. **ping**4. **telnet**——用于测试端口连通性5. **curl**——资源定位Linux_day06-07Linux的网络相关一.设置主机名临时设置:#hostname 新主机名(切换用户生效,重启还原)永久设置:修改配置文件/etc/hostname

    2022年8月9日
    7
  • goland2021.2.1激活破解破解方法

    goland2021.2.1激活破解破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    176
  • ribbon自定义负载均衡策略,应用所有服务_dubbo的负载均衡策略

    ribbon自定义负载均衡策略,应用所有服务_dubbo的负载均衡策略Ribbon默认的负载均衡策略默认的有下面几种:我们也可以自定义负载均衡策略:修改springcloud-consumer-dept-80的主启动类:下面开始编写自定义配置类MySelfRule,但这个类不能乱放!官方文档给出警告:这个自定义的类不能放在@ComponentScan所扫描的当前包以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是我们达…

    2022年10月13日
    4
  • Hadoop pig进阶语法

    Hadoop pig进阶语法本文来自与作者阅读 nbsp ProgrammingP nbsp 所做的笔记 转载请注明出处 nbsp http www cnblogs com siwei1988 archive 2012 08 06 2624912 html PigLatin 是一种数据流语言 变量的命名规则同 java 中变量的命名规则 变量名可以复用 不建议这样做 这种情况下相当与新建一个变量 同时删除原来的变量 A load

    2026年3月16日
    3
  • Android 组件化,从入门到不可自拔

    Android 组件化,从入门到不可自拔组件化能够显著提高 Android 项目开发效率 支持不同业务组件单独打包或者组合打包 可以说是 Android 开发者必备技能 本文通过一个极其简单的实践案例 梳理了组件化的配置过程 并辅以全部源码 希望对还没有应用组件化的开发者有些帮助

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号