Oracle 19c使用dbca快速搭建物理ADG

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维

Oracle在12.2版本之后,推出了部署ADG的新方式DBCA,通过DBCA方式快速的部署DG备库,简化了部署备库DG的操作步骤。

12.2.0.1 开始支持DBCA创建物理备库,但是限制较多,如:

  • 主库必须是单机环境,非RAC数据库;
  • 主库必须是非CDB环境;

18C之后,以上限制已经取消,支持主库是CDB和RAC环境,本文将为您详细介绍ORACLE 19C RAC下如何通过DBCA搭建dataguard(主库是RAC,备库是单机)的详细步骤。

一、环境描述

主库备库
系统版本CentOS7.9 X64CentOS7.9 X64
主机名rac19c01、rac19c02ora1922
IP信息10.10.10.40、10.10.10.4210.10.10.32
GI版本19.22/
DB版本19.2219.22
实例名rac19c/

二、ADG搭建过程

2.1 配置hosts文件

主库(两个节点):

cat <<EOF >> /etc/hosts
##FOR DG BEGIN
10.10.10.32 ora1922
##FOR DG END
EOF

备库:

cat <<EOF >> /etc/hosts
##FOR DG BEGIN
10.10.10.41 rac19c01-vip
10.10.10.43 rac19c02-vip
10.10.10.44 rac19c-scan
##FOR DG END
EOF

2.2 配置静态监听

修改listener.ora文件, 增加静态监听:

主库 rac01:

cat <<EOF >> $ORACLE_HOME/network/admin/listener.ora
##FOR DG BEGIN
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
	  (GLOBAL_DBNAME = rac19c)
	  (SID_NAME = rac19c1)
	  (ORACLE_HOME = /u01/app/oracle/product/19.3.0/db)
    )
   )
##FOR DG END
EOF

主库 rac02:

cat <<EOF >> $ORACLE_HOME/network/admin/listener.ora
##FOR DG BEGIN
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
	  (GLOBAL_DBNAME = rac19c)
	  (SID_NAME = rac19c2)
	  (ORACLE_HOME = /u01/app/oracle/product/19.3.0/db)
    )
   )
##FOR DG END
EOF

主库重启监听,使配置生效:

#主库RAC重启监听
srvctl stop listener
srvctl start listener

######备库可以不用配置静态监听

2.3 tnsnames.ora 增加TNS

主库和备库都添加

cat <<EOF >> $ORACLE_HOME/network/admin/tnsnames.ora
##FOR DG BEGIN
RAC19C =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac19c-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac19c)
    )
  )
RAC19C1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac19c01-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac19c)
    )
  )
RAC19C2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac19c02-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac19c)
    )
  )

RAC19CDG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.32)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = RAC19CDG)
    )
  )
##FOR DG BEGIN
EOF

tnsping 测试连通性:
$ tnsping RAC19C
$ tnsping RAC19CDG

2.4 主库配置参数

查看是否开启强制日志:

SQL> select force_logging,log_mode,cdb from gv$database;

FORCE_LOGGING				LOG_MODE     CDB
--------------------------------------- ------------ ---
NO					ARCHIVELOG   NO
NO					ARCHIVELOG   NO

如果没有开启强制日志:

alter database force logging;

如果没有开启归档日志:

shutdown immediate
startup mount
alter database archivelog;
alter database open;
alter pluggable database all open;

2.5 主库添加standby log文件

set line222
col member for a60
select t2.thread#,t1.group#,t1.member,t2.bytes/1024/1024 from v$logfile t1,v$log t2 where t1.group#=t2.group# order by 1,2;
   THREAD#     GROUP# MEMBER							   T2.BYTES/1024/1024
---------- ---------- ------------------------------------------------------------ ------------------
	 1	    1 +DATA/RAC19C/ONLINELOG/group_1.262.1159192413				  256
	 1	    2 +DATA/RAC19C/ONLINELOG/group_2.263.1159192413				  256
	 2	    3 +DATA/RAC19C/ONLINELOG/group_3.266.1159193207				  256
	 2	    4 +DATA/RAC19C/ONLINELOG/group_4.267.1159193207				  256

注意:
stanby log 日志大小至少要和 redo log 日志一样大小,不能小于主库日志大小;
stanby log 数量: standby logfile=(1+logfile组数)=(1+2)=3 组,每个 thread 需要加 3 组 standby logfile;
thread 要与 redo log 保持一致,如果是 rac,需要增加多个 thread 对应的 standby log;

