本文简单介绍、总结一下,如何从Oracle 12C的ADG关系中移除一个备库,下面案例的操作过程仅供参考,具体操作根据实际情况进行调整。大体步骤如下所示。
环境介绍:
当前环境为一主两备库的ADG架构
DG_DB_01 CentOS 7.9.2009 Oracle 12C
DG_DB_02 CentOS 7.9.2009 Oracle 12C
DG_DB_03 CentOS 7.9.2009 Oracle 12C
我们为了节省资源,想将其中一台备库DG_DB_02从ADG关系中拿走,将DG从一主两备变成一主一备的关系.
操作步骤
首先检查DG中主库和备库的一些参数,我们分别在DG的主库和备库上执行下面SQL,了解确认相关参数的配置信息
#备库DG_DB_02上查看下面三个参数
show parameter db_unique_name;
show parameter log_archive_dest_1;
show parameter log_archive_dest_2;
show parameter log_archive_dest_3;
#主库DG_DB_01上执行下面SQL,查看相关参数
SET linesize 200
SET pagesize 80 col name
FOR a24 col value
FOR a80
SELECT name,
value
FROM v$parameter
WHERE name IN ('log_archive_config',
'db_file_name_convert',
'log_file_name_convert',
'log_archive_dest_1',
'log_archive_dest_2',
'log_archive_dest_3',
'log_archive_dest_state_1',
'log_archive_dest_state_2',
'log_archive_dest_state_3',
'dg_broker_start',
'dg_broker_config_file1',
'dg_broker_config_file2',
'dg_broker_config_file3',
'standby_archive_dest',
'standby_file_management',
'fal_server',
'fal_client',
'dg_broker');
由于这里没有启用Data Guard Broker,那么下面操作都是手动操作
主库DG_DB_01操作
SQL> show parameter log_archive_dest_2;
SQL> show parameter log_archive_config;
NAME TYPE VALUE
---------------------- ---------------- ------------------------------
log_archive_config string dg_config=(dg_master,dg_slave,dg_slave2)
SQL>
执行下面命令,将log_archive_dest_2参数清空,另外,从参数log_archive_config中移除备库DG_DB_02的db_unique_name:
alter system set log_archive_dest_2='' scope=both;
alter system set log_archive_config='dg_config=(dg_master,dg_slave2)' scope=both;
如果是RAC环境的话,执行下面SQL语句
alter system set log_archive_dest_2='' scope=both sid='*';
alter system set log_archive_config='dg_config=(dg_master,dg_slave2)' scope=both sid='*';
检查确认修改成功
show parameter log_archive_dest_2;
show parameter log_archive_config;
如果fal_server指向了这个DG_DB_02这个备库的话,那么必须从参数fal_server将其移除
SQL> show parameter fal_server;
NAME TYPE VALUE
--------------------- ----------------- ------------------------------
log_archive_config string dg_slave,dg_slave2
SQL> alter system set fal_server='dg_slave2' scope=both;
备库DG_DB_02操作
--清空参数log_archive_dest_n的值,这里n为2,log_archive_dest_2
show parameter log_archive_dest_2;
alter system set log_archive_dest_2='' scope=both;
--修改log_archive_config
SQL>show parameter log_archive_config
SQL> show parameter log_archive_config;
NAME TYPE VALUE
------------------ --------------------- ------------------------------
log_archive_config string dg_config=(dg_master,dg_slave,dg_slave2)
SQL>
SQL>alter system set log_archive_config='' scope=both;
如果DG环境是DG borker的话
主库
在Broker中移除备库
dgmgrl sys/****@*****
dgmgrl> disable database <db_unique_name>; #备库的db_unique_name
dgmgrl> remove database <db_unique_name>;
dgmgrl> show configuration verbose; #备库不会显示在配置文件中。
从sqlplus中进入数据库
sqlplus sys/****@***** as sysdba
show parameter log_archive_dest_n #备库对于的规定日志日志,n用具体数字替换
alter system set log_archive_dest_n='' scope=both sid='*' ;
show parameter log_archive_config;
alter system set log_archive_config='dg_config=(PRIMARY,STANDBY1,STANDBY2)' scope=both
备库
sqlplus sys/****@**** as sysdba
show parameter dg_broker_config;
alter system set DG_BROKER_CONFIG_FILE1='' scope=both sid='*';
alter system set DG_BROKER_CONFIG_FILE2='' scope=both sid='*';
文章转载自DBA闲思杂想录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




