0
点赞
收藏
分享

微信扫一扫

Oracle Data Guard系列:单机环境基于Duplicate方式搭建DG

在data guad搭建的方式上基本上分为三种:1、基于拷贝文件的方式进行搭建(源库可以关闭的情况下);2、采用rman备份进行恢复的方式进行搭建(本地空间足够的情况下);3、基于rman duplicate在线方式进行搭建(本地空间不足的情况下可以用此方式);4、基于dgbroker方式进行dg搭建(本人感觉此种方式管理简单)。

在上篇更文中记录了在oralce 11g数据库版本中如何基于拷贝文件的方式进行data guard的搭建,此篇更文中将对rman duplicate方式搭建dg过程进行记录。

1、基础环境

两个节点的操作系统都是redhat linux 7.8,数据库版本都是oracle 19c,源端数据库已经安装完成并且创建数据库完毕,dg端服务器数据库database已经安装完成,为进行数据库创建。

2、搭建规划

节点名

主机名

IP地址

BASE基目录

ORACLE_HOME

ORACLE_SID

data目录

db_unique_name

node01

xiaozc01

192.168.77.10

/u01/app/oracle

$ORACLE_BASE/product/

19.3.0/dbhome_1

xiaozc

/u01/app/oracle/data

xiaozc

node02

xiaozc02

192.168.77.11

/u01/app/oracle

$ORACLE_BASE/product/

19.3.0/dbhome_1

xiaozc

/u01/app/oracle/data

xiaozcdg

3、搭建过程

3.1、node02创建监听

使用netca进行监听的创建,监听创建完成以后,对listener.ora文件进行编辑,添加静态监听配置。如下绿色部分为添加内容

cd $ORACLE_BASE/product/19.3.0/dbhome_1

vi listener.ora

LISTENER =

    (DESCRIPTION_LIST =

      (DESCRIPTION=

        (ADDRESS=(PROTOCOL=TCP)(HOST=xiaozc02)(PORT=1521))

        (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))

      )

    )

SID_LIST_LISTENER=

  (SID_LIST=

        (SID_DESC=

          (GLOBAL_DBNAME=xiaozcdg)

          (SID_NAME=xiaozc)

          (ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1)

        )

)

3.2、node02环境变量设置

su - oracle

vi .bash_profile

export LANG=en_US

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1

export ORACLE_UNQNAME=xiaozcdg

export ORACLE_SID=xiaozc

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG

export PATH=$PATH:/u01/app/oracle/product/19.3.0/dbhome_1/bin

执行source ~/.bash_profile使变量文件生效

3.3、node1主数据库配置

打开数据库归档日志、闪回功能和force logging,操作如下:

su - oracle

sqlplus  / as sysdba

shutdown immediate;

startup mount;

alter database archivelog;

alter database force logging;

alter database flashback on;

alter database open;

alter system set db_recovery_file_dest=' /archivelog/arch'; 

3.4、node1主数据库添加standby log

alter database add standby logfile group 4 'u01/app/oracle/data/standby04.log' size 50m;

alter database add standby logfile group 5 'u01/app/oracle/data/standby05.log' size 50m;

alter database add standby logfile group 6 'u01/app/oracle/data/standby06.log' size 50m;

alter database add standby logfile group 7 'u01/app/oracle/data/standby07.log' size 50m;

3.5、主库配置静态监听

cd $ORACLE_HOME/network/admin

vi listener.ora

LISTENER =

    (DESCRIPTION_LIST =

      (DESCRIPTION=

        (ADDRESS=(PROTOCOL=TCP)(HOST=xiaozc01)(PORT=1521))

        (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))

      )

    )

SID_LIST_LISTENER=

  (SID_LIST=

        (SID_DESC=

          (GLOBAL_DBNAME=xiaozc)

          (SID_NAME=xiaozc)

          (ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1)

        )

)

3.6、编辑node01和node02的tnsnames.ora,两个节点都添加如下绿色内容

vi /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora

xiaozc =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = xiaozc01)(PORT = 1521))

   )

   (CONNECT_DATA =

     (SERVICE_NAME = xiaozc)

   )

 )

xiaozcdg =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = xiaozc02)(PORT = 1521))

   )

   (CONNECT_DATA =

     (SERVICE_NAME = xiaozcdg)

   )

 )

3.7、测试本地服务别名是否生效

node1节点oracle用户操作

lsnrctl stop

lsnrctl start  ----停止重新启动监听加载修改的监听配置使静态监听可以注册到监听

sqlplus  sys/xzc123@xiaozc as sysdba

