说明:参考网络众多人的笔记及思路,加上自己亲身实践之后的整理笔记,仅供参考。
Data Guard与RAC不同的是,在一般情况下,Standby只有一个节点处于活动状态,所有的应用都连接到主服务器。只有当服务器发生故障时,才考虑切换到备用服务器。
在Oracle 11g以前版本中的的Data Guard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过程中数据库就不能打开查询,也就是说日志应用和只读打开两个状态是互斥的,而Oracle 11g Active Data Guard功能解决了这个矛盾,在利用日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作,这类似逻辑Data Guard备用数据库的功能(查询功能方面),但是,数据同步的效率更高、对硬件的资源要求更低。这样可以更大程度地发挥物理备用数据库的硬件资源的效能。
Oracle 11g物理Active Data Guard实时查询(Real-time query)特性。备库在这种特性的支持下,Oracle可以最大限度满足备库作为报表库或者查询分析类型数据库的需求。
利用oracle 11g的 Duplicate From Active Database技术,使用rman通过网络连接主库数据库进行复制。
一、环境介绍
1. 主数据库环境
操作系统版本: OEL6.4 x64
数据库版本 : Oracle 11.2.0.4.0x64
数据库sid名 : orcl
数据库db_unique_name:orcl_primary
2. 备库环境
操作系统版本: OEL6.4 x64
数据库版本 : Oracle 11.2.0.4.0x64 (只安装oracle数据库软件,no netcadbca)
数据库sid名 : orcl
数据库db_unique_name:orcl_standby
配置hosts文件
# cat /etc/hosts
192.168.10.205 oradb205 oradb205.localdomain
192.168.10.206 oradb206 oradb206.localdomain
数据库需要开启归档模式(主、备库都修改):
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
DG的三种保护模式:
Maximum Protection 最大保护 | MaximumPerformance 最高性能(默认模式) | Maximum Availability 最高可用性
查看DG处于何种保护模式
SQL> selectdb_unique_name,protection_mode,protection_level from v$database;
设置保护模式(3中模式,可选)
SQL> alter database set standbydatabase to maximize performance;
SQL> alter database set standbydatabase to maximize availability;
SQL> alter database set standbydatabase to maximize protection;
二、SQL*NET 配置
在创建备库前,要确认两台服务器的数据库之间能通信,如果我们要用 RMAN 的 duplicate from active database 命令创建备库的话。我们需要配置监听和 TNS 名。
虽然数据库会自动注册监听,但如果要使用 RMAN 的 duplicate 命令创建备库,备库必须首先处于 NOMOUNT 状态。在 NOMOUNT 状态下,数据库实例不会自动注册监听,你必须配置静态监听。另外必须要注意的一点是,NOMOUNT 状态下的数据库必须使用专用模式(dedicated server)连接。
两台服务器上的 TNS 名字文件必须配置好,让主备库能用 LOG_ARCHIVE_DEST_N 和 FAL_SERVER 参数(稍后会介绍这些参数)中的服务名(Service Names)找到对方。具体配置应类似下例。
修改主备库listener.ora,tnsnames.ora文件如下,备库根据自身情况修改
SDU=32767 为DG优化网络传输参数
修改主库监听配置$ORACLE_HOME/network/admin/listener.ora
********************* listener.ora *******************************
# listener.ora Network Configuration File:/data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SDU=32767)
(GLOBAL_DBNAME = orcl_primary)
(ORACLE_HOME =/data/oracle/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL =TCP)(HOST = 192.168.10.205)(PORT = 1521))
)
ADR_BASE_LISTENER =/data/oracle/app/oracle
********************* listener.ora *******************************
修改备库监听配置同上,除了HOST地址更改为备库服务器地址
********************* listener.ora *******************************
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SDU=32767)
(GLOBAL_DBNAME = orcl_standby)
(ORACLE_HOME =/data/oracle/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL =TCP)(HOST = 192.168.10.206)(PORT = 1521))
)
ADR_BASE_LISTENER =/data/oracle/app/oracle
********************* listener.ora *******************************
修改配置tnsname.ora文件(主、备库都都为如下)
说明:orcl_primary是主库的服务名,orcl_standby是备库的服务名。
?
$ vi$ORACLE_HOME/network