位置: 文档库 > 数据库 > RAC手工配置监听、ASM和创建数据库

RAC手工配置监听、ASM和创建数据库

瓦斯科达伽马 上传于 2020-03-07 07:39

《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架构部署与维护。