配置Oracle 11g的Dataguard测试,创建物理备库(Physical Standby Database)
《配置Oracle 11g的Dataguard测试,创建物理备库(Physical Standby Database)》
在数据库高可用性架构中,Oracle Data Guard作为核心的灾难恢复解决方案,通过物理备库(Physical Standby Database)实现数据的实时同步与故障切换。本文将详细阐述Oracle 11g环境下配置Data Guard物理备库的完整流程,涵盖环境准备、主库配置、备库搭建及验证测试等关键环节,为DBA提供可落地的技术指南。
一、环境准备与前提条件
1.1 硬件与软件要求
主库与备库需部署相同版本的Oracle 11g软件(如11.2.0.4),操作系统建议采用Linux/Unix系列(如Oracle Linux 7)。需确保两台服务器间网络延迟低于50ms,带宽满足日志传输需求(建议100Mbps以上)。
1.2 存储规划
备库数据文件存储路径需与主库保持一致(如/u01/app/oracle/oradata/ORCL),或通过符号链接映射。建议使用ASM存储以提高I/O性能,并预留至少1.5倍主库数据量的空间。
1.3 用户权限配置
创建专用操作系统用户oracle,并配置sudo权限用于执行数据库操作。在Oracle用户下设置环境变量:
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=ORCL
二、主库(Primary Database)配置
2.1 启用归档模式
连接至主库SQL*Plus,执行以下命令:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> select log_mode from v$database; -- 验证应为ARCHIVELOG
2.2 配置强制日志记录
确保所有表空间(包括SYSTEM、SYSAUX)处于FORCE LOGGING模式:
SQL> alter database force logging;
2.3 创建备用控制文件
生成备用控制文件并备份至共享目录:
SQL> alter database create standby controlfile as '/tmp/standby_ctrl.ctl';
2.4 配置网络服务名
修改主库的tnsnames.ora文件,添加备库监听条目:
STDBY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = standby-host)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
2.5 配置主库参数文件
修改主库的spfile,添加以下参数:
DB_UNIQUE_NAME=ORCL_PRI
LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL_PRI,ORCL_STDBY)'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL_PRI'
LOG_ARCHIVE_DEST_2='SERVICE=STDBY LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL_STDBY'
LOG_ARCHIVE_FORMAT='arch_%t_%s_%r.arc'
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
FAL_SERVER=ORCL_STDBY
FAL_CLIENT=ORCL_PRI
STANDBY_FILE_MANAGEMENT=AUTO
三、备库(Physical Standby Database)搭建
3.1 初始化备库环境
在备库服务器上创建与主库相同的目录结构,并安装Oracle软件(不创建数据库)。
3.2 复制主库文件
使用scp或rsync复制主库的数据文件、参数文件和控制文件至备库对应目录:
scp /u01/app/oracle/oradata/ORCL/* oracle@standby-host:/u01/app/oracle/oradata/ORCL/
scp /tmp/standby_ctrl.ctl oracle@standby-host:/u01/app/oracle/oradata/ORCL/control01.ctl
3.3 创建备库参数文件
基于主库参数文件修改备库专用参数:
DB_UNIQUE_NAME=ORCL_STDBY
CONTROL_FILES='/u01/app/oracle/oradata/ORCL/control01.ctl'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL_STDBY'
LOG_ARCHIVE_DEST_2='SERVICE=PRI LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL_PRI'
STANDBY_MODE=MANAGE_RECOVERY_PROCESS
3.4 启动备库至NOMOUNT状态
SQL> startup nomount pfile='/tmp/initSTDBY.ora';
3.5 使用RMAN恢复备库
连接RMAN并执行以下命令:
RMAN> CONNECT TARGET sys/password@PRI AUXNAME sys/password@STDBY;
RMAN> DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE
DORECOVER
SPFILE
SET DB_UNIQUE_NAME='ORCL_STDBY'
SET CONTROL_FILES='/u01/app/oracle/oradata/ORCL/control01.ctl'
SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL_STDBY'
NOFILENAMECHECK;
3.6 启动MRP进程
备库恢复完成后,启动Managed Recovery Process:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
SQL> SELECT process, status FROM v$managed_standby;
四、验证与测试
4.1 数据同步验证
在主库插入测试数据并提交,检查备库是否同步:
-- 主库执行
SQL> INSERT INTO test_table VALUES (1, 'Data Guard Test');
SQL> COMMIT;
-- 备库查询
SQL> SELECT * FROM test_table;
4.2 日志传输状态检查
SQL> SELECT sequence#, applied FROM v$archived_log ORDER BY sequence# DESC;
4.3 故障切换测试
模拟主库故障,执行切换操作:
-- 备库执行切换
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
-- 原主库转换为备库
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
五、常见问题处理
5.1 日志传输延迟
检查网络带宽,调整LOG_ARCHIVE_DEST_n参数中的ASYNC/SYNC模式,或增加备库日志应用线程数:
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
5.2 参数配置错误
使用DGMGRL工具验证配置:
DGMGRL> CONNECT sys/password@ORCL_PRI;
DGMGRL> CREATE CONFIGURATION DGConfig AS PRIMARY DATABASE IS ORCL_PRI CONNECT IDENTIFIER IS ORCL_PRI;
DGMGRL> ADD DATABASE ORCL_STDBY AS CONNECT IDENTIFIER IS ORCL_STDBY MAINTAINED AS PHYSICAL;
DGMGRL> SHOW CONFIGURATION;
关键词:Oracle 11g、Data Guard、物理备库、高可用性、RMAN复制、日志传输、故障切换
简介:本文详细介绍Oracle 11g环境下配置Data Guard物理备库的完整流程,包括主库归档模式配置、参数调整、RMAN辅助复制搭建备库、MRP进程管理及切换测试等关键步骤,结合代码示例与故障排查方法,为数据库管理员提供可落地的灾难恢复解决方案。