暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

Oracle 11gR2 RAC集群新增ADG备库实施方案(for AIX)

原创 zwtian 2025-05-27
533

一、概述

核心业务系统是企业运行的中枢,处理账户管理、支付、清算等关键操作,而承载其业务的数据库的数据安全和高可用就变得尤为至关重要,为了应对不可预见的灾难(如自然灾害、设备故障、人为操作失误等),确保业务的连续性;为了进一步保障核心业务系统数据的安全性,提升系统的高可用和容灾能力;同时,为了缓解现有核心备库的查询负载压力,我们采用 Oracle 11g 的 Active Data Guard(ADG)技术,在原有核心业务数据库容灾系统的基础上增加一套非级联ADG备库,旨在为核心业务数据库的数据安全和业务系统的高可靠、高性能增加进一步保障。

本方案基于AIX 7.1平台,在原有一主一备的基础上新增一套两节点 RAC 架构的非级联ADG 备库。

1.1 ADG实施前提条件

主库主机和备库主机硬件平台一致,如都为UNIX平台,不支持异构平台,可以是不同生产厂家、不同性能的机器,但必须是相同的操作系统类型,最好大版本保持一致;

主库和备库 Oracle 软件需提前安装,且数据库版本和补丁版本一致,备库不需要创建数据库;

备库数据文件存储空间要能容纳主库数据文件;

主库运行在归档模式下,并且开启强制日志;

主库归档日志文件目录不能通过log_archive_dest初始化参数设置,必须通过log_archive_dest_n初始化参数设置;

主库和备库sys用户密码一致,且主库初始化参数remote_login_passwordfile 必须设置为 EXCLUSIVE;

主库和备库的 DB_UNIQUE_NAME需设置为不同的值,如果设置了相同的值,则在做switchover时,备库会报“ORA-01102 cannot mount database in EXCLUSIVE mode”,可能还存在其他问题。

1.2 ADG配置步骤简介

在搭建 ADG 的过程中,主要涉及前置条件检查、主库配置和备库配置等三个方面。

1.2.1 前置条件检查

检查主备库的操作系统硬件架构是否一致,网络端口是否开放

文件系统和 ASM 磁盘空间是否满足要求,软件版本和补丁是否一致

1.2.2 主库配置

归档模式检查、强制日志开启

参数修改、standby 日志创建、密码文件拷贝

1.2.3 备库配置

配置静态监听

参数修改、密码文件同步

备库数据初始化

备库开启日志应用并打开数据库

备库配置归档日志删除脚本和状态监控脚本

二、前期准备 

查询当前核心业务系统数据库主库数据库、GI版本及补丁信息。在新加的ADG备库环境安装相同版本的GI软件及数据库软件,并将补丁信息与主库环境保持一致。

所需软件列表:

序号

软件名称

软件列表

1

操作系统

AIX 7.1

2

基础软件包

p13390677_112040_AIX64-5L_1of7.zip

p13390677_112040_AIX64-5L_2of7.zip

p13390677_112040_AIX64-5L_3of7.zip

3

OPatch工具

p6880880_112040_AIX64-5L.zip

4

PSU补丁包(含GI\DB\OJVM)

与主库一致

相关安装介质统一上传到/u01/install 目录下,OPatch 工具、PSU补丁需要在两个节点都上传,Database 和 Grid 软件仅需在节点一上传;

三、安装规划

3.1 主备架构信息规划

本次新增ADG备库采用非级联模式创建

非级联架构的优缺点

在非级联架构中,所有物理备库直接从主库接收 redo 数据;这意味着每个备库与主库保持直接的同步关系。

优点

数据传输简单直接:所有备库直接从主库获取 redo 数据,不依赖其他备库,数据传输路径简单。

减少单点故障风险:每个备库独立连接主库,即使某个备库出现故障,不会影响其他备库的同步。

快速故障切换:由于所有备库都直接与主库保持连接,当主库故障时,可以快速故障切换到任何一个备库。

缺点

带宽需求大:如果有多个备库,主库需要为每个备库发送 redo 数据,可能会导致主库的网络带宽压力增大,尤其是在多个远程备库场景下。

