单实例物理DG配置客户端无缝切换的详细过程
物理dg配置客户端无缝切换 (1)--Data Guard Broker 的配置
前言部分
导读
各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:
① Data Guard Broker 的配置
② Fast-Start Failover 的配置
③ Oracle DataGuard 之客户端TAF 配置
④ 使用DGMGRL 来管理数据库
⑤ 物理dg管理和维护的一些sql
⑥ DataGuard 客户端特级配置
实验环境介绍
项目 | 主库 | dg库 |
---|---|---|
db 类型 | 单实例 | 单实例 |
db version | 11.2.0.3 | 11.2.0.3 |
db 存储 | FS type | FS type |
ORACLE_SID | oradg11g | oradgphy |
db_name | oradg11g | oradg11g |
主机IP地址: | 192.168.59.130 | 192.168.59.130 |
OS版本及kernel版本 | RHEL6.5 64位,2.6.32-504.16.2.el6.x86_64 | RHEL6.5 64位,2.6.32-504.16.2.el6.x86_64 |
OS hostname | rhel6_lhr | rhel6_lhr |
本次课程,研究当主备库发生切换时,如何在主库启动一个service,保证客户端的连接能够继续,而且还能够继续select查询操作,而不管主备库是在哪台服务器上;同时保证新的客户连接没有任何的问题。本课程网络上的例子不多,陈老师花了将近一年的时间人肉搜索,最近才找到,急不可待的要分享给大家。
1、DataGuard的配置(快速)
2、创建service
3、创建触发器
4、主备库切换测试
相关知识点扫盲
oracle Data Guard,以最低成本实现最高的数据保护。在硬件上没有特殊要求,普通PC机即可实现。
简单的来说,Data Guard,就是自动创建和维护生产数据库(或主数据库)的一个或多个事务一致的副本(备用数据库)。如果主数据库不可用(因为故障、维护或者灾难),那么可以激活一个备用数据库并使之承担主数据库的角色。然而,在配置完成Data Guard后,若需要实现主备数据库间的切换,需要在主数据库及备用数据库上分别输入多个命令,切换步骤稍显麻烦。所以,一般情况下,DBA会将整个切换过程编辑成脚本,以便自动运行,进行状态切换。当然,oracle 也提供了工具Data Guard Broker,仅在控制端输入一个命令就能方便实现主备数据库间的切换。
在Data Guard Broker的基础上,配置并启用Fast-Start Failover,就能自动检测发现主机故障,实现主备切换,故障转移。
Data Guard Broker是建立在Data Guard基础上的一个对Data Guard配置,集中管理操作的一个平台。Broker的推出是为了简化DG复杂的管理过程,它最大的作用就是集中化的统一管理。
配置Data Guard Broker使用到的客户端工具是DGMGRL。它是一个命令行管理工具。
实验部分
实验目标
Data Guard Broker 的配置并完成实验。
前提条件
注意前提条件,Data Guard已经成功配置完成。
- 设置primary和standby启动时参数文件为spfile
- 配置DG_BROKER_CONFIG_FILEn
DG_BROKER_CONFIG_FILEn代表2个参数,分别为DG_BROKER_CONFIG_FILE1,DG_BROKER_CONFIG_FILE2,它们是Data Guard Broker的配置文件名。它们都有默认值(windows下是在ORACLE_HOME/database目录下,linux下是在ORACLE_HOME/dbs目录下),所以一般我们可以不进行特别设置。 - 设置listener
在Data Guard Broker环境中,需要在listener.ora静态添加一个service_name为db_unique_name_DGMGRL.db_domain的注册。这个service_name会在DGMGRL重启数据库的时候用到。通过DGMGRL重启数据库时DMON进程会先将数据库关闭,然后DGMGRL用此service_name通过listener连接到数据库,发出启动命令。 - 设置DG_BROKER_START为TRUE
这一步是启动Data Guard Broker monitor(DMON)进程,需要在2个数据库上面都运行下面的命令
alter system set dg_broker_start=true scope=both;
主库操作:
[oracle@rhel6_lhr lhr]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 星期一 9月 28 10:17:04 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
10:17:04 SQL> show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string oradglg, oradg11g
db_name string oradg11g
db_unique_name string oradg11g
global_names boolean FALSE
instance_name string oradg11g
lock_name_space string
log_file_name_convert string oradglg, oradg11g
processor_group_name string
service_names string oradg11g
10:17:08 SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/spfileoradg11g.o
ra
10:17:14 SQL> show parameter DG_BROKER_CONFIG_FILE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr1oradg11g.dat
dg_broker_config_file2 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr2oradg11g.dat
10:20:43 SQL> set line 9999
10:20:44 SQL> col name format a10
10:20:44 SQL> col FS_FAILOVER_OBSERVER_HOST format a20
10:20:44 SQL> select dbid,name,current_scn,protection_mode,protection_level,database_role,force_logging,open_mode,switchover_status from v$database;
DBID NAME CURRENT_SCN PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE FOR OPEN_MODE SWITCHOVER_STATUS
---------- ---------- ----------- -------------------- -------------------- ---------------- --- -------------------- --------------------
1403587593 ORADG11G 2336836 MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY YES READ WRITE TO STANDBY
已用时间: 00: 00: 00.01
10:20:44 SQL> SELECT d.DBID,
10:20:44 2 d.DB_UNIQUE_NAME,
10:20:44 3 d.FORCE_LOGGING,
10:20:44 4 d.FLASHBACK_ON,
10:20:44 5 d.FS_FAILOVER_STATUS,
10:20:44 6 d.FS_FAILOVER_CURRENT_TARGET,
10:20:44 7 d.FS_FAILOVER_THRESHOLD,
10:20:44 8 d.FS_FAILOVER_OBSERVER_PRESENT,
10:20:44 9 d.FS_FAILOVER_OBSERVER_HOST
10:20:44 10 FROM v$database d;
DBID DB_UNIQUE_NAME FOR FLASHBACK_ON FS_FAILOVER_STATUS FS_FAILOVER_CURRENT_TARGET FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER
---------- ------------------------------ --- ------------------ ---------------------- ------------------------------ --------------------- ------- --------------------
1403587593 oradg11g YES YES DISABLED 0
已用时间: 00: 00: 00.00
10:20:45 SQL>
10:20:45 SQL> ! ps -ef|grep dmon
oracle 7936 7895 0 10:21 pts/4 00:00:00 /bin/bash -c ps -ef|grep dmon
oracle 7938 7936 0 10:21 pts/4 00:00:00 grep dmon
10:21:17 SQL> show parameter dg_broker
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr1oradg11g.dat
dg_broker_config_file2 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr2oradg11g.dat
dg_broker_start boolean FALSE
10:21:39 SQL> show parameter dg_broker_start
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start boolean FALSE
10:21:53 SQL> alter system set dg_broker_start=true scope=both;
系统已更改。
已用时间: 00: 00: 00.02
10:21:56 SQL> ! ps -ef|grep dmon
oracle 7975 1 0 10:21 ? 00:00:00 ora_dmon_oradg11g
oracle 7976 7895 0 10:22 pts/4 00:00:00 /bin/bash -c ps -ef|grep dmon
oracle 7978 7976 0 10:22 pts/4 00:00:00 grep dmon
10:22:02 SQL>
10:22:02 SQL> show parameter dg_broker_start
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start boolean TRUE
10:23:48 SQL> set line 9999
10:23:58 SQL> col name format a10
10:23:58 SQL> col FS_FAILOVER_OBSERVER_HOST format a20
10:23:58 SQL> select dbid,name,current_scn,protection_mode,protection_level,database_role,force_logging,open_mode,switchover_status from v$database;
DBID NAME CURRENT_SCN PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE FOR OPEN_MODE SWITCHOVER_STATUS
---------- ---------- ----------- -------------------- -------------------- ---------------- --- -------------------- --------------------
1403587593 ORADG11G 2337043 MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY YES READ WRITE TO STANDBY
已用时间: 00: 00: 00.01
10:23:58 SQL> SELECT d.DBID,
10:23:58 2 d.DB_UNIQUE_NAME,
10:23:58 3 d.FORCE_LOGGING,
10:23:58 4 d.FLASHBACK_ON,
10:23:58 5 d.FS_FAILOVER_STATUS,
10:23:58 6 d.FS_FAILOVER_CURRENT_TARGET,
10:23:58 7 d.FS_FAILOVER_THRESHOLD,
10:23:58 8 d.FS_FAILOVER_OBSERVER_PRESENT,
10:23:58 9 d.FS_FAILOVER_OBSERVER_HOST
10:23:58 10 FROM v$database d;
DBID DB_UNIQUE_NAME FOR FLASHBACK_ON FS_FAILOVER_STATUS FS_FAILOVER_CURRENT_TARGET FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER
---------- ------------------------------ --- ------------------ ---------------------- ------------------------------ --------------------- ------- --------------------
1403587593 oradg11g YES YES DISABLED 0
已用时间: 00: 00: 00.00
10:24:00 SQL>
告警日志:
Mon Sep 28 10:21:56 2015
ALTER SYSTEM SET dg_broker_start=TRUE SCOPE=BOTH;
Mon Sep 28 10:21:56 2015
DMON started with pid=37, OS id=7975
Starting Data Guard Broker (DMON)
Mon Sep 28 10:22:04 2015
INSV started with pid=38, OS id=7984
备库操作:
[oracle@rhel6_lhr ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 星期一 9月 28 10:25:25 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
10:25:25 SQL> show parameter name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string oradg11g, oradgphy
db_name string oradg11g
db_unique_name string oradgphy
global_names boolean FALSE
instance_name string oradgphy
lock_name_space string
log_file_name_convert string oradg11g, oradgphy
processor_group_name string
service_names string oradgphy
10:25:27 SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/spfileoradgphy.o
ra
10:25:35 SQL> show parameter DG_BROKER_CONFIG_FILE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr1oradgphy.dat
dg_broker_config_file2 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr2oradgphy.dat
10:25:43 SQL> set line 9999
10:25:51 SQL> col name format a10
10:25:51 SQL> col FS_FAILOVER_OBSERVER_HOST format a20
10:25:51 SQL> select dbid,name,current_scn,protection_mode,protection_level,database_role,force_logging,open_mode,switchover_status from v$database;
SELECT d.DBID,
d.DB_UNIQUE_NAME,
d.FORCE_LOGGING,
d.FLASHBACK_ON,
d.FS_FAILOVER_STATUS,
DBID NAME CURRENT_SCN PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE FOR OPEN_MODE SWITCHOVER_STATUS
---------- ---------- ----------- -------------------- -------------------- ---------------- --- -------------------- --------------------
1403587593 ORADG11G 2337499 MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PHYSICAL STANDBY YES READ ONLY WITH APPLY NOT ALLOWED
已用时间: 00: 00: 00.11
10:25:52 SQL> 10:25:52 2 10:25:52 3 10:25:52 4 10:25:52 5 10:25:52 6 d.FS_FAILOVER_CURRENT_TARGET,
10:25:52 7 d.FS_FAILOVER_THRESHOLD,
10:25:52 8 d.FS_FAILOVER_OBSERVER_PRESENT,
10:25:52 9 d.FS_FAILOVER_OBSERVER_HOST
10:25:52 10 FROM v$database d;
DBID DB_UNIQUE_NAME FOR FLASHBACK_ON FS_FAILOVER_STATUS FS_FAILOVER_CURRENT_TARGET FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER
---------- ------------------------------ --- ------------------ ---------------------- ------------------------------ --------------------- ------- --------------------
1403587593 oradgphy YES NO DISABLED 0
已用时间: 00: 00: 00.00
10:25:56 SQL> ! ps -ef|grep dmon
oracle 7975 1 0 10:21 ? 00:00:00 ora_dmon_oradg11g
oracle 8461 8410 0 10:26 pts/5 00:00:00 /bin/bash -c ps -ef|grep dmon
oracle 8463 8461 0 10:26 pts/5 00:00:00 grep dmon
10:26:07 SQL> show parameter dg_broker_start
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start boolean FALSE
10:26:39 SQL> alter system set dg_broker_start=true scope=both;
系统已更改。
已用时间: 00: 00: 00.05
10:26:46 SQL> ! ps -ef|grep dmon
oracle 7975 1 0 10:21 ? 00:00:00 ora_dmon_oradg11g
oracle 8481 1 0 10:26 ? 00:00:00 ora_dmon_oradgphy
oracle 8501 8410 0 10:26 pts/5 00:00:00 /bin/bash -c ps -ef|grep dmon
oracle 8503 8501 0 10:26 pts/5 00:00:00 grep dmon
10:26:50 SQL>
配置db_domain 和 listener 及 tnsnames
目标: 配置db_domain 和 静态的listener ,listener中的GLOBAL_DBNAME为db_unique_name_DGMGRL.db_domain
主备库:
14:05:05 SQL> show parameter db_domain
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_domain string
14:13:46 SQL> alter system set db_domain='lhr.com' scope=spfile;
主备库listener的配置,注意红色的为新添加的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 | [oracle@rhel6_lhr admin]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 28-9月 -2015 15:05:27 Copyright (c) 1991, 2011, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.59.130)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for Linux: Version 11.2.0.3.0 - Production 启动日期 28-9月 -2015 14:32:08 正常运行时间 0 天 0 小时 33 分 18 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 /u01/app/grid/11.2.0/network/admin/listener.ora 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.59.130)(PORT=1521))) 服务摘要.. 服务 "+ASM" 包含 1 个实例。 实例 "+ASM", 状态 READY, 包含此服务的 1 个处理程序... 服务 "PLSExtProc" 包含 1 个实例。 实例 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "ora11g" 包含 1 个实例。 实例 "ora11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oradg11g" 包含 1 个实例。 实例 "oradg11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oradg11g.lhr.com" 包含 2 个实例。 实例 "oradg11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 实例 "oradg11g", 状态 READY, 包含此服务的 1 个处理程序... 服务 "oradg11gXDB.lhr.com" 包含 2 个实例。 实例 "oradg11g", 状态 READY, 包含此服务的 1 个处理程序... 实例 "oradgphy", 状态 READY, 包含此服务的 1 个处理程序... 服务 "oradg11g_DGB.lhr.com" 包含 1 个实例。 实例 "oradg11g", 状态 READY, 包含此服务的 1 个处理程序... 服务 "oradg11g_DGMGRL.lhr.com" 包含 1 个实例。 实例 "oradg11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oradglg" 包含 1 个实例。 实例 "oradglg", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oradgphy" 包含 1 个实例。 实例 "oradgphy", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oradgphy.lhr.com" 包含 2 个实例。 实例 "oradgphy", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 实例 "oradgphy", 状态 READY, 包含此服务的 1 个处理程序... 服务 "oradgphy_DGB.lhr.com" 包含 1 个实例。 实例 "oradgphy", 状态 READY, 包含此服务的 1 个处理程序... 服务 "oradgphy_DGMGRL.lhr.com" 包含 1 个实例。 实例 "oradgphy", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oradgss" 包含 1 个实例。 实例 "oradgss", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "orclasm.lhr.com" 包含 1 个实例。 实例 "orclasm", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 命令执行成功 [oracle@rhel6_lhr admin]$ more /u01/app/grid/11.2.0/network/admin/listener.ora # listener.ora Network Configuration File: /u01/app/grid/11.2.0/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orclasm.lhr.com) (SID_NAME = orclasm) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) ) (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = oradg11g) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= oradg11g) ) (SID_DESC = (GLOBAL_DBNAME = oradgphy) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= oradgphy) ) (SID_DESC = (GLOBAL_DBNAME = oradglg) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= oradglg) ) (SID_DESC = (GLOBAL_DBNAME = oradgss) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= oradgss) ) (SID_DESC = (GLOBAL_DBNAME = ora11g) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= ora11g) ) (SID_DESC = (GLOBAL_DBNAME = oradg11g.lhr.com) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= oradg11g) ) (SID_DESC = (GLOBAL_DBNAME = oradgphy.lhr.com) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= oradgphy) ) (SID_DESC = (GLOBAL_DBNAME = oradg11g_DGMGRL.lhr.com) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= oradg11g) ) (SID_DESC = (GLOBAL_DBNAME = oradgphy_DGMGRL.lhr.com) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME= oradgphy) ) ) LOGGING_LISTENER = OFF LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.130)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /u01/app/grid ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER = ON #TRACE_LEVEL_LISTENER = OFF [oracle@rhel6_lhr admin]$ -- 主备库tnsnames的配置,注意红色的为新添加的内容: [oracle@rhel6_lhr admin]$ more tnsnames.ora # tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. tns_oradg11g_DGMGRL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.130)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oradg11g_DGMGRL.lhr.com) ) ) tns_oradgphy_DGMGRL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.130)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oradgphy_DGMGRL.lhr.com) ) ) tns_oradg11g = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.130)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oradg11g) ) ) tns_oradgphy = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.130)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oradgphy) ) ) tns_oradglg = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.130)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = oradglg) ) ) |
dgmgrl中配置broker并启用
[oracle@rhel6_lhr ~]$ dgmgrl
DGMGRL for Linux: Version 11.2.0.3.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.
欢迎使用 DGMGRL, 要获取有关信息请键入 "help"。
DGMGRL> help
可使用以下命令:
add 在中介配置中添加备用数据库
connect 连接到 Oracle 数据库实例
convert 将数据库从一种类型转换为另一种
create 创建中介配置
disable 禁用配置, 数据库或快速启动故障转移
edit 编辑配置, 数据库或实例
enable 启用配置, 数据库或快速启动故障转移
exit 退出程序
failover 将备用数据库更改为主数据库
help 显示命令的说明和语法
quit 退出程序
reinstate 将标记为恢复的数据库更改为可行的备用数据库
rem DGMGRL 会忽略注释
remove 删除配置, 数据库或实例
show 显示有关配置, 数据库或实例的信息
shutdown 关闭当前正在运行的 Oracle 数据库实例
sql 执行 SQL 语句
start 启动快速启动故障转移观察程序
startup 启动 Oracle 数据库实例
stop 停止快速启动故障转移观察程序
switchover 在主数据库和备用数据库之间切换角色
使用 "help \
DGMGRL> connect sys/lhr@tns_oradg11g_dgmgrl
已连接。
DGMGRL>
DGMGRL> show configuration
ORA-16532: Data Guard 中介配置不存在
配置详细资料不能由 DGMGRL 确定
DGMGRL> help create
创建中介配置
语法:
CREATE CONFIGURATION \
PRIMARY DATABASE IS \
CONNECT IDENTIFIER IS \
DGMGRL> create configuration 'fsf_oradg11g_lhr' as
primary database is 'oradg11g'
connect identifier is tns_oradg11g_dgmgrl;
已创建配置 "fsf_oradg11g_lhr", 其中主数据库为 "oradg11g"
DGMGRL> show configuration
配置 - fsf_oradg11g_lhr
保护模式: MaxPerformance
数据库:
oradg11g - 主数据库
快速启动故障转移: DISABLED
配置状态:
DISABLED
DGMGRL> add database 'oradgphy' as
connect identifier is tns_oradgphy_dgmgrl
maintained as physical;
已添加数据库 "oradgphy"
DGMGRL> show configuration
配置 - fsf_oradg11g_lhr
保护模式: MaxPerformance
数据库:
oradg11g - 主数据库
oradgphy - 物理备用数据库
快速启动故障转移: DISABLED
配置状态:
DISABLED
DGMGRL>
DGMGRL> enable configuration
已启用。
DGMGRL> show configuration
配置 - fsf_oradg11g_lhr
保护模式: MaxPerformance
数据库:
oradg11g - 主数据库
oradgphy - 物理备用数据库
快速启动故障转移: DISABLED
配置状态:
SUCCESS
DGMGRL>
DGMGRL>
DGMGRL> show database verbose oradg11g
数据库 - oradg11g
角色: PRIMARY
预期状态: TRANSPORT-ON
实例:
oradg11g
属性:
DGConnectIdentifier = 'tns_oradg11g_dgmgrl'
ObserverConnectIdentifier = ''
LogXptMode = 'ASYNC'
DelayMins = '0'
Binding = 'OPTIONAL'
MaxFailure = '0'
MaxConnections = '1'
ReopenSecs = '300'
NetTimeout = '30'
RedoCompression = 'DISABLE'
LogShipping = 'ON'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyParallel = 'AUTO'
StandbyFileManagement = 'AUTO'
ArchiveLagTarget = '0'
LogArchiveMaxProcesses = '4'
LogArchiveMinSucceedDest = '1'
DbFileNameConvert = 'oradgphy, oradg11g'
LogFileNameConvert = 'oradgphy, oradg11g'
FastStartFailoverTarget = ''
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
SidName = 'oradg11g'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel6_lhr)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=oradg11g_DGMGRL.lhr.com)(INSTANCE_NAME=oradg11g)(SERVER=DEDICATED)))'
StandbyArchiveLocation = 'USE_DB_RECOVERY_FILE_DEST'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t%s%r.dbf'
TopWaitEvents = '(monitor)'
数据库状态:
SUCCESS
DGMGRL> show database verbose oradgphy
数据库 - oradgphy
角色: PHYSICAL STANDBY
预期状态: APPLY-ON
传输滞后: 0 秒
应用滞后: 0 秒
实时查询: ON
实例:
oradgphy
属性:
DGConnectIdentifier = 'tns_oradgphy_dgmgrl'
ObserverConnectIdentifier = ''
LogXptMode = 'ASYNC'
DelayMins = '0'
Binding = 'optional'
MaxFailure = '0'
MaxConnections = '1'
ReopenSecs = '300'
NetTimeout = '30'
RedoCompression = 'DISABLE'
LogShipping = 'ON'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyParallel = 'AUTO'
StandbyFileManagement = 'AUTO'
ArchiveLagTarget = '0'
LogArchiveMaxProcesses = '4'
LogArchiveMinSucceedDest = '1'
DbFileNameConvert = 'oradg11g, oradgphy'
LogFileNameConvert = 'oradg11g, oradgphy'
FastStartFailoverTarget = ''
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
SidName = 'oradgphy'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel6_lhr)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=oradgphy_DGMGRL.lhr.com)(INSTANCE_NAME=oradgphy)(SERVER=DEDICATED)))'
StandbyArchiveLocation = 'USE_DB_RECOVERY_FILE_DEST'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t%s%r.dbf'
TopWaitEvents = '(monitor)'
数据库状态:
SUCCESS
DGMGRL>
DGMGRL>
主库告警日志:
Mon Sep 28 15:20:28 2015
NSV1 started with pid=30, OS id=25660
Mon Sep 28 15:20:54 2015
ALTER SYSTEM SET log_archive_config='dg_config=(oradg11g,oradgphy)' SCOPE=BOTH;
Mon Sep 28 15:20:57 2015
ALTER SYSTEM SET log_archive_dest_2='service="tns_oradgphy_dgmgrl"','LGWR ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="oradgphy" net_timeout=30','valid_for=(all_logfiles,primary_role)' SCOPE=BOTH;
ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='oradg11g';
ALTER SYSTEM SET log_archiveformat='%t%s_%r.dbf' SCOPE=SPFILE SID='oradg11g';
ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH SID='*';
ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*';
ALTER SYSTEM SET log_archive_max_processes=4 SCOPE=BOTH SID='*';
ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';
ALTER SYSTEM SET db_file_name_convert='oradgphy','oradg11g' SCOPE=SPFILE;
ALTER SYSTEM SET log_file_name_convert='oradgphy','oradg11g' SCOPE=SPFILE;
ALTER SYSTEM ARCHIVE LOG
Mon Sep 28 15:20:57 2015
NSA2 started with pid=34, OS id=25706
备库告警日志:
NSV0 started with pid=21, OS id=25696
Mon Sep 28 15:20:57 2015
ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='oradgphy';
ALTER SYSTEM SET log_archiveformat='%t%s_%r.dbf' SCOPE=SPFILE SID='oradgphy';
ALTER SYSTEM SET standby_file_management='AUTO' SCOPE=BOTH SID='*';
ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*';
ALTER SYSTEM SET log_archive_max_processes=4 SCOPE=BOTH SID='*';
ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';
ALTER SYSTEM SET db_file_name_convert='oradg11g','oradgphy' SCOPE=SPFILE;
ALTER SYSTEM SET log_file_name_convert='oradg11g','oradgphy' SCOPE=SPFILE;
ALTER SYSTEM SET fal_server='tns_oradg11g_dgmgrl' SCOPE=BOTH;
Mon Sep 28 15:21:01 2015
Primary database is in MAXIMUM PERFORMANCE mode
RFS[4]: Assigned to RFS process 25708
RFS[4]: Selected log 4 for thread 1 sequence 145 dbid 1403587593 branch 886695024
测试Data Guard Broker 功能
在配置broker完成后,我们就可以利用broker完成switchover了。在DGMGRL中只需要简单的一个命令。
switchover to standby-database
(standby-database: 此参数是db_unique_name,大小写敏感。如果名称是大写的,需要用引号。表示切换standby-database为主机,原主机转换为备机状态)
DGMGRL> show configuration
配置 - fsf_oradg11g_lhr
保护模式: MaxPerformance
数据库:
oradg11g - 主数据库
oradgphy - 物理备用数据库
快速启动故障转移: DISABLED
配置状态:
SUCCESS
DGMGRL> switchover to oradgphy;
立即执行切换, 请稍候...
新的主数据库 "oradgphy" 正在打开...
操作要求关闭实例 "oradg11g" (在数据库 "oradg11g" 上)
正在关闭实例 "oradg11g"...
ORACLE 例程已经关闭。
操作要求启动实例 "oradg11g" (在数据库 "oradg11g" 上)
正在启动实例 "oradg11g"...
ORACLE 例程已经启动。
数据库装载完毕。
数据库已经打开。
切换成功, 新的主数据库为 "oradgphy"
DGMGRL> show configuration
配置 - fsf_oradg11g_lhr
保护模式: MaxPerformance
数据库:
oradgphy - 主数据库
oradg11g - 物理备用数据库
快速启动故障转移: DISABLED
配置状态:
SUCCESS
DGMGRL>
再切换一次,回到最初状态:
DGMGRL> switchover to oradg11g;
立即执行切换, 请稍候...
新的主数据库 "oradg11g" 正在打开...
操作要求关闭实例 "oradgphy" (在数据库 "oradgphy" 上)
正在关闭实例 "oradgphy"...
ORACLE 例程已经关闭。
操作要求启动实例 "oradgphy" (在数据库 "oradgphy" 上)
正在启动实例 "oradgphy"...
ORACLE 例程已经启动。