Oracle数据库管理每周一例-第十七期 ADG

Oracle数据库管理每周一例(12.2,18c,19c) 2020-10-16

  • 第十七期 ADG
    • 1.概念
    • 2.环境说明
    • 3.搭建流程-主库处理
      • 1.配置静态监听
      • 2.配置本地命名
      • 3.数据库参数配置
      • 4.生成pfile和密码文件
    • 4.搭建流程-备库处理
      • 1.创建目录并上传密码文件
      • 2.配置静态监听
      • 3.添加数据库服务
      • 4.修改参数文件
    • 5.搭建流程-创建DG/ADG
      • 1.复制数据库并正确启动备库
      • 2.创建dg broker配置
      • 3.配置ADG
    • 下期预告:

第十七期 ADG

中秋+国庆假期算是停更了两周,嘿嘿。结果祖国母亲生日+中秋那天我这边某机房断电了,虽然没有影响我手上的机器,但是作为整个中心稀有的DBA还是帮助其他业务线处理了下断电后数据库的相关问题,算是假期中的一个小插曲

1.概念

首先,DG,Data Guard,简单来说就是两套Oracle数据库保持数据同步的一种容灾技术。目前主要分为物理备库(Physical Standby)和逻辑备库(Logical Standby)两种DG方式,一般采用物理备库这种方式(逻辑备库本身有一些小问题)。
而ADG(Active - Data Guard)是11g引入的一个新特性,本来的物理备库,备端数据库是处于mount状态,只有在switchover或者failover后才能open可用。而ADG可以让备库处于OPEN - READ ONLY WITH APPLY,备库与主库实时同步且可读。ADG也提供了一种读写分离架构。
下面讲解一下ADG的构建,这里主要是针对使用ASM存储,开启OMF,单节点对单节点的搭建方式,适用于单实例ADG搭建也适合RAC使用VIP进行搭建。由于DG是基于CDB级别的,所以多租户环境和普通环境搭建过程没有差异。
下面搭建过程讲解基于12.2版本,主要是针对成功案例修改后的命令展示,没有啥截图哈。

2.环境说明

Oracle数据库管理每周一例-第十七期 ADG_第1张图片

3.搭建流程-主库处理

1.配置静态监听

添加一个名称为lsnr2,端口为1524的静态监听用于DG

su - grid
srvctl add listener -l lsnr2 -o $ORACLE_HOME -p 1524
cd /u01/app/12.2.0/grid/network/admin
vim listener.ora
SID_LIST_LSNR2 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = prod)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
      (SID_NAME = prod)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = prod_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
      (SID_NAME = prod)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )
  #RAC中每个实例都要创建对应实例的静态监听
srvctl start listener -l lsnr2

2.配置本地命名

主库本地命名为prod,备库本地命名为sbdb

su - oracle
cd /u01/app/oracle/product/12.2.0/dbhome_1/network/admin
vim tnsnames.ora
PROD =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.11)(PORT = 1524))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = prod)
    )
  )

SBDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.111)(PORT = 1524))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = sbdb)
    )
  )

3.数据库参数配置

su - oracle
sqlplus / as sysdba
shutdown immediate
startup mount
alter database archivelog;
alter database force logging;
#开启归档并开启强制日志

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(prod,sbdb)' sid='*';
alter system set fal_client='prod' sid='*';    
alter system set FAL_SERVER='sbdb' sid='*';
alter system set dg_broker_config_file1='+DATA/dr1prod.dat' sid='*';
alter system set dg_broker_config_file2='+FRA/dr2prod.dat' sid='*';
alter system set standby_file_management=AUTO scope=both sid='*';
#调整DG相关配置

alter database add standby logfile group 30 ('+DATA') size 2G;
alter database add standby logfile group 31 ('+DATA') size 2G;
alter database add standby logfile group 32 ('+DATA') size 2G;
alter database add standby logfile group 33 ('+DATA') size 2G;
alter database add standby logfile group 34 ('+DATA') size 2G;
#添加standby日志组,这里需要注意一点,standby日志文件组大小必须于redo日志组大小一致,数量比实例日志组数量多1-3组,需要预先规划好;如果是RAC环境,logfile后还需要添加thread X关键字,每个实例都需要配置单独thread的standby日志组

4.生成pfile和密码文件