级联架构的优缺点

在级联架构中,主库只向一个或少数几个中间备库传输 redo 数据,这些备库再将 redo 数据转发给其他备库。这种方式减少了主库直接连接的备库数量。

优点

减轻主库压力:主库只需要向中间备库传输 redo 数据,而中间备库负责将 redo 数据传输给其他级联的备库,减少了主库的网络负担和带宽需求。

远程备库效率提升:如果某些备库位于远程数据中心,级联备库可以作为传输中间节点,减少主库的远程传输负担,并提升数据传输效率。

更灵活的网络配置:可以将备库分布在不同区域或数据中心,通过级联架构减少跨地域的网络传输次数。

缺点

增加单点故障风险:如果级联的中间备库故障,依赖该备库的下级备库将无法继续接收 redo 数据。为防止这种情况,通常需要设置多个级联链路,但这也会增加管理复杂性。

延迟增加:由于 redo 数据需要经过中间备库再传递给其他备库,可能会导致下游备库的数据同步延迟,尤其是当中间备库负载较高时。

管理复杂度增加:需要管理多个备库之间的级联关系,配置、监控和故障处理的复杂度增加。

总结

通过对核心业务系统跑批期间的网络带宽流量的监控发现,核心数据库跑批期间的网络带宽大概在4MB/s左右,目前核心数据库主机网卡为万兆网卡,在这种带宽下即便是日志传输量最繁忙的跑批期间,带宽使用率也不高,且本次新增的备库与主库都在主中心,故而排除了网络延迟及日志传输对主库性能影响的可能;所以,本次新增ADG备库采用非级联架构。

3.2 新备库文件系统规划

文件系统:

/u01和/目录建议使用不同的磁盘,创建不同的VG

挂载点

推荐大小

用途说明

/

 

 

/home

 

 

/tmp

 

 

/u01

 

存放 DB 安装软件和运行日志

 

安装目录

目录名称

规划路径

集群软件BASE目录

/u01/app/grid_base

集群软件HOME目录

/u01/app/grid/11.2/gi_1

软件清单目录

/u01/app/oraInventory

数据库软件BASE目录

/u01/app/oracle

数据库软件HOME目录

/u01/app/oracle/product/11.2/db_1

软件介质存放目录

/u01/install

 

3.3 备库ASM磁盘组规划

   

ASM磁盘组规划

磁盘组名称

冗余度

容量

用途

+OCR

HIGH

10G*5

OCR、VoteDisk

+FRA01

EXTERN

-

REDO LOG

+DATA01

EXTERN

-

DATA_FILE

+ARCH01

EXTERN

-

FLASH\ARCHIVE LOG

+UNDO01

EXTERN

-

UNDO

 

3.4 新备库集群信息规划

新备库集群信息

 

节点1

节点2

主机名

 

 

Public域名

 

 

Public IP

 

 

Virtual名称

 

 

Virtual域名

 

 

Virtual IP

 

 

Private名称

 

 

Private域名

 

 

Private IP

 

 

SCAN名称

 

SCAN域名

 

SCAN IP

 

集群名称

 

3.5 主备数据库信息规划

 

主库

备库1

备库2

GI&DB版本

11.2.0.4

11.2.0.4

11.2.0.4

PSU版本

11.2.0.4.xxxx

11.2.0.4.xxxx

11.2.0.4.xxxx

DB_NAME

XXDB

XXDB

XXDB

DB_UNIQUE_NAME

XXDB

DGXXDB1

DGXXDB2

Instance_Name

XXDB1/XXDB2

DGXXDB11/DGXXDB12

DGXXDB21/DGXXDB22

COMPATIBLE

11.2.0.4.0

数据存储方式

ASM

ASM

ASM

归档目录

+ARCH01

+ARCH01

+ARCH01

数据目录

+DATA01

+DATA01

+DATA01

OS

AIX 7.1

日志同步模式

ASYNC

保护模式

MAX PERFORMANCE

注:1.主备库的 db_name 是一致的,db_unique_name 必须不一致;

