You are on page 1of 15

Oracle 数据库灾备

Active Data Guard 搭建步骤

文件状态: 文件编号:
[√] 草稿 当前版本: V 0.1
[ ] 正在修改 作 者:
[ ] 正式发布 审 核 人:

完成日期:

 提交人: Stanley Guo


 提交日期: Feburary. 2013
 版本号: v1.0

目  录

第 1 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
1.1. 测试环境................................................................................................................... 3
1.2. 操作人员................................................................................................................... 4
1.3. 配置网络................................................................................................................... 4
1.4. 将主机库上的密码文件拷贝到备机上.....................................................................8
1.5. 修改主库数据库参数................................................................................................ 8
1.6. 配置 rman................................................................................................................ 9
1.7. 创建备库的 pfile...................................................................................................... 9
1.8. 备机启动到 nomount 状态下............................................................................... 11
1.9. 使用主库与备库分别测试连接情况......................................................................11
1.10. 在操作系统上创建 pfile 中指定的目录............................................................11
1.11. 启动 rman 进行恢复.......................................................................................... 11
1.12. 恢复完后在主库添加 STANDBY LOGFILE:..................................................12
1.13. 恢复完后在备库添加 STANDBY LOGFILE:..................................................13
1.14. 诊断当前主备库的状态...................................................................................... 13
1.15. 重建 standby 库 spfile..................................................................................... 13
1.16. 配置 broker 管理 Active DataGuard............................................................14
1.17. 将备库置于实时只读状态.................................................................................. 14
1.18. 状态诊断............................................................................................................. 14

1.1. 测试环境

设备用途 型号 配置
主库 Exadata x3-2 ¼ 2台数据库服务器,拥有(每台):
pack  2 个八核Intel® Xeon® E5-2690处理器(2.9
GHz)
 128 GB 内存(可扩展至256GB)
3台 Exadata Storage Server X2-2,拥有(每
台):
 2 个六核Intel® Xeon® E5-2630L处理器(2.0
GHz),共计36核来处理SQL运算
 64 GB 内存
 Exadata Smart Flash Cache闪存,三台存储共
计12块400G、共计4.8TB的闪存

第 2 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
备库 Exadata x3-2 ¼ 2台数据库服务器,拥有(每台):
pack  2 个八核Intel® Xeon® E5-2690处理器(2.9
GHz)
 128 GB 内存(可扩展至256GB)
3台 Exadata Storage Server X2-2,拥有(每
台):
 2 个六核Intel® Xeon® E5-2630L处理器(2.0
GHz),共计36核来处理SQL运算
 64 GB 内存
 Exadata Smart Flash Cache闪存,三台存储共
计12块400G、共计4.8TB的闪存

1.2. 操作人员

公司名称 参与人员 联系电话

Oracle 国玉朋 13718914891

1.3. 配置网络

Contents of listener.ora:
主库节点 1
#LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))
# line added by Agent
LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN3)))) # line added by Agent
LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN2)))) # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN1)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent

第 3 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
ADMIN_RESTRICTIONS_ADMIN=ON

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = wbkdb_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/dbhome_1)
(SID_NAME = wbkdb1)
)
(SID_DESC =
(GLOBAL_DBNAME = wbkdb)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/dbhome_1)
(SID_NAME = wbkdb1)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db0101-vip)(PORT = 1521))
)
主库节点 2
#LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))
# line added by Agent
LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN3)))) # line added by Agent
LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN2)))) # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN1)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
ADMIN_RESTRICTIONS_ADMIN=ON

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = wbkdb_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/dbhome_1)
(SID_NAME = wbkdb2)
)

第 4 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
(SID_DESC =
(GLOBAL_DBNAME = wbkdb)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/dbhome_1)
(SID_NAME = wbkdb2)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db0102-vip)(PORT = 1521))
)

备库节点 1
#LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))
# line added by Agent
LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN3)))) # line added by Agent
LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN2)))) # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN1)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
ADMIN_RESTRICTIONS_ADMIN=ON

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = wbkdb_sty_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/dbhome_1)
(SID_NAME = wbkdb_sty1)
)
(SID_DESC =
(GLOBAL_DBNAME = wbkdb_sty)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/dbhome_1)
(SID_NAME = wbkdb_sty1)
)
)

