首页 >
问答 >
云计算 >
CentOS环境下Oracle如何配置最佳
CentOS环境下Oracle如何配置最佳
小樊
35
2025-12-05 14:34:20
CentOS 环境下 Oracle 最佳配置实践
一 环境准备与基础配置
系统版本与资源建议:优先选择 CentOS 7/8(64 位) ;内存至少 2 GB(建议 ≥4 GB) ;安装至少需要 10 GB 磁盘空间(建议 20 GB+ );Swap 按内存规模配置:1–2 GB 内存用 1.5 倍 ,2–16 GB 与内存相同 ,>16 GB 固定 16 GB 。完成后执行 sudo yum update -y 更新系统。
依赖包安装:
sudo yum install -y binutils compat-libcap1 compat-libstdc+±33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc+±devel libXi libXtst make sysstat unixODBC unixODBC-devel
用户与目录:
sudo groupadd oinstall; sudo groupadd dba; sudo useradd -g oinstall -G dba oracle; sudo passwd oracle
sudo mkdir -p /u01/app/oracle; sudo chown -R oracle:oinstall /u01; sudo chmod -R 775 /u01
说明:部分安装器在 CentOS 上可能识别为不支持,常见做法是将系统标识临时改为 Red Hat 兼容标识(如修改 /etc/redhat-release ),安装完成后再恢复;生产环境不建议长期关闭 SELinux/防火墙 ,应改为精细化策略放行 1521 等必要端口。
二 内核与资源限制调优
内核参数(/etc/sysctl.conf,执行 sysctl -p 生效):
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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
可选性能增强:
适度降低换页倾向:vm.swappiness = 10
大页 HugePages(示例计算,需按实际内存与 SGA 调整):
kernel.shmmax ≈ 物理内存(字节)−1;kernel.shmall ≈ 物理内存(字节)/ 4096
SGA 目标(示例)≈ 内存的 40% ;PGA ≈ SGA 的 10%
HugePages 数量(示例)≈ SGA(GB)×1024/2 + 1024 (需确保大于 SGA 所需页数)
三 安装与网络配置
安装介质与解压:从 Oracle 官方获取 Linux x86_64 安装包(如 19c ),上传至 /u01/app/oracle 并解压:
cd /u01/app/oracle; unzip LINUX.X64_193000_db_home.zip
监听与实例:使用 netca 配置监听器,使用 dbca 创建数据库实例(字符集建议 AL32UTF8 )。
环境变量(/home/oracle/.bashrc 或对应 profile):
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/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
远程访问与防火墙:开放 1521/TCP (firewalld:firewall-cmd --add-port=1521/tcp --permanent && firewall-cmd --reload);在 $ORACLE_HOME/network/admin 下配置 listener.ora/sqlnet.ora/tnsnames.ora ;客户端以服务名测试连接。
四 数据库内存与关键参数
内存目标(示例):SGA ≈ 内存的 40% ,PGA ≈ 10% ;先关闭自动内存管理:ALTER SYSTEM SET memory_target=0 SCOPE=SPFILE;
设置示例:
ALTER SYSTEM SET sga_max_size=4G SCOPE=SPFILE;
ALTER SYSTEM SET sga_target=4G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target=1G SCOPE=SPFILE;
会话与日志:
ALTER SYSTEM SET processes=200 SCOPE=SPFILE;
ALTER SYSTEM SET sessions=200 SCOPE=SPFILE;
ALTER SYSTEM SET log_buffer=64M SCOPE=SPFILE;
说明:以上为通用起点,需结合 AWR/ASH 报告与业务负载逐步微调。
五 运行维护与监控
自启动与启停:
在 /etc/oratab 将实例行末尾改为 Y :orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y
创建 systemd 服务(/etc/systemd/system/oracle.service):
[Unit] Description=Oracle Database Service; After=network.target
[Service] Type=forking; User=oracle; Environment=“ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1”
ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME; ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME; Restart=on-abort
[Install] WantedBy=multi-user.target
启用:systemctl daemon-reload && systemctl enable --now oracle
监控与优化:定期查看 Alert/Trace/Listener 日志;使用 AWR/ASH/ADDM 识别瓶颈;持续进行 SQL 优化 (减少全表扫描、合理索引)、统计信息收集 与必要的索引维护;硬件层面优先 SSD/NVMe 、充足内存与多核 CPU 以发挥并行能力。