在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的操作完成。