当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Oracle 给rac创建单实例dg并做主从切换功能

    栏目:Linux/apache问题 时间:2019-12-16 22:13

    一、概述

    本文将介绍如何给rac搭建单节点的dg,以及如何对其进行角色转换。预先具备的知识(rac搭建,单实例-单实例dg搭建)

    二、实验环境介绍

    主库rac(已安装rac,并已有数据库orcl)

    rac1:192.168.56.11,sid1:orcl1,version:11.2.0.4
    rac2:192.168.56.12,sid2:orcl2,version:11.2.0.4

    从库(已安装单实例数据库软件,无数据库实例)

    oradg:192.168.56.102,sid:orcldg,version:11.2.0.4

    三、搭建dg

    ** 以下所有主库操作都在节点1上做,如果需要在节点2上做的,我会标明

    1. 主库打开归档模式,并强制写日志

    先查看数据库的归档状态以及是否开启强制写日志,从下图可以看到目前数据库并没有打开归档,也没有开启强制写日志

    SQL> select log_mode, force_logging from v$database;

    数据库在mount状态下打开归档

    SQL> alter system set log_archive_dest_1='location=+data' sid='*' scope=spfile;
    SQL> shutdown immediate; # 两节点都关闭
    SQL> startup mount; # 只开启节点1
    SQL> alter database archivelog;
    SQL> alter database open;

    强制日志写,数据库在open状态就能修改

    SQL> alter database force logging;
    SQL> startup; # 当节点1open完毕后,在节点2上打开数据库

    再来查看数据库的归档状态以及是否开启强制写日志

    SQL> select log_mode, force_logging from v$database;

    2. 主库打开dataguard开关

    SQL> alter system set log_archive_config='dg_config=(orcl,orcldg)' sid='*'; # orcl是主库的db_unique_name,orcldg是从库的db_unique_name

    3. 主库设置远程归档

    SQL> alter system set log_archive_dest_3='service=orcldg valid_for=(online_logfiles,primary_role) db_unique_name=orcldg' sid='*';

    4. 将主库的口令文件传送给从库

    [oracle@rac1 ~]$ scp $ORACLE_HOME/dbs/orapw$ORACLE_SID 192.168.56.102:$ORACLE_HOME/dbs/orapworcldg

    5. 从库准备参数文件

    这里参数文件跟给单实例搭建单实例dg没什么区别,所以不做具体介绍

    [root@oradg ~]# vi $ORACLE_HOME/dbs/initorcldg.ora
    
    *.audit_file_dest='/u01/app/oracle/admin/orcldg/adump'
    *.audit_trail='db'
    *.compatible='11.2.0.4.0'
    *.control_files='/u01/app/oracle/oradata/orcldg/controlfile/control01.ctl'
    *.db_block_size=8192
    *.db_domain=''
    *.db_name='orcl'
    *.diagnostic_dest='/u01/app/oracle'
    *.log_archive_config='dg_config=(orcl,orcldg)'
    *.log_archive_dest_2='location=/u01/app/oracle/oradata/orcldg/archstdlog/ valid_for=(standby_logfiles,standby_role) db_unique_name=orcldg'
    *.memory_target=838860800
    *.open_cursors=300
    *.processes=150
    *.remote_login_passwordfile='exclusive'
    *.undo_tablespace='UNDOTBS1'
    standby_file_management=auto # 该参数默认值是manual,需要将其改为auto,表示主库的数据文件发生修改(如新建,重命名等),相应地从库也做相应修改
    db_unique_name='orcldg'
    db_file_name_convert='+DATA/orcl/datafile/','/u01/app/oracle/oradata/orcldg/datafile/','+DATA/orcl/tempfile/','/u01/app/oracle/oradata/orcldg/tempfile/'
    log_file_name_convert='+DATA/orcl/onlinelog/','/u01/app/oracle/oradata/orcldg/onlinelog/'