LISTENER =
(DESCRIPTION =

第 5 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
(ADDRESS = (PROTOCOL = TCP)(HOST = db0201-vip)(PORT = 1521))
)

备库节点 2
#LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))
# line added by Agent
LISTENER_SCAN3=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN3)))) # line added by Agent
LISTENER_SCAN2=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN2)))) # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)
(KEY=LISTENER_SCAN1)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN2=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN3=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
ADMIN_RESTRICTIONS_ADMIN=ON

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = wbkdb_sty_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/dbhome_1)
(SID_NAME = wbkdb_sty1)
)
(SID_DESC =
(GLOBAL_DBNAME = wbkdb_sty)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.3/dbhome_1)
(SID_NAME = wbkdb_sty1)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db0202-vip)(PORT = 1521))
)

主库与备库 tnsnames.ora 内容相同


Contents of tnsnames.ora 注 意 tnsnames.ora 中 一 定 要 配 置 vip , 不 能 使 用
public ip 或者 scan ip
----------------------------

第 6 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
WBKDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db0101-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db0102-vip)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = wbkdb)
)
)

WBKDB_STY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = db0201-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = db0202-vip)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = WBKDB_STY)
)
)

1.4. 将主机库上的密码文件拷贝到备机上

Scp $ORACLE_HOME/dbs/orapwwbkdb1
db0201-vip:$PWD/orapwwbkdb_sty1

Scp $ORACLE_HOME/dbs/orapwwbkdb1
db0202-vip:$PWD/orapwwbkdb_sty2

1.5. 修改主库数据库参数

使用 sys 用户登陆
SQL> conn /as sysdba
(1) ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=2000G sid='*' SCOPE=SPFILE;
(2) ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+DATA_DB01' sid='*' SCOPE=SPFILE;
(3) ALTER DATABASE FORCE LOGGING ;
(4) ALTER SYSTEM SET DB_UNIQUE_NAME=wbkdb sid='*' SCOPE=SPFILE;
(5) ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO sid='*' SCOPE=SPFILE;
(6) ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(wbkdb,wbkdb_sty)' SID='*'
SCOPE=SPFILE;
(7)

第 7 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
(8) ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+DATA_DB01
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=wbkdb' SID='*'
SCOPE=SPFILE;
(9) ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=wbkdb_sty LGWR ASYNC AFFIRM
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=wbkdb_sty' sid='*'
SCOPE=SPFILE;
(10) ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE sid='*' SCOPE=SPFILE;
(11) ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE sid='*' SCOPE=SPFILE;
(12) ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' sid='*' SCOPE=SPFILE;
(13) ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30 sid='*' SCOPE=SPFILE;
(14) ALTER SYSTEM SET ARCHIVE_LAG_TARGET=1800 sid='*' SCOPE=SPFILE;
(15) ALTER SYSTEM SET
DB_FILE_NAME_CONVERT='+DATA_DB01/wbkdb/datafile/','+DATA_DB02/wbkdb_sty/dat
afile' sid='*' SCOPE=SPFILE;
(16) ALTER SYSTEM SET
LOG_FILE_NAME_CONVERT='+DATA_DB01/wbkdb/onlinelog/','+DATA_DB02/wbkdb_sty/
onlinelog/' sid='*' SCOPE=SPFILE;

1.6. 配置 rman

 登陆 Rman target /
 CONFIGURE SNAPSHOT CONTROLFILE
NAME TO '+DATA_DB01/wbkdb/controlfile/snapcf_UNSID1.f';

1.7. 创建备库的 pfile

 首先在主库上创建 pfile
Conn /as sysdba
Create pfile=’/home/oracle/bak.ora’ from spfile;
 将 pfile 拷贝到 standby 主机上
