《RAC手工配置监听、ASM和创建数据库》
一、引言
Oracle Real Application Clusters(RAC)是Oracle数据库的高可用性解决方案,通过多节点共享存储架构实现负载均衡和故障自动转移。在RAC环境中,监听器(Listener)、自动存储管理(ASM)和数据库实例的配置是核心环节。本文将详细介绍如何通过手工方式完成RAC环境下的监听配置、ASM存储管理以及数据库创建的全过程,适用于Oracle 11g/12c/19c/21c等版本。
二、环境准备
1. 硬件要求
• 至少2台物理服务器或虚拟机
• 共享存储设备(如SAN、iSCSI或NFS)
• 网络配置(公网、私网、VIP)
2. 软件要求
• Oracle Grid Infrastructure(包含ASM)
• Oracle Database Software
3. 预检查项
• 主机名解析(/etc/hosts)
• 时间同步(NTP服务)
• 用户权限(grid和oracle用户)
• 存储可见性检查
三、ASM存储配置
1. 创建ASM磁盘组
(1)使用ASMCMD工具
# 切换至grid用户
su - grid
# 列出可用磁盘
asmcmd lsdsk --discovery
# 创建OCR磁盘组(用于集群注册)
asmcmd creatediskgroup OCR_DISKGROUP \
'/dev/sdb1' \
ATTRIBUTE 'compatible.asm'='19.0', \
'compatible.rdbms'='19.0'
(2)使用SQL*Plus配置
sqlplus / as sysasm
CREATE DISKGROUP DATA_DISKGROUP
EXTERNAL REDUNDANCY
DISK '/dev/sdc1','/dev/sdd1'
ATTRIBUTE 'compatible.asm'='19.0';
2. 磁盘组属性优化
• 设置兼容性参数
ALTER DISKGROUP DATA_DISKGROUP
SET ATTRIBUTE 'compatible.rdbms'='19.0';
• 配置备用盘策略
ALTER DISKGROUP DATA_DISKGROUP
ADD DISK '/dev/sde1' REBALANCE POWER 5;
四、监听器配置
1. 单节点监听配置
(1)创建监听配置文件
# 位置:$GRID_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = racdb_node1)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = racdb1)
)
)
(2)启动监听服务
lsnrctl start listener
lsnrctl status listener
2. SCAN监听配置
(1)修改scan_listener.ora
SCAN_LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan-cluster)(PORT = 1521))
)
)
(2)通过srvctl注册SCAN监听
srvctl add scan_listener -listener LISTENER_SCAN1 \
-oraclehome $GRID_HOME \
-ip 192.168.1.100 \
-port 1521
srvctl start scan_listener
五、RAC数据库创建
1. 创建参数文件
# 初始参数文件示例(initracdb1.ora)
racdb1.__data_transfer_cache_size=0
racdb1.__db_cache_size=1073741824
racdb1.__shared_pool_size=805306368
racdb1.__large_pool_size=33554432
cluster_database=true
instance_number=1
thread=1
undo_tablespace=UNDOTBS1
2. 使用DBCA创建数据库(静默模式)
dbca -silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbName racdb \
-sid racdb1 \
-sysPassword Oracle123 \
-systemPassword Oracle123 \
-emConfiguration DBEXPRESS \
-enableArchive true \
-storageType ASM \
-datafileJunctionPoint +DATA_DISKGROUP \
-redoLogGroups 3 \
-redoLogFileSize 500 \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-totalMemory 2048
3. 添加第二个节点实例
srvctl add instance -d racdb -i racdb2 \
-n node2 \
-oraclehome /u01/app/oracle/product/19.0.0/dbhome_1
srvctl start instance -d racdb -i racdb2
六、验证与测试
1. 集群状态检查
crsctl check cluster -all
srvctl config database -d racdb
2. 数据库连接测试
sqlplus sys/Oracle123@racdb_scan as sysdba
SELECT instance_name,host_name FROM v$instance;
3. 负载均衡验证
# 使用tnsping测试SCAN监听
tnsping racdb_scan
# 检查服务注册情况
lsnrctl services listener_scan1
七、常见问题处理
1. 监听无法启动
• 检查防火墙设置:iptables -L
• 验证权限:ls -la $GRID_HOME/network/log
2. ASM磁盘组无法挂载
• 检查磁盘权限:ls -l /dev/sd*
• 验证ASM实例状态:ps -ef|grep pmon_asm
3. 实例无法注册到监听
• 检查local_listener参数:show parameter local_listener
• 验证网络连通性:ping node2-vip
八、最佳实践建议
1. 存储配置
• 使用外部冗余(EXTERNAL REDUNDANCY)时确保存储层有冗余
• 定期执行asmcmd lsdg --statistics
监控磁盘组健康度
2. 监听优化
• 设置监听日志轮转:logging_listener = ON
• 配置连接超时:inbound_connect_timeout = 120
3. 数据库参数
• 启用自动内存管理:memory_target=4G
• 配置GC相关参数:_gc_policy_time=300
九、总结
通过手工方式配置RAC环境虽然步骤复杂,但能够深入理解集群架构的各个组件。关键点包括:正确配置共享存储的ASM磁盘组、设置多节点监听服务(包含SCAN监听)、以及通过srvctl工具管理集群数据库。建议在实际操作前进行充分的沙箱环境测试,并参考Oracle官方文档《Real Application Clusters Administration and Deployment Guide》。
关键词:Oracle RAC、ASM存储、监听配置、SCAN监听、集群数据库、srvctl命令、静默安装、高可用性
简介:本文详细阐述Oracle RAC环境下手工配置监听器、ASM存储管理以及创建集群数据库的完整流程,涵盖从环境准备到验证测试的全过程,包含关键配置文件示例和常见问题解决方案,适用于DBA进行RAC架构部署与维护。