2.主备库的 compatible 参数必须一致。

四、创建过程

4.1 主库配置

4.1.1 配置TNS

## 所有节点进行配置

su - oracle

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

XXDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.65)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = xxdb)

    )

  )

 

DGXXDB1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgxxdb1)

    )

  )

DGXXDB2 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.161)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgxxdb2)

    )

  )

 

4.1.2 参数设置

## 备份参数文件

create pfile='/home/oracle/xxdb_pfile.ora' from spfile;

##配置初始化参数

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(xxdb,dgxxdb1,dgxxdb2)' scope=both;

alter system set LOG_ARCHIVE_DEST_4='SERVICE=dgxxdb2 LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgxxdb2' scope=both;

alter system set LOG_ARCHIVE_DEST_STATE_4=ENABLE scope=both;

alter system set FAL_SERVER='dgxxdb1','dgxxdb2' scope=both;

4.1.3 复制密码文件

## 传输密码文件到新备库

scp /tmp/orapwxxdb 192.168.2.161:/tmp

 

4.2 原备库配置

4.2.1 参数设置

## 备份现有参数

vi /home/oracle/dgxxdb1_pfile.ora

##调整参数

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(dgxxdb1,xxdb,dgxxdb2)' scope=both;

alter system set LOG_ARCHIVE_DEST_4='SERVICE=dgxxdb2 LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgxxdb2' scope=both;

alter system set LOG_ARCHIVE_DEST_STATE_4=ENABLE scope=both;

alter system set FAL_SERVER=‘xxdb’,'dgxxdb2' scope=both;

 

4.2.2 配置TNS

su - oracle

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

XXDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.65)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = xxdb)

    )

  )

 

DGXXDB1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgxxdb1)

    )

  )

DGXXDB2 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.161)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgxxdb2)

    )

  )

 

4.3 新备库配置

4.3.1 创建相关目录

## 创建诊断目录

mkdir -p /u01/app/oracle/admin/dgxxdb2/adump

 

4.3.2 配置静态监听

su - grid

cd $ORACLE_HOME/network/admin

vi listener.ora

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

         (GLOBAL_DBNAME=dgxxdb2)

         (SID_NAME=dgxxdb21)          

         (ORACLE_HOME=/u01/app/oracle/product/11.2/db_1)

       )

      )

## 重启监听

srvctl stop listener

srvctl start listener

lsnrctl status

 

4.3.3 配置参数文件

## 修改备库的pfile

vi /home/oracle/dgxxdb2_pfile.ora

*.audit_file_dest='/oracle/app/oracle/admin/dgxxdb2/adump'

*.audit_trail='none'

*.cluster_database=TRUE

*.compatible='11.2.0.4.0'

*.control_files='+DATA01','+FRA01'

*.db_block_size=8192

*.db_create_file_dest='+DATA01'

*.db_create_online_log_dest_1='+DATA01'

*.db_create_online_log_dest_2='+FRA01'

*.db_name=‘xxdb’

*.diagnostic_dest='/oracle/app/oracle'

dgxxdb21.instance_number=1

dgxxdb22.instance_number=2

*.standby_file_management='AUTO'

dgxxdb22.thread=2

dgxxdb21.thread=1

dgxxdb22.undo_tablespace='UNDOTBS2'

dgxxdb21.undo_tablespace='UNDOTBS1'

db_unique_name='dgxxdb2'

LOG_ARCHIVE_CONFIG='DG_CONFIG=(dgxxdb2,dgxxdb1,xxdb)'

LOG_ARCHIVE_DEST_1='LOCATION=+DGRECOVERY VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgxxdb2'

LOG_ARCHIVE_DEST_2='SERVICE=xxdb LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=xxdb'

LOG_ARCHIVE_DEST_4='SERVICE=dgxxdb1 LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgxxdb1'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

LOG_ARCHIVE_DEST_STATE_4=ENABLE

fal_client='dgxxdb2'

FAL_SERVER=‘xxdb’,'dgxxdb1'

## 启动备库实例1到nomount,并创建spfile