Scp /home/oracle/bak.ora db0201-vip:/home/oracle/ bak.ora
Scp /home/oracle/bak.ora db0202-vip:/home/oracle/ bak.ora
 备机的 pfile 编辑后的 pfile 如下:
*.instance_number=1
*.archive_lag_target=1800
*.audit_file_dest='/u01/app/oracle/admin/wbkdb_sty/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.3.0'
*.control_files='+DATA_DB02/wbkdb_sty/controlfile/control1'
*.db_block_size=8192
*.db_create_file_dest='+DATA_DB02'

第 8 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
*.db_domain=''
*.db_file_name_convert='+DATA_DB01/wbkdb/datafile/','+DATA_DB02/wbkdb_sty/datafile'
*.db_name='wbkdb'
*.db_recovery_file_dest_size=2147483648000
*.db_recovery_file_dest='+DATA_DB02'
*.db_unique_name='WBKDB_STY'
*.dg_broker_config_file1='+DATA_DB01/dr1wbkdb.dat'
*.dg_broker_config_file2='+DATA_DB01/dr2wbkdb.dat'
*.dg_broker_start=TRUE
*.diagnostic_dest='/u01/app/oracle'
wbkdb_sty1.instance_number=1
wbkdb_sty2.instance_number=2
*.log_archive_config='dg_config=(WBKDB,wbkdb_sty,wbkdbdg)'
*.log_archive_dest_1='LOCATION=+DATA_DB01 VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=wbkdb'
*.log_archive_dest_2='SERVICE=wbkdb_sty LGWR ASYNC AFFIRM
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=wbkdb_sty'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
wbkdb_sty2.log_archive_dest_state_1='ENABLE'
wbkdb_sty1.log_archive_dest_state_2='ENABLE'
*.log_archive_format='%t_%s_%r.arc'
wbkdb_sty2.log_archive_format='%t_%s_%r.dbf'
wbkdb_sty1.log_archive_format='%t_%s_%r.dbf'
*.log_archive_max_processes=30
*.log_archive_min_succeed_dest=1
wbkdb_sty2.log_archive_trace=0
wbkdb_sty1.log_archive_trace=0
*.log_file_name_convert='+DATA_DB01/wbkdb/onlinelog/','+DATA_DB02/wbkdb_sty/onlinelog/'
*.open_cursors=300
*.pga_aggregate_target=50331648000
*.processes=3000
*.remote_listener='db01-scan:1521'
*.remote_login_passwordfile='exclusive'
*.sessions=3305
*.sga_target=100663296000
*.standby_file_management='AUTO'
wbkdb_sty2.thread=2
wbkdb_sty1.thread=1
wbkdb_sty1.undo_tablespace='UNDOTBS1'
wbkdb_sty2.undo_tablespace='UNDOTBS2'

第 9 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
1.8. 备机启动到 nomount 状态下

Export ORACLE_SID= wbkdb_sty1


Sqlplus /as sysdba
Startup nomount pfile=’/home/oracle/bak.ora’

1.9. 使用主库与备库分别测试连接情况

 在主库与备库上分别测试连接
Sqlplus sys/oracle@wbkdb as sysdba
Sqlplus sys/oracle@wbkdb_sty as sysdba

1.10. 在操作系统上创建 pfile 中指定的目录

mkdir –p /u01/app/oracle/admin/wbkdb_sty/adump

1.11. 启动 rman 进行恢复

 主机上执行:
rman target / auxiliary sys/oracle@wbkdb_sty cmdfile=dg.rcv