su - oracle
sqlplus / as sysdba
create pfile='/home/oracle/initsbdb.ora' from spfile;
scp initsbdb.ora 10.10.10.111:~
su - grid
asmcmd
asmcmd> pwcopy +DATA/PROD/PASSWORD/pwdprod.xxxx.xxxxxxx /home/grid/pwdsbdb
asmcmd> exit
scp pwdsprodcdb 10.10.10.111:~

4.搭建流程-备库处理

1.创建目录并上传密码文件

su - oracle
mkdir -p /u01/app/oracle/audit/sbdb/
mkdir -p /u01/app/oracle/admin/sbdb/adump
#RAC环境每个实例都要创建对应目录

su - grid
asmcmd
#创建ASM磁盘组中对应目录(略)
asmcmd> pwcopy /home/grid/pwdsbdb +DATA/SBDB/PASSWORD/pwdsbdb

2.配置静态监听

添加一个名称为lsnr2,端口为1524的静态监听用于DG

su - grid
srvctl add listener -l lsnr2 -o $ORACLE_HOME -p 1524
cd /u01/app/12.2.0/grid/network/admin
vim listener.ora
SID_LIST_LSNR2 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sbdb)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
      (SID_NAME = sbdb)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = sbdb_DGMGRL)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
      (SID_NAME = sbdb)
    )
    (SID_DESC =
      (program = extproc)
      (ORACLE_HOME = /u01/app/oracle/product/12.2.0/dbhome_1)
      (SID_NAME = plsextproc)
    )
  )
  #RAC中每个实例都要创建对应实例的静态监听
srvctl start listener -l lsnr2

3.添加数据库服务

su - oracle
单实例:
srvctl add database -db sbdb -oraclehome $ORACLE_HOME spfile +DATA/SBDB/PARAMETERFILE/spfilesbdb.ora -role PHYSICAL_STANDBY -startoption MOUNT -stopoption IMMEDIATE -dbname prod -diskgroup DATA,FRA 

RAC:
srvctl add database -db sbdb -oraclehome $ORACLE_HOME -dbtype RAC -spfile +DATA/SBDB/PARAMETERFILE/spfilewgdbdg.ora -role PHYSICAL_STANDBY -startoption MOUNT -stopoption IMMEDIATE -dbname prod -diskgroup DATA,FRA
srvctl add instance -db sbdb -i sbdbg1 -n hostname1
srvctl add instance -db sbdb -i sbdb2 -n hostname2
srvctl add instance -db sbdb -i sbdb3 -n hostname3
...

srvctl modify database -d sbdb -pwfile +DATA/SBDB/PASSWORD/pwdsbdb

4.修改参数文件

su - oracle
vim initsbdb.ora
#修改
LOG_ARCHIVE_CONFIG='DG_CONFIG=(sbdb,prod)' 
fal_client='sbdb'    
FAL_SERVER='prod'
dg_broker_config_file1='+DATA/dr1sbdb.dat'
dg_broker_config_file2='+FRA/dr2sbdb.dat'
#添加
db_unique_name='sbdb'
sqlplus / as sysdba
create spfile from pfile='/home/oracle/initsbdb.ora'
startup nomount

5.搭建流程-创建DG/ADG

1.复制数据库并正确启动备库

su - oracle
rman target sys/...@prod auxiliary sys/...@sbdb
rman> duplicate target database for standby nofilenamecheck from active database;

备库:
su - oracle
sqlplus / as sysdba
shut immediate
srvctl start database -db sbdb

主备库均执行以下SQL:

alter system set dg_broker_start=true;

2.创建dg broker配置

dgmgrl sys/...@prod
dgmgrl> create configuration testdg as primary database is prod connect identifier is prod;
dgmgrl> add database sbdb as connect identifier is sbdb;
dgmgrl> enable configuration;
dgmgrl> show configuration;
#此时DG已搭建完成 

3.配置ADG

备库:

su - oracle
sqlplus / as sysdba
alter database open;
alter database recover managed standby database using current logfile disconnect;
alter pluggable database all open;
dgmgrl sys/...@wgdbaass
dgmgrl>
	edit database prod set property logxptmode='sync';
	edit database sbdb set property logxptmode='sync';
	disable configuration;
	enable configuration;
	show configuration;
	show database prod;
	show database sbdb;

RAC环境备库还需要将其他实例启动到open状态,主备库数据实时同步且备库可查询。
下面为生产环境马赛克后的截图,仅供参考:
Oracle数据库管理每周一例-第十七期 ADG_第2张图片

下期预告:

待定

你可能感兴趣的:(Oracle,数据库)