export oracle_sid=dgxxdb21

sqlplus / as sysdba

startup nomount pfile='/home/oracle/dgxxdb2_pfile.ora';

create spfile='+DATA01' from pfile='/home/oracle/dgxxdb2_pfile.ora';

ls -l +DATA01/DGXXDB/PARAMETERFILE/spfile*

## 编辑init参数文件

cd $ORACLE_HOME/dbs

echo "spfile='+DATA01/DGXXDB2/PARAMETERFILE/spfile.256.1165945057'" > initdgxxdb21.ora

echo "spfile='+DATA01/DGXXDB2/PARAMETERFILE/spfile.256.1165945057'" > initdgxxdb22.ora

## 重启实例1并检查是否使用spfile

shutdown immediate

startup nomount

show parameter spfile

 

4.3.4 密码文件

## 将从主库拷贝的密码文件重命名

mv orapwxxdb orapwdgxxdb21

mv orapwxxdb orapwdgxxdb22

 

4.3.5 配置TNS

su - oracle

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

XXDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.65)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = xxdb)

    )

  )

 

DGXXDB1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.71)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgxxdb1)

    )

  )

DGXXDB2 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.161)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgxxdb2)

    )

  )

 

4.3.6 添加CRS资源

## 添加DB资源

srvctl add database -d dgxxdb2 -o /oracle/app/oracle/product/11.2.0/db_1 \

-p +data01/dgxxdb2/parameterfile/spfile.256.1179569797

## 添加实例资源

srvctl add instance -d dgxxdb2 -n node1_name -i dgxxdb21

srvctl add instance -d dgxxdb2 -n node2_name -i dgxxdb22

4.3.7 主备库TNS测试

## 使用TNSPING验证

tnsping xxdb

tnsping dgxxdb1

tnsping dgxxdb2

## 使用sqlplus验证

sqlplus sys/Xxxxxxxx@xxdb as sysdba

show parameter name

sqlplus sys/Xxxxxxxx@dgxxdb1 as sysdba

show parameter name;

sqlplus sys/Xxxxxxxx@dgxxdb2 as sysdba

show parameter name;

4.4 初始化新备库

ZDLRA方式优缺点

 优点:可以利用在ZDLRA上的备份直接恢复,无需额外占用存储空间,创建备库过程对于主库性能无任何影响;

 缺点:需要把ZDLRA中的备份集恢复到备库,操作步骤略微复杂。

DUPLICATE 方式优缺点

 优点:数据直接通过网络复制到备库,不需要在本地预留空间存放 RMAN 备份,通常用于库较大且主库或者备库没有本地空间存放 RMAN 备份集的情形;

 缺点:在 11G 中 duplicate 不可以使用压缩备份集,如果主库较大整个过程时间相对较长,可能会影响到主库性能,对主库 IO 或网络上的资源有一定影响,另外 duplicate 过程中可能会存在 hung 住的风险。

4.4.1 使用ZDLRA备份恢复新备库

本次操作采用这种方式来初始化新备库。

##将主库上的libra.so,钱夹,sqlnet.ora拷贝至新备库相同目录下

cd $ORACLE_HOME/lib

scp 192.168.2.61:$PWD/libra.so .

cd $ORACLE_HOME/dbs

mkdir zdlrax9

cd zdlrax9

scp 192.168.2.61:$PWD/cwallet* .

cd $ORACLE_HOME/network/admin

scp 192.168.2.61:$PWD/sqlnet.ora .

## 恢复控制文件

export ORACLE_SID=dgxxdb21

rman target / catalog /@<ZDLRA_TNS_NAME>

run{

allocate channel c1 type sbt_tape PARMS "SBT_LIBRARY=/<LIBRARY_PATH>/libra.so, ENV=(RA_WALLET='location=file:/<WALLET_PATH>/ra_wallet credential_alias=<wallet_alias>')";

restore standby controlfile;

release channel c1;

}

或者

run{

allocate channel c1 type 'sbt_tape' PARMS='SBT_LIBRARY=/<LIBRARY_PATH>/libra.so, ENV=(RA_WALLET=location=file:/<WALLET_PATH>/ra_wallet credential_alias=<wallet_alias>)';

restore standby controlfile;

release channel c1;

}

alter database mount;

## 恢复备库

run

{

allocate channel c1 type sbt_tape PARMS "SBT_LIBRARY=/<LIBRARY_PATH>/libra.so, ENV=(RA_WALLET='location=file:/<WALLET_PATH>/ra_wallet credential_alias=<wallet_alias>')";

allocate channel c2 type sbt_tape PARMS "SBT_LIBRARY=/<LIBRARY_PATH>/libra.so, ENV=(RA_WALLET='location=file:/<WALLET_PATH>/ra_wallet credential_alias=<wallet_alias>')";

restore database;

recover database;

release channel c1;

release channel c2;

}

或者:

run

{

allocate channel c1 type 'sbt_tape' PARMS='SBT_LIBRARY=/<LIBRARY_PATH>/libra.so, ENV=(RA_WALLET=location=file:/<WALLET_PATH>/ra_wallet credential_alias=<wallet_alias>)';

allocate channel c2 type 'sbt_tape' PARMS='SBT_LIBRARY=/<LIBRARY_PATH>/libra.so, ENV=(RA_WALLET=location=file:/<WALLET_PATH>/ra_wallet credential_alias=<wallet_alias>)';

restore database;

recover database;

release channel c1;

release channel c2;

}

 

4.4.2 使用DUPLICATE

## 测试连接

rman target sys/Xxxxxxxx@192.168.2.63:1521/xxdb auxiliary sys/Xxxxxxxx@dgxxdb2

## 编写duplicate脚本,并执行

此处连接 target 数据库时使用节点 1 的 VIP,是为了避免当主库是 RAC 环境时,备库 duplicate 过程中可能出现的报错 ORA-19505 和 ORA-27037。参见 MOS 文档:RMAN Active Duplicate for Standby for RAC Database Failing with Errors: ORA-19505, and ORA-27037(Doc ID 1551235.1)。

cat > /home/oracle/xxdb_adg_dup.sh <<'END'

export ORACLE_SID=dgxxdb21

rman target sys/Xxxxxxxx@192.168.2.63:1521/xxdb auxiliary sys/Xxxxxxxx@dgxxdb2 log='/home/oracle/xxdb_adg_dup.log' <<EOF

run {

allocate channel ch1 type disk;

allocate channel ch2 type disk;

allocate channel ch3 type disk;

allocate channel ch4 type disk;

allocate auxiliary channel ch5 type disk;

allocate auxiliary channel ch6 type disk;

allocate auxiliary channel ch7 type disk;

allocate auxiliary channel ch8 type disk;

duplicate target database for standby from active database dorecover nofilenamecheck;

release channel ch1;

release channel ch2;

release channel ch3;

release channel ch4;

release channel ch5;

release channel ch6;

release channel ch7;

release channel ch8;

}

exit

EOF

END

## 执行脚本

nohup sh xxdb_adg_dup.sh &

## 观察日志

tail -100f /home/oracle/xxdb_adg_dup.log

 

4.5 日志应用及验证

4.5.1 启动MRP进程

## 启动MRP数据同步进程

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

## 查看数据同步状态

set lines 222 pages 222

col name for a32

col value for a22

col time_computed for a25

col datum_time for a25

select name,value,time_computed,datum_time from v$dataguard_stats;

## 数据同步正常后关闭MRP进程,开启ADG,重新启动MRP

alter database recover managed standby database cancel;

alter database open;

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

## 开启实例2

srvctl start instance -d dgxxdb2 -i dgxxdb22

4.5.2 检查数据文件

## 检查数据文件

set lines 222 pages 222

col file_name for a50

col tablespace_name for a15

select file_name, tablespace_name, bytes/1024/1024 size_mb,status from dba_data_files;

## 检查日志文件

set lines 222 pages 222

col member for a50

col status for a10

select a.thread#,a.group#,b.type,b.member,a.bytes/1024/1024 size_mb,a.status

from v$log a,v$logfile b where a.group#=b.group#

union all

select a.thread#,a.group#,b.type,b.member,a.bytes/1024/1024 size_mb,a.status

from v$standby_log a,v$logfile b where a.group#=b.group# order by 3,1,2;

## 检查临时文件

set lines 222 pages 222

col FILE_NAME for a50

col TABLESPACE_NAME for a15

select FILE_NAME, TABLESPACE_NAME, BYTES/1024/1024 m,STATUS from dba_temp_files;

4.5.3 主备库修改TNS

## 将之前配置的TNS中的虚拟IP调整为SCAN IP或者域名

su - oracle

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

XXDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = db19scan.tzwdb.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = xxdb)

    )

  )

 

DGXXDB1 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = hxadg1scan.tzwdb.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgxxdb1)

    )

  )

DGXXDB2 =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = hxadg2scan.tzwdb.com)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgxxdb2)

    )

  )

4.5.4 验证ADG同步

## 备库检查数据同步状态

set lines 222 pages 222

col name for a32

col value for a22

col time_computed for a25

col datum_time for a25

select name,value,time_computed,datum_time from v$dataguard_stats;

## 查看日志同步是否存在延迟

col "apply delay(s)" for 99999999

col "log delay(s)" for 99999999

select substr(value,2,2)*24*3600+substr(value,5,2)*3600+substr(value,8,2)*60+substr(value,11,2) "apply

delay(s)",(sysdate-to_date(datum_time,'mm/dd/yyyy hh24:mi:ss'))*24*60*60 "log delay(s)" from

v$dataguard_stats where name='apply lag';

## 查看日志同步进程状态

col process for a10

col pid for a8

col status for a15

col client_process for a10

col client_pid for a10

col group# for a5

col sequence# for 9999999

col block# for 9999999

col blocks for 9999999

col delay_mins for 9999999

col thread# for 99

select process,pid,status,client_process,client_pid,group#,thread#,sequence#,block#,blocks,delay_mins

from v$managed_standby;

 

五、后续配置与监控

5.1 重点参数检查

set lines 222 pages 222

col name for a34

col value for a99

select name,value from v$parameter where name in (

'db_file_name_convert',

'log_file_name_convert',

'log_archive_dest_1',

'log_archive_dest_2',

'log_archive_dest_state_1',

'log_archive_dest_state_2',

'fal_server',

'fal_client',

'log_archive_config',

'log_archive_format',

'standby_file_management',

'remote_login_passwordfile',

'db_name',

'db_unique_name',

'audit_file_dest',

'control_files',

'local_listener',

'remote_listener',

'cluster_database',

'spfile',

'undo_tablespace')

union all

select 'FORCE_LOGGING' name,force_logging value from v$database

order by 1;

 

5.2 备库开启闪回功能

su - oracle

sqlplus / as sysdba

alter database flashback on;

5.3 RMAN配置

rman target /

CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;

5.4 数据同步检查

## 检查是否存在GAP

select 'DATABASE WARNNING: Archive Gap occurs between ADG primary DB and secondary DB whose THREAD

is ' || THREAD# || ' Gap value is ' ||

(HIGH_SEQUENCE# - LOW_SEQUENCE#)

from v$archive_gap;

## 检查MRP进程状态

select 'DATABASE ERROR: MRP0 process is down, please check the adg status'

from dual

where (select count(1) from gv$managed_standby where PROCESS = 'MRP0') = 0;

select 'DATABASE ERROR: The status MRP0 process is abnormal, current status is ' ||

status

from gv$managed_standby

where PROCESS = 'MRP0'

and status != 'APPLYING_LOG';

## 检查日志延迟是否超过30S

with v_lag as

(select to_number(substr(value, instr(value, ':', 1, 2) + 1, length(value))) +

60 * to_number(substr(value, instr(value, ':', 1, 1) + 1, 2)) seconds,

value

from v$dataguard_stats

where name = 'apply lag')

select 'DATABASE WARNNING : ADG log applying is slow now, whose lag is larger than ' ||

value || '. Please Watch it!!'

from v_lag

where seconds > 30;

 

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论