sqlplus  sys/xzc123@xiaozcdg as sysdba --使用服务名进行ramn连接,若连接成功证明本地服务名配置生效

node2节点oracle用户操作

lsnrctl stop

lsnrctl start --停止重新启动监听加载修改的监听配置使静态监听可以注册到监听

sqlplus  sys/xzc123@xiaozc as sysdba --使用服务名进行ramn连接,若连接成功证明本地服务名配置生效

sqlplus  sys/xzc123@xiaozcdg as sysdba

3.8、拷贝主端数据库密码文件到DG端

cd /u01/app/oracle/product/19.3.0/dbhome_1/dbs

scp orapwxiaozc xiaozc02:/u01/app/oracle/product/19.3.0/dbhome_1/dbs/orapwxiaozcdg

3.9、登录node01主库备份参数文件及修改参数文件

create pfile='/u01/app/oracle/pfile.ora' from spfile;

alter system set db_unique_name='xiaozc' scope=spfile;

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(xiaozc,xiaozcdg)' scope=both;

alter system set LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=xiazc' scope=both;

alter system set LOG_ARCHIVE_DEST_2='SERVICE=xiaozcdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=xiaozcdg' scope=both;

alter system set fal_client='xiaozc' scope=both;

alter system set FAL_SERVER='xiaozcdg' scope=both;

alter system set DB_FILE_NAME_CONVERT='/u01/app/oracle/data/XIAOZCDG','/u01/app/oracle/data/XIAOZC'scope=spfile;

alter system set LOG_FILE_NAME_CONVERT='/u01/app/oracle/data/XIAOZCDG','/u01/app/oracle/data/XIAOZC' scope=spfile;

alter system set standby_file_management=AUTO scope=both;

shutdown immediate;

startup; --重启数据库使修改的参数生效

3.10、生成DG端数据库参数文件

将node01节点生成的pfile文件拷贝到dg端的相应目录下,按照dg端的目录名将xiaozc改成xiaozcdg,db_name依旧保留xiaozc,如果node01和node02的主机配置一致,配置文件的前几行内存分配配置不需要删除,如果主机配置不一致。需要将配置文件的前几行进行删除,然后添加dg参数文件,添加内容如下

db_unique_name='xiaozcdg'

LOG_ARCHIVE_CONFIG='DG_CONFIG=(xiaozcdg,xiaozc)'

LOG_ARCHIVE_DEST_1='LOCATION=/archivelog/ arch/VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=xiaozcdg'

LOG_ARCHIVE_DEST_2='SERVICE=xiaozc LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=xiaozc'

fal_client='xiaozcdg'

FAL_SERVER='xiaozc'

DB_FILE_NAME_CONVERT='/u01/app/oracle/data/XIAOZC','/u01/app/oracle/data/XIAOZCDG'

LOG_FILE_NAME_CONVERT='/u01/app/oracle/data/XIAOZC','/u01/app/oracle/data/XIAOZCDG'

standby_file_management=AUTO

3.11、DG端创建目录

su - oracle

mkdir -p /u01/app/oracle/fast_recovery_area

mkdir -p /u01/app/oracle/admin/XIAOZCDG/adump

mkdir -p /u01/app/oracle/data/XIAOZCDG

3.12、利用修改的参数文件启动数据库到nomount状态并生成spfile文件

sqlplus  / as sysdba

startup pfile='/home/oracle/pfile.ora' nomount;

create spfile from pfile='/home/oracle/pfile.ora';

shutdown immediate;

startup nomout;--使用新生成的spfile文件启动数据库到nomount状态

3.13、使用duplicate方式创建dataguard数据库

rman target sys/xzc123@xiaozc auxiliary sys/xzc123@xiaozcdg

Recovery Manager: Release 19.0.0.0.0 - Production on Sat May 28 22:55:22 2022

Version 19.3.0.0.0

connected to target database: XIAOZC (DBID=1051078815)

connected to auxiliary database: HISDB (not mounted)

执行如下命令进行dg数据库创建,执行时间根据数据量大小以及磁盘io决定

duplicate target database for standby from active database nofilenamecheck dorecover;

3.14、等待同步完成,打开DG端日志应用

在备库启动数据同步,如下命令实现

alter database recover managed standby database disconnect from session;

此时DG的数据库处于mount状态,也可以停止日志应用将数据库打开到open状态,然后再打开日志应用。DG端再open状态下是只读模式,可以供客户端查询使用。

至此19c oracle 基于duplicate方式搭建dg的操作完成。

举报

相关推荐

0 条评论