前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 19c DG主库不停机搭建(主库RAC、备库standalone)

Oracle 19c DG主库不停机搭建(主库RAC、备库standalone)

作者头像
甚至熊熊
发布2022-04-27 19:05:19
3K0
发布2022-04-27 19:05:19
举报

这篇梳理一下主库不停机状态下搭建DG备库的流程。

一、环境规划

主库(RAC)

备库(standalone)

说明

db_name

xkdb

xkdb

必须一致

db_unique_name

xkdb

xkdg

必须不一致

instance_name

xkdb

xkdg

一致不一致都行

IP

192.168.10.101/102

192.168.10.8

tns_name

tnsxkdb

tnsxkdg

数据盘

+DATA

+DG_DATA

归档盘

+CRS

+DG_REDO

standby不用建库

二、主库设置

1. 主库是否开启归档及force logging

代码语言:javascript
复制
select log_mode,force_logging from v$database;
alter database force logging;

2. 主库参数

代码语言:javascript
复制
alter system set log_archive_config='DG_CONFIG=(xkdb,xkdg)' scope=both sid='*';

alter system set log_archive_dest_1='LOCATION=+data VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=xkdb' scope=both sid='*';

alter system set log_archive_dest_2='SERVICE=tnsxkdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=xkdg' scope=both sid='*';

alter system set standby_file_management=auto scope=both sid='*';

alter system set fal_client='tnsxkdb' scope=both sid='*';
alter system set fal_server='tnsxkdg' scope=both sid='*';

/* 注意:以下两个参数是需要重启后生效的,为了实现主库不停机,我们在duplicate的时候设置
1、db_file_name_convert
2、log_file_name_convert
另外有些教程会让修改主库的db_unique_name也是需要重启,但是该参数安装完成后就有值,所以没必要
*/

3. TNS配置

代码语言:javascript
复制
--节点1:
tnsxkdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.101)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xkdb)
    )
  )

tnsxkdg =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.8)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xkdb)
    )
  )

--节点2:
tnsxkdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.102)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xkdb)
    )
  )

tnsxkdg =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.8)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xkdb)
    )
  )

4. 拷贝密码文件

将主库密码文件传输到备库 查询主库pw文件位置

  • 方法1:srvctl config database -d xkdb
  • 方法2:asmcmd 进去 pwget --dbuniquename xkdb
代码语言:javascript
复制
--grid
asmcmd pwcopy +DATA/XKDB/PASSWORD/pwdxkdb.267.1099262109 /tmp/mypwfile

--root
scp /tmp/mypwfile 192.168.10.8:/tmp

--备库
cd /tmp
mv mypwfile orapwxkdg
chown oracle:oinstall orapwxkdg
cp orapwxkdg $ORACLE_HOME

5. 添加附加日志

redo log数量+1,注意大小一致

代码语言:javascript
复制
alter database add standby logfile thread 1 group 11 ('+DATA') size 200M;
alter database add standby logfile thread 1 group 12 ('+DATA') size 200M;
alter database add standby logfile thread 1 group 13 ('+DATA') size 200M;

三、备库设置

1. 创建参数文件

代码语言:javascript
复制
su - oracle
cd $ORACLE_HOME/dbs
vi initxkdg.ora

--添加
db_name=xkdb 

--启动
startup nmount

2. 创建文件夹

代码语言:javascript
复制
--oracle
mkdir -p /u01/app/oracle/admin/xkdg/adump

3. 静态监听

备库为什么一定要配置静态监听? nomount状态下必须使用静态监听才能连接到实例

代码语言:javascript
复制
su - grid
--监听参数文件添加名为listener1的静态监听
LISTENER1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = xkdg)(PORT = 1522))
      )
    )
  )

SID_LIST_LISTENER1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = xkdb)
      (SID_NAME = xkdg)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
    )
  )

--启动
lsnrctl start listener1

4. TNS配置

主备库tns配置完可以分别tnsping测试通不通

代码语言:javascript
复制
--vi $ORACLE_HOME/network/admin/tnsnames.ora
TNSXKDG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.8)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xkdb)
    )
  )

TNSXKDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.101)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.102)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xkdb)
    )
  )

四、duplicate创建备库

