1. 环境准备与系统配置
在RedHat 8.8上部署Oracle 19c前,需要确保系统满足最低硬件和软件要求。我遇到过不少因为环境配置不当导致的安装失败案例,这里分享几个关键检查点:
内存与交换空间配置(实测推荐值):
- 物理内存至少4GB(生产环境建议8GB以上)
- 交换空间计算公式:
# 计算交换分区大小的Shell脚本 MEMORY_GB=$(free -g | awk '/Mem:/ {print $2}') if [ $MEMORY_GB -lt 2 ]; then SWAP_GB=$((MEMORY_GB * 2)) elif [ $MEMORY_GB -lt 16 ]; then SWAP_GB=$MEMORY_GB else SWAP_GB=16 fi
磁盘空间要求:
/tmp目录至少1GB- Oracle二进制文件需要6.5GB
- 数据文件建议预留100GB(根据业务规模调整)
内核参数调优: 编辑/etc/sysctl.conf添加以下参数(这是我多次部署验证过的稳定值):
# Oracle 19c专用配置 kernel.shmall = 2097152 kernel.shmmax = 4294967296 kernel.shmmni = 4096 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 9000 65500执行sysctl -p生效后,建议用sysctl -a | grep shm验证是否生效。
注意:如果服务器已启用HugePages,需要从可用内存中扣除HugePages占用的部分再计算swap空间
2. 依赖包安装与用户配置
RedHat 8.8的依赖包管理与早期版本不同,使用dnf替代yum。以下是必须安装的软件包组:
dnf install -y oracle-database-preinstall-19c这个meta-package会自动安装所有基础依赖,比手动安装更可靠。我遇到过手动安装漏掉libnsl导致安装器报错的情况,用这个方法可以避免。
创建Oracle用户的推荐做法:
groupadd -g 54321 oinstall groupadd -g 54322 dba useradd -u 54321 -g oinstall -G dba oracle echo "oracle_password" | passwd oracle --stdin目录权限设置(遵循OFA标准):
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 chown -R oracle:oinstall /u01 chmod -R 775 /u013. 安装文件准备与静默安装
从Oracle官网下载安装包后,建议做MD5校验:
md5sum LINUX.X64_193000_db_home.zip解压时使用oracle用户操作:
su - oracle unzip -q LINUX.X64_193000_db_home.zip -d $ORACLE_HOME静默安装响应文件配置示例(db_install.rsp):
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=dba oracle.install.db.OSDGDBA_GROUP=dba oracle.install.db.OSKMDBA_GROUP=dba oracle.install.db.OSRACDBA_GROUP=dba启动静默安装:
./runInstaller -silent -responseFile /path/to/db_install.rsp安装过程中常见错误INS-08101的解决方法:
export CV_ASSUME_DISTID=OL8 # 针对RedHat 8的兼容性设置4. 数据库创建与网络配置
使用DBCA创建数据库的响应文件模板:
<?xml version="1.0" encoding="UTF-8"?> <DatabaseTemplate name="General_Purpose.dbc" description="General Purpose Database" version="19.0.0"> <CommonAttributes> <option name="CONTAINERDATABASE" value="false"/> <option name="JISQL" value="true"/> <option name="ORACLESERVER" value="true"/> </CommonAttributes> <Variables> <variable name="DBNAME" value="ORCL"/> <variable name="SID" value="ORCL"/> <variable name="CHARACTERSET" value="AL32UTF8"/> </Variables> </DatabaseTemplate>启动DBCA静默创建:
dbca -silent -createDatabase \ -responseFile /path/to/dbca.rsp \ -gdbname ORCL \ -sid ORCL \ -sysPassword Oracle123 \ -systemPassword Oracle123 \ -emConfiguration DBEXPRESS \ -enableArchive true监听器配置关键点:
lsnrctl start lsnrctl status # 验证监听状态5. 服务自启配置
创建systemd服务文件/etc/systemd/system/oracle-19c.service:
[Unit] Description=Oracle Database 19c After=network.target [Service] Type=forking User=oracle Group=oinstall Environment="ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1" Environment="ORACLE_SID=ORCL" ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME [Install] WantedBy=multi-user.target启用服务:
systemctl daemon-reload systemctl enable oracle-19c systemctl start oracle-19c验证自启是否生效可以重启服务器后检查:
ps -ef | grep pmon sqlplus / as sysdba <<EOF SELECT status FROM v\$instance; EXIT; EOF6. 性能优化建议
根据实际业务负载调整SGA/PGA大小:
-- 查看当前内存分配 SHOW PARAMETER sga_target; SHOW PARAMETER pga_aggregate_target; -- 建议初始设置(8GB内存服务器示例) ALTER SYSTEM SET sga_target=4G SCOPE=spfile; ALTER SYSTEM SET pga_aggregate_target=2G SCOPE=spfile;表空间自动扩展配置:
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/system01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;最后提醒,定期检查alert日志是个好习惯:
tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/alert_$ORACLE_SID.log