CentOS环境下Oracle如何配置最佳
导读:CentOS 环境下 Oracle 最佳配置实践 一 环境准备与基础配置 系统版本与资源建议:优先选择 CentOS 7/8(64 位);内存至少 2 GB(建议 ≥4 GB);安装至少需要 10 GB 磁盘空间(建议 20 GB+);S...
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 以发挥并行能力。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS环境下Oracle如何配置最佳
本文地址: https://pptw.com/jishu/765356.html