ALTER DATABASE ADD STANDBY LOGFILE thread 1 
group 5 ('+DATA') SIZE 256M,
group 6 ('+DATA') SIZE 256M,
group 7 ('+DATA') SIZE 256M;

ALTER DATABASE ADD STANDBY LOGFILE thread 2 
group 8 ('+DATA') SIZE 256M,
group 9 ('+DATA') SIZE 256M,
group 10 ('+DATA') SIZE 256M;


SQL> select t2.thread#,t1.group#,t1.member,t2.bytes/1024/1024 from v$logfile t1,v$standby_log t2 where t1.group#=t2.group# order by 1,2;

   THREAD#     GROUP# MEMBER							   T2.BYTES/1024/1024
---------- ---------- ------------------------------------------------------------ ------------------
	 1	    5 +DATA/RAC19C/ONLINELOG/group_5.286.1159374475				  256
	 1	    6 +DATA/RAC19C/ONLINELOG/group_6.287.1159374475				  256
	 1	    7 +DATA/RAC19C/ONLINELOG/group_7.288.1159374475				  256
	 2	    8 +DATA/RAC19C/ONLINELOG/group_8.289.1159374475				  256
	 2	    9 +DATA/RAC19C/ONLINELOG/group_9.290.1159374477				  256
	 2	   10 +DATA/RAC19C/ONLINELOG/group_10.291.1159374477				  256

6 rows selected.
	

三、DBCA创建物理备库

3.1 备库安装数据库软件

备库只安装数据库软件和相应的补丁(可参考19c 单机安装文档 ),不创建实例。

3.2 dbca创建adg

# su - oracle
$ dbca -silent -createDuplicateDB \
 -sysPassword oracle \
 -primaryDBConnectionString 10.10.10.44:1521/rac19c \
 -gdbName rac19c \
 -sid rac19cdg -dbUniqueName rac19cdg \
 -nodelist ora1922 \
 -databaseConfigType SINGLE \
 -datafileDestination '/u01/oradata/' \
 -initParams db_create_online_log_dest_1='/u01/oradata/' \
 -createAsStandby 
Prepare for db operation
22% complete
Listener config step
44% complete
Auxiliary instance creation
67% complete
RMAN duplicate
89% complete
Post duplicate database operations
100% complete

Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/rac19cdg/rac19cdg.log" for further details.

注意:
###gdbName 要与主库一样,dbUniqueName要跟主库不一样

DBCA更详细参数可参考官方文档:The createDuplicateDB command creates a duplicate of an Oracle database.

参考链接:https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/creating-oracle-data-guard-physical-standby.html#GUID-7C55FE8A-50C3-4601-9ADA-98BE6D65F1DD
https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/creating-and-configuring-an-oracle-database.html#GUID-7F4B1A64-5B08-425A-A62E-854542B3FD4E

如果创建过程失败时,可进行删除,然后重新配置:

执行dbca进行删除:
$ORACLE_HOME/bin/dbca -silent -deleteDatabase -sourceDB s19cdg -sid s19cdg -sysPassword ORAcle123

删除/etc/oratab相关的db配置项:
s19cdg:/u01/app/oracle/product/19.3.0/db:N

四、配置主库和备库DG参数

4.1 主库设置DG参数

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(RAC19C,RAC19CDG)' sid='*';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=RAC19C' sid='*';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=RAC19CDG ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=RAC19CDG' sid='*';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE sid='*';
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4 sid='*';
ALTER SYSTEM SET FAL_SERVER=RAC19CDG sid='*';
ALTER SYSTEM SET FAL_CLIENT=RAC19C sid='*';
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/u01/oradata/RAC19CDG','+DATA' SCOPE=SPFILE sid='*';
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/u01/oradata/RAC19CDG','+DATA' SCOPE=SPFILE sid='*';
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO sid='*';

注意: RAC 修改参数需要加上 sid='*',修改多个实例。

4.2 备库设置 DG 参数

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(RAC19CDG,RAC19C)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=RAC19CDG';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=RAC19C ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=RAC19C';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4;
ALTER SYSTEM SET FAL_SERVER=RAC19C;
ALTER SYSTEM SET FAL_CLIENT=RAC19CDG;
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA','/u01/oradata/RAC19CDG' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+DATA','/u01/oradata/RAC19CDG' SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

查看 OMF 参数配置:
show parameter db_create_file_dest

注意: 如果同时设置 OMF 和 DB_FILE_NAME_CONVERT 参数,则优先 OMF 参数。

五、开启日志应用

##备库执行

alter database recover managed standby database using current logfile disconnect from session;

##主库执行

alter system set log_archive_dest_state_2=enable sid='*';

请添加图片描述

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老苏畅谈运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值