高效配置 Oracle 于 CentOS 的实操清单
一 系统准备与基础配置
- 资源基线:内存至少2GB、Swap 至少2GB、可用磁盘建议≥10GB;选择CentOS 7/8 x86_64,并准备 Oracle 安装介质(如 19c 或 11gR2)。
- 用户与目录:创建 oinstall/dba 组与 oracle 用户;创建目录 /u01/app/oracle(及子目录 product/19.0.0/dbhome_1、oradata),并赋权。
- 依赖包:安装 gcc、make、binutils、glibc-devel、ksh、libaio、libaio-devel、libstdc+±devel、sysstat、unixODBC、unzip 等。
- 系统标识与访问控制:部分安装器对 CentOS 识别有限,必要时将 /etc/redhat-release 临时改为 Red Hat Enterprise Linux 7.x;生产环境不建议直接关闭 firewalld/SELinux,应仅开放 1521 端口并做最小权限配置。
- 主机名与解析:设置主机名(如 db),并在 /etc/hosts 中写入本机 IP 与主机名映射,避免监听与连接异常。
二 内核与资源限制优化
- 内核参数(/etc/sysctl.conf):
- 共享内存与信号量:
- kernel.shmmax ≈ 物理内存×0.85(单位 Byte,示例:16GB 内存可设 13743895347)
- kernel.shmall = shmmax / 4096
- kernel.shmmni = 4096
- kernel.sem = 250 32000 100 128
- 文件与 AIO:fs.file-max = 6815744,fs.aio-max-nr = 1048576
- 网络: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
- 内存回收:vm.swappiness = 10
- 使配置生效:
sysctl -p。
- 资源限制(/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 -u 16384 -n 65536
- 大页(HugePages,可选但强烈建议):
- 计算建议值(示例):
HugePages ≈ (SGA_TARGET + 2GB) / Hugepage_size;先预留充足内存,避免 OOM。
- 关闭透明大页:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 加入
default_hugepagesz=2M hugepagesz=2M hugepages=N,执行 grub2-mkconfig -o /boot/grub2/grub.cfg 后重启。
三 安装与实例创建
- 环境变量(/home/oracle/.bashrc 或 .bash_profile):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1(11g 路径示例:/u01/app/oracle/product/11.2.0/db_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
- 图形/静默安装:
- 图形界面:以 oracle 用户执行
./runInstaller 按向导完成。
- 静默安装 19c RPM 预安装包:
yum install -y oracle-database-preinstall-19c-*.rpm
- 静默建库示例:
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname orcl -sid orcl -responseFile NO_VALUE -characterSet AL32UTF8
- 监听与网络:
- 配置监听:
netca(或手工编辑 $ORACLE_HOME/network/admin/listener.ora)
- 客户端解析:
tnsnames.ora 中配置服务名指向 (ADDRESS = (PROTOCOL=TCP)(HOST=db)(PORT=1521))
- 验证:
lsnrctl status、sqlplus sys/oracle@orcl as sysdba
四 数据库内存与连接优化
- 自动内存管理(推荐):
ALTER SYSTEM SET memory_target = 12G SCOPE=SPFILE;(示例值,需小于物理内存并预留 OS 与 PGA)
ALTER SYSTEM SET memory_max_target = 12G SCOPE=SPFILE;
- 重启后生效,后续由 Oracle 自动在 SGA/PGA 间分配。
- 手动内存分配(如不使用 AMM):
ALTER SYSTEM SET sga_target = 8G SCOPE=BOTH;
ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE=BOTH;
- 日志缓冲区:
ALTER SYSTEM SET log_buffer = 64M SCOPE=BOTH;(OLTP 可适当增大)
- 进程与会话:
ALTER SYSTEM SET processes = 500 SCOPE=SPFILE;
ALTER SYSTEM SET sessions = 555 SCOPE=SPFILE;(sessions 通常 = processes×1.1 + 5)
- 并发与连接:结合应用压测设置合理的 processes/sessions,避免连接风暴;使用连接池与 SCAN/VIP 提升高可用与扩展。
五 存储 I O 与 SQL 层优化及监控
- 存储与文件系统:优先 SSD/NVMe;使用 XFS/ext4,挂载选项建议 noatime,nodiratime,barrier=1;重做/归档/数据文件分盘,避免 I/O 争用。
- 表空间与段:为 SYSTEM/TEMP/UNDO 单独规划;按业务增长设置 AUTOEXTEND 与合理 MAXSIZE。
- 索引与 SQL:
- 为高频过滤/关联列建立合适索引,避免 *SELECT ,使用绑定变量减少硬解析;
- 通过 EXPLAIN PLAN / DBMS_XPLAN 与 SQL Tuning Advisor 持续优化;
- 大表按时间/范围做分区,配合分区索引降低扫描与维护成本。
- 统计信息与维护:定期收集统计信息
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>'SCHEMA', estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE);;按需重建/合并碎片索引。
- 监控与诊断:利用 AWR/ASH/ADDM 定期分析瓶颈(Top SQL、等待事件、I/O 等),结合 OEM 或自建看板持续观测。