dg.rcv 脚本如下:
run
{allocate channel prmy1 type disk connect sys/oracle@wbkdb;
allocate channel prmy2 type disk connect sys/oracle@wbkdb;
allocate channel prmy3 type disk connect sys/oracle@wbkdb;
allocate channel prmy4 type disk connect sys/oracle@wbkdb;
allocate channel prmy5 type disk connect sys/oracle@wbkdb;
allocate auxiliary channel wbkdb_sty type disk;
duplicate target database for standby dorecover from active database nofilenamecheck
spfile
set DB_UNIQUE_NAME='wbkdb_sty'
set AUDIT_FILE_DEST='/u01/app/oracle/admin/wbkdb_sty/adump'
set DB_CREATE_FILE_DEST='+DATA_DB02'
set DB_FILE_NAME_CONVERT='+DATA_DB01/wbkdb/','+DATA_DB02/wbkdb_sty/'
set LOG_FILE_NAME_CONVERT='+DATA_DB01/wbkdb/','+DATA_DB02/wbkdb_sty/'
set FAL_CLIENT='wbkdb_sty'
set FAL_SERVER='wbkdb'
set instance_number='1'
set CONTROL_FILES='+DATA_DB02/wbkdb_sty/controlfile/control1.ctl'
set DIAGNOSTIC_DEST='/u01/app/oracle'

第 10 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
set DB_RECOVERY_FILE_DEST='+DATA_DB02'
set LOG_ARCHIVE_DEST_1='LOCATION=+DATA_DB02 VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=wbkdb_sty'
set LOG_ARCHIVE_DEST_2='SERVICE=wbkdb LGWR ASYNC AFFIRM
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=wbkdb'
set LOG_ARCHIVE_DEST_STATE_1='ENABLE'
set LOG_ARCHIVE_DEST_STATE_2='ENABLE'
set AUDIT_FILE_DEST='/u01/app/oracle/admin/wbkdb_sty'
set LOG_ARCHIVE_MAX_PROCESSES='10'
set STANDBY_FILE_MANAGEMENT='AUTO'
set instance_number='1'
set REMOTE_LISTENER=''
set LOG_ARCHIVE_CONFIG='DG_CONFIG=(wbkdb,wbkdb_sty)'
set LOG_ARCHIVE_FORMAT='wbkdb_sty_%t_%s_%r.arc'
set JOB_QUEUE_PROCESSES='50'
;
}

1.12.恢复完后在主库添加 STANDBY LOGFILE:

 ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 9


'+DATA_DB01/wbkdb/onlinelog/group9' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10
'+DATA_DB01/wbkdb/onlinelog/group10' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13
'+DATA_DB01/wbkdb/onlinelog/group13' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 11
'+DATA_DB01/wbkdb/onlinelog/group11' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 12
'+DATA_DB01/wbkdb/onlinelog/group12' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14
'+DATA_DB01/wbkdb/onlinelog/group14' size 8G reuse;

1.13.恢复完后在备库添加 STANDBY LOGFILE:

 ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 9


'+DATA_DB02/wbkdb_sty/onlinelog/group9' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10
'+DATA_DB02/wbkdb_sty/onlinelog/group10' size 8G reuse;

第 11 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13
'+DATA_DB02/wbkdb_sty/onlinelog/group13' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 11
'+DATA_DB02/wbkdb_sty/onlinelog/group11' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 12
'+DATA_DB02/wbkdb_sty/onlinelog/group12' size 8G reuse;
 ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14
'+DATA_DB02/wbkdb_sty/onlinelog/group14' size 8G reuse;

1.14. 诊断当前主备库的状态

 在主备库上分别执行
COL DEST_NAME FORMAT A20
COL STATUS FORMAT A15
COL ERROR FORMAT A15

SELECT DEST_NAME,STATUS, ERROR FROM V$ARCHIVE_DEST;


 Error 列显示没有错误表明当前 Active Data Guard 状态正常。
 查询当前由主库同步到备库的归档序列
SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG ;
主库与备库的查询结果一至说明目前没有 gap。

1.15. 重建 standby 库 spfile

 连接到备库
Conn /as sysdba
 关闭备库并重建 spfile
 Create pfile=’/home/oracle/sp.ora’ from spfile;
 Shutdown immediate
 Create spfile='+DATA_DB02/WBKDB_STY/PARAMETERFILE/spfilewbkdb_sty.ora’
from pfile=’/home/oracle/sp.ora’;
 创建 initwbkdb_sty1.ora、initwbkdb_sty2.ora 如下:
SPFILE='+DATA_DB02/WBKDB_STY/PARAMETERFILE/spfilewbkdb_sty.ora'
 启动数据库:
Startup

