DBCA命令行搭建Oracle ADG的流程


Posted in Oracle onJune 11, 2021

前言

Oracle Data Guard是Oracle MAA(Maximum Availability Architecture)中的成员之一。从Oracle 7i版本开始推出STANDBY DATABASE的概念,慢慢受到大家的欢迎。随着Oracle数据库版本的更迭,搭建备库的方式多种多样。今天介绍一种创建物理备库的新方式,从12C版本开始推出:使用 DBCA 命令行。

DBCA命令行搭建Oracle ADG的流程

dbca -createDuplicateDB -createAsStandby -dbUniqueName

优缺点:方便快捷,搭建速度较快。但是会影响主库的性能,执行过程报错不方便排查。

具体命令可参考:

dbca -silent -createDuplicateDB
    -gdbName global_database_name
    -primaryDBConnectionString easy_connect_string_to_primary
    -sid database_system_identifier
    [-createAsStandby 
        [-dbUniqueName db_unique_name_for_standby]]
    [-customScripts scripts_list]

更详细参数可参考The createDuplicateDB command creates a duplicate of an Oracle database.

DBCA命令行搭建Oracle ADG的流程

12.2.0.1开始支持DBCA创建物理备库:

主库必须是单机环境,非RAC数据库。

主库必须是非CDB环境。

18c之后,以上限制已经取消,支持主库是CDB和RAC环境。

一、环境准备

环境安装过程忽略,可参考:

30分钟!一键部署Oracle 19C单机CDB+PDB

本次测试尽量按照生产环境升级进行模拟:

节点 主机版本 主机名 实例名 Oracle版本 IP地址
rac01 rhel7.9 rac01 cdb19c 19.3.0(补丁 29585399) 10.211.55.100
rac02 rhel7.9 rac02 orcl+cdb19c 19.3.0(补丁 29585399) 10.211.55.101
备库 rhel7.9 dbca_stby 不创建实例 19.3.0(补丁 29585399) 10.211.55.110

注意:

1、db_unique_name主备库不能相同。

2、db_name主备库需保持一致。

3、主备库DB版本需保持一致。

Oracle测试环境安装:

可参考:DBA运维福音:10分钟,Linux一行命令安装Oracle数据库

主库RAC环境一键安装:

./OracleShellInstall.sh -i 10.211.55.100 `#Public ip`\
-n rac `# hostname`\
-c TRUE `# cdb`\
-pb orcl `# pdb`\
-o cdb19c `# oraclesid`\
-rs oracle `# root password`\
-op oracle `# oracle password`\
-gp oracle `# grid password`\
-b /u01/app `# install basedir`\
-s AL32UTF8 `# characterset`\
-pb1 10.211.55.100 -pb2 10.211.55.101 `# node public ip`\
-vi1 10.211.55.102 -vi2 10.211.55.103 `# node virtual ip`\
-pi1 1.1.1.1 -pi2 1.1.1.2 `# node private ip`\
-si 10.211.55.105 `# scan ip`\
-dd /dev/sdc `# asm data disk`\
-od /dev/sdb `# asm ocr disk`\
-or EXTERNAL `# asm ocr redundancy`\
-dr EXTERNAL `# asm data redundancy`\
-on OCR `# asm ocr diskgroupname`\
-dn DATA `# asm data diskgroupname`\
-puf eth0 -prf eth1 `# network fcname`\
-tsi 10.211.55.200 `# timeserver`\
-gpa 32545008 `# Grid PSU NUMBER`

DBCA命令行搭建Oracle ADG的流程

备库一键安装:(备库仅安装ORACLE软件,不建库)

./OracleShellInstall.sh -i 10.211.55.110 -n dbca_stby -o cdb19c -opa 32545013 -w Y

DBCA命令行搭建Oracle ADG的流程

二、ADG搭建准备

a.配置hosts文件

主库:

cat <<EOF >> /etc/hosts
##FOR DG BEGIN
10.211.55.110 dbca_stby
##FOR DG END
EOF

DBCA命令行搭建Oracle ADG的流程DBCA命令行搭建Oracle ADG的流程

备库:

cat <<EOF >> /etc/hosts
##FOR DG BEGIN
10.211.55.100 rac01
10.211.55.101 rac02
10.211.55.105 rac-scan
##FOR DG END
EOF

DBCA命令行搭建Oracle ADG的流程

b.配置静态监听和TNS

listener.ora增加静态监听:

grid用户执行:

rac01

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

DBCA命令行搭建Oracle ADG的流程

rac02

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

DBCA命令行搭建Oracle ADG的流程

备库

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

DBCA命令行搭建Oracle ADG的流程

重启监听

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

##备库重启监听
lsnrctl start

DBCA命令行搭建Oracle ADG的流程DBCA命令行搭建Oracle ADG的流程DBCA命令行搭建Oracle ADG的流程
DBCA命令行搭建Oracle ADG的流程

tnsnames.ora增加TNS:

oracle用户执行:

cat <<EOF >> $TNS_ADMIN/tnsnames.ora
##FOR DG BEGIN
CDB19C =
(DESCRIPTION =
	(ADDRESS_LIST =
		(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
	)
	(CONNECT_DATA =
		(SERVICE_NAME = cdb19c)
	)
)
CDB19C1 =
(DESCRIPTION =
	(ADDRESS_LIST =
		(ADDRESS = (PROTOCOL = TCP)(HOST = rac01)(PORT = 1521))
	)
	(CONNECT_DATA =
		(SERVICE_NAME = cdb19c)
	)
)
CDB19C2 =
(DESCRIPTION =
	(ADDRESS_LIST =
		(ADDRESS = (PROTOCOL = TCP)(HOST = rac02)(PORT = 1521))
	)
	(CONNECT_DATA =
		(SERVICE_NAME = cdb19c)
	)
)
CDB19C_STBY =
(DESCRIPTION =
	(ADDRESS_LIST =
		(ADDRESS = (PROTOCOL = TCP)(HOST = dbca_stby)(PORT = 1521))
	)
	(CONNECT_DATA =
		(SERVICE_NAME = cdb19c_stby)
	)
)
##FOR DG BEGIN
EOF

tnsping测试连通性:

tnsping cdb19c
tnsping cdb19c1
tnsping cdb19c2
tnsping cdb19c_stby

DBCA命令行搭建Oracle ADG的流程
DBCA命令行搭建Oracle ADG的流程
DBCA命令行搭建Oracle ADG的流程
DBCA命令行搭建Oracle ADG的流程

c.主库配置参数

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

FORCE_LOGGING		LOG_MODE     CDB
--------------------------------------- 
YES					ARCHIVELOG   YES

如果没有开启强制日志:

alter database force logging;

如果没有开启归档日志:

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

DBCA命令行搭建Oracle ADG的流程

d.主库添加stanby 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;

DBCA命令行搭建Oracle ADG的流程

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

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

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

DBCA命令行搭建Oracle ADG的流程

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;

DBCA命令行搭建Oracle ADG的流程

三、DBCA创建物理备库

oracle用户执行:

dbca -silent -createDuplicateDB \
-gdbName cdb19c \
-sid cdb19c \
-sysPassword oracle \
-primaryDBConnectionString 10.211.55.105:1521/cdb19c \
-nodelist dbca_stby \
-databaseConfigType SINGLE \
-createAsStandby -dbUniqueName cdb19c_stby \
-datafileDestination '/oradata'

DBCA命令行搭建Oracle ADG的流程
DBCA命令行搭建Oracle ADG的流程

DBCA物理DG创建成功。

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

--主库设置DG参数
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(CDB19C,CDB19C_STBY)' sid='*';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=CDB19C' sid='*';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=cdb19c_stby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=CDB19C_STBY' 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=CDB19C_STBY sid='*';
ALTER SYSTEM SET FAL_CLIENT=CDB19C sid='*';
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA','/oradata/CDB19C_STBY' SCOPE=SPFILE sid='*';
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+DATA','/oradata/CDB19C_STBY' SCOPE=SPFILE sid='*';
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO sid='*';

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

--备库设置DG参数
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(CDB19C_STBY,CDB19C)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=CDB19C_STBY';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=CDB19C ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=CDB19C';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=4;
ALTER SYSTEM SET FAL_SERVER=CDB19C;
ALTER SYSTEM SET FAL_CLIENT=CDB19C_STBY;
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/oradata/CDB19C_STBY','+DATA' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/oradata/CDB19C_STBY','+DATA' SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

查看OMF参数配置:

show parameter db_create_file_dest

DBCA命令行搭建Oracle ADG的流程
DBCA命令行搭建Oracle ADG的流程

注意:如果同时设置OMG和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='*';

DBCA命令行搭建Oracle ADG的流程
DBCA命令行搭建Oracle ADG的流程

六、测试同步

主库创建测试数据:

alter session set container=orcl;

DBCA命令行搭建Oracle ADG的流程

sqlplus lucifer/lucifer@orcl

DBCA命令行搭建Oracle ADG的流程

备库查看是否同步:

DBCA命令行搭建Oracle ADG的流程

至此,ADG已搭建完毕。感谢食用~

参考文章:

官方文档12c:Using DBCA to Create a Data Guard Standby 12C

官方文档19c:Using DBCA to Create a Data Guard Standby 19C

官方文档21c:Using DBCA to Create a Data Guard Standby 21C

MOS文档:Creating a Physical Standby database using DBCA duplicate (Doc ID 2283697.1)

以上就是DBCA搭建Oracle ADG的详细内容,更多关于DBCA搭建Oracle ADG的资料请关注三水点靠木其它相关文章!

Oracle 相关文章推荐
Oracle笔记
Apr 05 Oracle
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
Apr 06 Oracle
mybatis使用oracle进行添加数据的方法
Apr 27 Oracle
Oracle 区块链表创建过程详解
May 15 Oracle
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
Jun 04 Oracle
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
Jun 21 Oracle
Oracle 临时表空间SQL语句的实现
Sep 25 Oracle
详解Oracle数据库中自带的所有表结构(sql代码)
Nov 20 Oracle
Oracle数据库中通用的函数实例详解
Mar 25 Oracle
Oracle 多表查询基本语法实例
Apr 18 Oracle
Oracle使用别名的好处
Apr 19 Oracle
分析SQL窗口函数之排名窗口函数
Apr 21 Oracle
ORACLE数据库应用开发的三十个注意事项
Jun 07 #Oracle
Oracle创建只读账号的详细步骤
Oracle11g R2 安装教程完整版
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
使用Navicat Premium工具将oracle数据库迁移到MySQL
Oracle更换为MySQL遇到的问题及解决
May 21 #Oracle
oracle覆盖导入dmp文件的2种方法
You might like
php中socket通信机制实例详解
2015/01/03 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
js面向对象的写法
2016/02/19 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
Python functools模块学习总结
2015/05/09 Python
django之自定义软删除Model的方法
2019/08/14 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
Python ellipsis 的用法详解
2020/11/20 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
房产委托公证书样本
2014/04/04 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
办公室禁烟通知
2015/04/23 职场文书
员工手册编写范本
2015/05/14 职场文书
交通事故被告代理词
2015/05/23 职场文书
党支部审查意见
2015/06/02 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
预备党员表决心的话
2015/09/22 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers