首页主机资讯Oracle在Linux上的资源限制与调整方法

Oracle在Linux上的资源限制与调整方法

时间2026-01-21 21:49:03发布访客分类主机资讯浏览517
导读:Oracle在Linux上的资源限制与调整方法 一 用户级资源限制与生效机制 关键限制项与建议值(针对oracle用户): nofile(打开文件数):soft 1024,hard 65536 nproc(进程/线程数):soft 20...

Oracle在Linux上的资源限制与调整方法

一 用户级资源限制与生效机制

  • 关键限制项与建议值(针对oracle用户):
    • nofile(打开文件数):soft 1024,hard 65536
    • nproc(进程/线程数):soft 2047,hard 16384
    • 说明:soft为告警阈值,hard为上限;普通用户只能把soft调至不超过hard,且不能自行提高hard。上述为Oracle安装常见基线,可按并发与负载适当上调。
  • 配置步骤与生效要点:
    1. 编辑**/etc/security/limits.conf**
      oracle soft nproc 2047
      oracle hard nproc 16384
      oracle soft nofile 1024
      oracle hard nofile 65536
      
    2. 确保PAM加载limits模块(不同发行版路径可能不同,二选一或同时配置)
      • /etc/pam.d/login:session required pam_limits.so
      • /etc/pam.d/sshd 或 /etc/pam.d/system-auth:session required pam_limits.so
    3. 登录会话应用:重新登录oracle用户后,ulimit -a应反映新限制;当前会话内可用ulimit -n 65536 -u 16384临时提升(受hard约束)。
    4. 容器/系统d服务:若Oracle运行在systemd服务或容器中,需在对应单元(如oracle.service)中配置LimitNOFILE=65536LimitNPROC=16384等,PAM对该会话不生效。

二 内核参数与共享内存配置

  • 常见基线(写入**/etc/sysctl.conf**,执行sysctl -p生效):
    fs.file-max = 6815744
    fs.aio-max-nr = 1048576
    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
    
  • 共享内存关键参数计算与建议:
    • kernel.shmmax:单个共享内存段最大值。建议≥SGA_TARGET(或SGA_MAX_SIZE)。例如SGA为12G时,可设kernel.shmmax=12884901887(即16GB-1)。
    • kernel.shmall:系统可分配的共享内存总页数。页大小通常为4KB,计算式:shmall = ceil(总共享内存需求 / 4KB)。例如需要16GB共享内存:16GB/4KB=4194304,则设kernel.shmall=4194304
    • 说明:将SGA放入单个共享内存段可减少性能隐患;过低会导致创建多个段并带来启动/运行期额外开销。

三 内存管理与大页配置

  • 内存管理方式与参数要点:
    • ASMM:设置SGA_TARGET(动态)与SGA_MAX_SIZE(静态,需重启)。示例:
      alter system set sga_max_size=4096M scope=spfile;
          
      alter system set sga_target=4096M scope=spfile;
          
      shutdown immediate;
           startup;
          
      
    • PGA:建议WORKAREA_SIZE_POLICY=AUTO,再设置PGA_AGGREGATE_TARGET(可在线调整)。示例:
      alter system set workarea_size_policy=auto scope=both;
          
      alter system set pga_aggregate_target=512M scope=both;
          
      
    • AMM:使用MEMORY_TARGET/MEMORY_MAX_TARGET时,需确保**/dev/shm**容量≥目标内存;否则实例启动会失败。
  • 大页HugePages(提升大内存与SGA访问效率,减少页表开销):
    • 计算HugePages数量(示例SGA=12G,HugePage大小通常为2MB):12288MB / 2MB = 6144,预留少量余量可设6200左右。
    • 配置步骤:
      1. /etc/sysctl.conf:vm.nr_hugepages=6200
      2. 重启或按需使参数生效
      3. 启动数据库前确认:grep Huge /proc/meminfoipcs -m查看共享内存段是否使用大页
    • 注意:启用HugePages后,通常不再使用AMM(二者策略互斥)。

四 CPU与I/O资源隔离与调度

  • CPU亲和性(将Oracle进程绑定到指定CPU):
    • 使用taskset启动实例或调整进程亲和性(示例绑定到CPU 1,3-5):
      taskset -c 1,3-5 sqlplus '/ as sysdba'
      startup
      # 调整已运行进程
      taskset -pc 1-3 <
          pid>
          
      # 多线程需对线程逐一设置
      for p in /proc/<
          pid>
          /task/*;
       do taskset -p -c 1-3 ${
      p##*/}
          ;
           done
      
  • CGroup精细化控制(Oracle Linux 6 UEK2及以上):
    • 可用子系统包括cpuset、cpu、cpuacct、memory、blkio等,可按组为Oracle分配CPU份额/配额、内存上限与I/O权重,实现多负载隔离与保障关键业务QoS。

五 验证与常见问题处理

  • 快速验证清单:
    • 用户限制:su - oracle -c 'ulimit -a'(确认nofile/nproc
    • 内核参数:sysctl -pcat /proc/sys/fs/file-max/proc/sys/kernel/shmmax
    • 共享内存:ipcs -m查看段大小与数量;df -h /dev/shm(AMM场景)
    • HugePages:grep Huge /proc/meminfo
    • CPU亲和性:taskset -p < pid> 查看
  • 常见问题与对策:
    • 安装/启动报“too many open files”或“max user processes”:提升nofile/nproc并确认PAM/服务单元已配置
    • 实例启动失败且提示共享内存不足:提高kernel.shmmax/kernel.shmall,或改用HugePages
    • AMM无法启动:检查**/dev/shm**是否足够大
    • 性能抖动或启动慢:尽量让SGA位于单个共享内存段,减少段数量。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Oracle在Linux上的资源限制与调整方法
本文地址: https://pptw.com/jishu/789139.html
如何在Linux上配置Oracle的网络监听器 Linux系统中Oracle服务的启动与停止管理

游客 回复需填写必要信息