Oracle数据库在CentOS平台上的高可用部署主要依赖Oracle Real Application Clusters (RAC) 和 Oracle Data Guard 两大核心技术,两者分别针对不同的故障场景设计,可单独或组合使用以实现全方位的高可用保障。
Oracle RAC是Oracle针对集群环境设计的数据库解决方案,允许多个服务器节点(物理机或虚拟机)同时运行同一个数据库实例,通过共享存储和集群管理实现负载均衡、故障转移和在线扩展。其核心价值在于消除单点故障——即使某节点发生硬件故障或软件崩溃,其他节点仍可继续提供服务,确保业务连续性。
gcc、make、binutils、compat-libstdc++
等);创建专用Oracle用户(oinstall
组、dba
组)和软件目录(如/u01/app/oracle/product/19.0.0/dbhome_1
);配置系统内核参数(如shmmax、shmall、semmsl
等,位于/etc/sysctl.conf
)和用户限制(如nofile、nproc
,位于/etc/security/limits.conf
)。DATA
、FRA
),使用ASM管理;确保所有节点均可访问共享存储(权限设置为oracle:oinstall
)。dbca
(数据库配置助手)或命令行工具创建RAC数据库,配置全局数据库名称(如orcl
)、实例数量(与节点数一致)、字符集(如AL32UTF8
);确保所有实例均能正常启动(通过crsctl status resource
验证)。sqlplus / as sysdba
→ shutdown abort
),观察其他节点是否自动接管该实例(通过crsctl stat res -t
查看资源状态)。LOAD_BALANCE=on
,验证客户端请求是否均匀分配到各节点(可通过v$instance
视图查看各节点的活动实例数)。Oracle Data Guard是Oracle提供的物理/逻辑备用数据库解决方案,通过实时或近实时数据同步(Redo日志传输与应用)确保主备数据库一致性,主要用于灾难恢复和读写分离。其核心价值在于保护数据完整性——即使主库发生严重故障(如磁盘损坏、数据中心断电),备库仍可作为备用数据库提供服务。
AL32UTF8
)必须完全一致。/etc/hosts
文件或配置DNS解析,确保主机名可互相访问(如primarynode
对应主库IP,standbynode
对应备库IP)。/u01/app/oracle/oradata/orcl
),确保数据文件路径一致(或通过DB_FILE_NAME_CONVERT
参数转换)。shutdown immediate
→ startup mount
→ alter database archivelog
→ alter database open
;alter database force logging
;spfile
):设置db_unique_name
(如orcl11g
)、log_archive_config
(DG_CONFIG=(orcl11g,orcl11gdg)
)、log_archive_dest_1
(主库本地归档路径)、log_archive_dest_2
(备库Redo日志传输路径,如SERVICE=standbynode LGWR SYNC AFFIRM
)、log_archive_dest_state_1/2=enable
;alter database create standby controlfile as '/u01/standby/standby.ctl'
;pfile
):设置db_unique_name
(如orcl11gdg
)、log_archive_config
(同主库)、log_archive_dest_1
(备库本地归档路径)、log_archive_dest_2
(主库Redo日志接收路径,如SERVICE=primarynode LGWR ASYNC
)、fal_server=primarynode
(主库别名)、fal_client=standbynode
(备库别名);startup nomount
→ restore standby controlfile from '/u01/standby/standby.ctl'
→ alter database mount standby database
;alter database recover managed standby database using current logfile disconnect from session
。alter database commit to switchover to standby
→ 备库执行alter database commit to switchover to primary
→ 重启原主库(shutdown immediate
→ startup
)。alter database recover managed standby database cancel
→ alter database activate standby database
→ 重启备库(shutdown immediate
→ startup
)。alter system switch logfile
命令切换主库Redo日志,观察备库是否及时应用(select sequence#, applied from v$archived_log order by sequence#
);模拟主库故障(如停止主库实例),执行failover,验证备库是否能正常提供服务。在实际生产环境中,RAC与Data Guard组合使用可实现更高级别的高可用:RAC负责集群内的故障转移(节点级),Data Guard负责数据中心级的灾难恢复(站点级)。例如,主库采用RAC部署(多节点),备库采用物理备用数据库部署(异地数据中心),当主库节点故障时,RAC自动切换到其他节点;当主库数据中心故障时,Data Guard将备库提升为主库,确保业务连续性。