1.16.配置 broker 管理 Active DataGuard

 在主备节点执行:
alter system set dg_broker_config_file1='+DBFS_DG/broker/bro1' sid='*';

第 12 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
alter system set dg_broker_config_file2='+DBFS_DG/broker/bro2' sid='*';
alter system set dg_broker_start=true sid='*';'
 在主库上连接 broker:
dgmgrl sys/oracle
 配置主备库:
CREATE CONFIGURATION ims AS PRIMARY DATABASE IS wbkdb CONNECT IDENTIFIER IS
wbkdb;
ADD DATABASE wbkdb_sty AS CONNECT IDENTIFIER IS wbkdb_sty MAINTAINED AS
PHYSICAL;
edit database wbkdb set property logxptmode=async;
edit database wbkdb_sty set property logxptmode=async;
 切换至备机:
Switchover to wbkdb_sty
 切回:
Switchover to wbkdb

1.17. 将备库置于实时只读状态

RECOVER MANAGED STANDBY DATABASE CANCEL;


ALTER DATABASE OPEN READ ONLY;
RECOVER MANAGED STANDBY DATABASE DISCONNECT USING CURRENT LOGFILE;

1.18. 状态诊断

 查询主备库的状态:
SQL> select open_mode,database_role,protection_mode,protection_level,switchover_status
from v$database;
SQL>select name, log_mode, force_logging, flashback_on from v$database;
 查询日志应用情况:
SQL> select sequence# ,applied from v$archived_log order by sequence#;
SQL> select max(Sequence#) from v$log;
 显示所有被应用的归档日志:
SELECT DELAY_MINS,DESTINATION FROM V$ARCHIVE_DEST;
SELECT MAX(SEQUENCE#) FROM V$LOG_HISTORY;
 查询最近被写到备库的日志:
Select Destination, Status, Archived_Thread#, Archived_Seq# From V$archive_Dest_Status
WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE';
 查询 LGWR ASYNC ARCHIVAL 状态
SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2
 查询哪个日志没有被传送到备库:
SELECT LOCAL.THREAD#, LOCAL.SEQUENCE# FROM

第 13 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
(SELECT THREAD#, SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=1)
LOCAL WHERE
LOCAL.SEQUENCE# NOT IN
(SELECT SEQUENCE# FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND
Thread# = Local.Thread#)
 查询与 data guard 相关联的系统等待事件:
select event from V$SYSTEM_EVENT;
 等待事件参照表:

Wait Event Monitors the Amount of Time Spent By . . .


ARCH wait on All ARCn processes to spawn an RFS connection.
ATTACH

ARCH wait on All ARCn processes to write the received redo data to disk as well as
SENDREQ open and close the remote archived redo log files.

ARCH wait on All ARCn processes to delete an RFS connection.


DETACH

LGWR wait on LNS The LGWR process waiting to receive messages from the LNSn process.

LNS wait on All network servers to spawn an RFS connection.


ATTACH

LNS wait on All network servers to write the received redo data to disk as well as open
SENDREQ and close the remote archived redo log files.

LNS wait on All network servers to delete an RFS connection.


DETACH

LNS wait on All network servers to delete an RFS connection.


DETACH

LNS wait on All network servers to spawn an RFS connection.


ATTACH

LNS wait on All network servers to write the received redo data to disk as well as open
SENDREQ and close the remote archived redo log files.

True ASYNC The LNSn process to get hold of the control file transaction during its
Control FileTXN lifetime.
Wait

True ASYNC Wait The LNSn process waiting to see the archived redo log (if the LNSn
for ARCH log process is archiving a current log file and the log is switched out).

第 14 页
Copyright @ 2013 Oracle Corporation
All rights reserved.
Wait Event Monitors the Amount of Time Spent By . . .
Waiting for ASYNC The LNSn process waiting for an inactive destination to become active.
dest activation

True ASYNC log- The LNSn process waiting for the next bit of redo after it has reached the
end-of-file wait logical end of file.

第 15 页
Copyright @ 2013 Oracle Corporation
All rights reserved.

You might also like