在 CentOS 上配置 Oracle 的实操清单
一 环境准备与系统要求
- 以 CentOS 7/8 x86_64 为例,准备至少 2GB 内存、≥2GB Swap、≥10GB 磁盘(生产环境请按负载提高规格)。设置主机名并完善 /etc/hosts(示例:将 db 映射到服务器内网 IP),便于监听与客户端解析。安装常用依赖(示例):binutils、compat-libcap1、compat-libstdc++、gcc、gcc-c++、glibc-devel、ksh、libaio-devel、libgcc、libstdc+±devel、make、sysstat、unixODBC、unixODBC-devel、zip、unzip。创建 Oracle 用户与组:oinstall、dba,并创建目录 /u01/app/oracle(属主 oracle:oinstall,权限 775)。注意:部分旧版安装器在识别 CentOS 时可能需要将 /etc/redhat-release 临时伪装为 RHEL 7.x 才能继续(安装完成后可恢复)。
二 内核参数与资源限制
- 内核参数(/etc/sysctl.conf,执行 sysctl -p 生效):
- fs.aio-max-nr = 1048576
- fs.file-max = 6815744
- kernel.shmall = 2097152
- kernel.shmmni = 4096
- kernel.sem = 250 32000 100 128
- kernel.shmmax = 建议设为物理内存一半(字节),示例:2147483648(2GB)
- net.ipv4.ip_local_port_range = 9000 65500
- net.core.rmem_default = 262144
- net.core.rmem_max = 4194304
- net.core.wmem_default = 262144
- net.core.wmem_max = 1048576
- 资源限制(/etc/security/limits.conf):
- oracle soft nproc 2047
- oracle hard nproc 16384
- oracle soft nofile 1024
- oracle hard nofile 65536
- oracle soft stack 10240
- 在 /etc/pam.d/login 增加:session required pam_limits.so;在 /etc/profile 为 oracle 用户设置 ulimit(示例:ulimit -u 16384 -n 65536)。以上参数能避免打开文件数、进程数、共享内存不足导致的安装或运行异常。
三 安装与建库
- 安装方式二选一:
- RPM 方式(19c 常用):上传并安装 oracle-database-preinstall-19c 元包(自动配置依赖与内核参数),然后安装数据库 RPM(可从官方仓库或介质获取),最后用 /etc/init.d/oracle-database-ee-19c start 启动,或配置为系统服务自启。
- 图形/静默安装(ZIP 方式):以 oracle 用户解压安装介质,执行 ./runInstaller(图形界面按向导;静默可用响应文件或命令行参数)。安装过程中按需配置 ORACLE_BASE、ORACLE_HOME、ORACLE_SID。
- 监听与实例:
- 使用 netca 配置监听(LISTENER),或用文本编辑 $ORACLE_HOME/network/admin/listener.ora 与 tnsnames.ora。
- 使用 dbca 建库(交互或静默)。静默示例:
- $ORACLE_HOME/bin/dbca -silent
-createDatabase
-templateName General_Purpose.dbc
-gdbname orcl -sid orcl
-responseFile NO_VALUE
-characterSet AL32UTF8
- 环境变量(建议写入 /home/oracle/.bashrc 或 /etc/profile.d/oracle.sh):
- export ORACLE_BASE=/u01/app/oracle
- export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
- export ORACLE_SID=orcl
- export ORACLE_UNQNAME=orcl
- export PATH=$ORACLE_HOME/bin:$PATH
- export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
- export LANG=en_US.UTF-8
- export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
- 启动与验证:
- 监听:lsnrctl start
- 实例:sqlplus / as sysdba → startup
- 连接测试:sqlplus sys/口令@//主机名/服务名 as sysdba;或 sqlplus /nolog → conn / as sysdba。
四 安全与网络建议
- 生产环境不建议直接关闭防火墙与 SELinux。更稳妥做法:
- firewalld:开放 1521(Oracle 监听)、5500(EM Express,如启用)等端口,或按业务最小暴露原则放通来源网段。
- SELinux:保持 enforcing,必要时仅对 Oracle 相关进程/目录设置针对性的布尔值与类型(如 oracle_db_t),减少攻击面。
- 资源与稳定性:
- 合理设置 SGA/PGA(如 SGA_TARGET、PGA_AGGREGATE_TARGET),避免占用过多物理内存导致系统换页。
- 使用 /etc/oratab 管理实例启停,配置 systemd 或传统脚本实现开机自启与有序停机。
- 定期备份(RMAN/Data Guard/导出),并保留 Alert 日志 与 Listener 日志 以便排障。
五 常见问题与快速排查
- 安装器无法识别系统:临时将 /etc/redhat-release 内容改为 Red Hat Enterprise Linux 7.x (Core) 后重试(完成后可恢复)。
- 监听/连接失败:检查 listener.ora/tnsnames.ora 主机名与端口、服务器防火墙/云安全组、客户端 tnsnames.ora 与服务名一致性;用 lsnrctl status、tnsping 定位。
- 打开文件/进程数不足:复核 limits.conf 与 pam_limits.so,确认已对新登录会话生效(必要时重登 oracle 用户)。
- 字符集与 NLS:建议数据库字符集 AL32UTF8,客户端 NLS_LANG=AMERICAN_AMERICA.AL32UTF8,避免中文乱码。
- 日志与诊断:优先查看 $ORACLE_BASE/diag/rdbms/ 下对应实例的 trace/alert 目录,结合 ADR 与 DDM 做性能与故障分析。