1. duplicate脚本

代码语言:javascript
复制
--standby
rman target sys/"Oracle123"@tnsxkdb auxiliary sys/"Oracle123"@tnsxkdg << EOF
run {
	allocate channel c1 type disk;
	allocate channel c2 type disk;
	allocate channel c3 type disk;
	allocate channel c4 type disk;
	allocate channel c5 type disk;
	allocate channel c6 type disk;
	allocate channel c7 type disk;
	allocate channel c8 type disk;
	allocate auxiliary channel s1 type disk;
	allocate auxiliary channel s2 type disk;
	allocate auxiliary channel s3 type disk;
	allocate auxiliary channel s4 type disk;
	allocate auxiliary channel s5 type disk;
	allocate auxiliary channel s6 type disk;
	allocate auxiliary channel s7 type disk;
	allocate auxiliary channel s8 type disk;
	duplicate target database
		for standby
		from active database nofilenamecheck
		dorecover
		spfile
		parameter_value_convert 'xkdb','xkdg','+DATA','+DG_DATA','+CRS','+DG_REDO'
		set db_name='XKDB'
		set db_unique_name='xkdg'
		set db_create_file_dest='+DG_DATA'
		set db_create_online_log_dest_1='+DG_REDO'
		set cluster_database='FALSE'
		set fal_server='tnsxkdb'
		set remote_listener=''
		set local_listener=''
		set standby_file_management='AUTO'
		set log_archive_dest_1='LOCATION=+DG_DATA VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=xkdg'
		set log_archive_dest_2='SERVICE=tnsxkdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=xkdb'
		set control_files='+DG_DATA'
		set db_file_name_convert='+DATA','+DG_DATA'
		set log_file_name_convert='+CRS','+DG_REDO'
		set instance_name='xkdg'
		;
	}
EOF

2.备库状态查看

duplicate完成,登录备库查看状态,执行open

代码语言:javascript
复制
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       MOUNTED
         3 TEST01                         MOUNTED
SQL> alter database open;

Database altered.

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 TEST01                         MOUNTED

3. 备库添加standby redo log

代码语言:javascript
复制
alter database add standby logfile thread 1 group 11 ('+DG_DATA') size 200M;
alter database add standby logfile thread 1 group 12 ('+DG_DATA') size 200M;
alter database add standby logfile thread 1 group 13 ('+DG_DATA') size 200M;
													   
alter database add standby logfile thread 2 group 14 ('+DG_DATA') size 200M;
alter database add standby logfile thread 2 group 15 ('+DG_DATA') size 200M;
alter database add standby logfile thread 2 group 16 ('+DG_DATA') size 200M;

五、开启同步

19c的开启同步命令与11g有变化,但是原先命令也兼容

代码语言:javascript
复制
--实时同步
alter database recover managed standby database disconnect;

--日志切换才同步
alter database recover managed standby database using archived logfile disconnect;

--取消同步
alter database recover managed standby database cancel;

--查看状态
select name,open_mode,database_role,protection_mode,protection_level from v$database;

六、需要注意的

建完备库,发现能够正常登录使用,但是在集群资源里没有db服务,执行下方命令加入集群资源

代码语言:javascript
复制
--详细看-h
srvctl add database -db xkdg -o /u01/app/oracle/product/19.0.0/dbhome_1 -spfile /u01/app/oracle/product/19.0.0/dbhome_1/dbs/spfilexkdg.ora -role PHYSICAL_STANDBY -pwfile /u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapwxkdg -instance xkdg

另外: 1、不加入集群资源,不能用dbca -silent删库 2、正常dbca静默建库能加入集群资源

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境规划
  • 二、主库设置
    • 1. 主库是否开启归档及force logging
      • 2. 主库参数
        • 3. TNS配置
          • 4. 拷贝密码文件
            • 5. 添加附加日志
            • 三、备库设置
              • 1. 创建参数文件
                • 2. 创建文件夹
                  • 3. 静态监听
                    • 4. TNS配置
                    • 四、duplicate创建备库
                      • 1. duplicate脚本
                        • 2.备库状态查看
                          • 3. 备库添加standby redo log
                          • 五、开启同步
                          • 六、需要注意的
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档