温馨提示×

Ubuntu Oracle如何进行资源限制配置

小樊
32
2026-01-01 10:30:03
栏目: 云计算

Ubuntu 上 Oracle 资源限制配置

一 操作系统层限制 PAM limits

  • 以安装 Oracle 的系统用户(通常为 oracle)为目标,编辑 /etc/security/limits.conf,为 oracle 设置进程数、文件句柄与栈大小等上限。示例值(可按需调整):
    • oracle soft nproc 2047
    • oracle hard nproc 16384
    • oracle soft nofile 1024
    • oracle hard nofile 65536
    • oracle soft stack 10240
  • 确保 PAM 启用 limits 模块:检查 /etc/pam.d/login/etc/pam.d/su 均包含行:session required pam_limits.so。如缺失请添加,否则 limits.conf 不生效。
  • 使配置生效:
    • 对于已登录会话,需重新登录;或执行 ulimit -u 16384 -n 65536 -s 10240(以 oracle 用户)临时生效用于验证。
    • 若通过 systemd 服务启动(如监听、ASM/DB 服务单元),需在单元中显式声明这些 limits(见下文“服务单元示例”)。

二 数据库层限制 概要文件 Profile

  • 启用数据库级资源限制:将参数 RESOURCE_LIMIT 设为 TRUE(动态生效,建议写入 spfile 持久化)。
    • SQL> alter system set resource_limit = true scope=both;
  • 创建并分配概要文件(示例:限制并发会话、连接时长、空闲时长、每次调用 CPU、每次会话逻辑读、私有 SGA):
    • 创建概要文件
      • SQL> create profile app_profile limit
        • sessions_per_user 4
        • connect_time 60
        • idle_time 20
        • cpu_per_call 100
        • logical_reads_per_session 100000
        • private_sga 100K;
    • 将概要文件分配给用户
      • SQL> alter user scott profile app_profile;
  • 常用查询
    • 查看用户所用概要文件:select profile from dba_users where username=‘SCOTT’;
    • 查看概要文件内容:select * from dba_profiles where profile=‘APP_PROFILE’;
    • 查看用户资源限制状态:select * from user_resource_limits;
  • 说明
    • 会话级超限通常导致会话被终止;调用级超限会回滚当前语句但保留会话。
    • 口令类限制(如 FAILED_LOGIN_ATTEMPTS、PASSWORD_LIFE_TIME 等)也可在概要文件中配置,用于账户安全策略。

三 systemd 服务单元示例 显式声明 limits

  • 若通过 systemd 管理 Oracle 相关服务(如监听、数据库实例),在单元文件 [Service] 段加入 Limits 指令,确保服务进程继承资源上限:
    • [Service]
      • User=oracle
      • Group=oinstall
      • LimitNOFILE=65536
      • LimitNPROC=16384
      • LimitSTACK=10240
  • 重新加载并重启服务:
    • sudo systemctl daemon-reload
    • sudo systemctl restart oracle.service(按实际单元名调整)
  • 说明:即使已在 limits.conf 设置,使用 systemd 时仍建议在单元中显式声明,以避免服务环境未加载 PAM 或继承不当导致限制不生效。

四 验证与常见问题

  • 验证操作系统层
    • 以 oracle 用户执行:ulimit -u / -n / -s,核对返回值与 limits.conf 一致。
    • 检查 PAM:grep -n pam_limits /etc/pam.d/login /etc/pam.d/su。
  • 验证数据库层
    • 确认参数:show parameter resource_limit(应为 TRUE)。
    • 查询概要文件与用户分配:select * from dba_profiles where profile=‘APP_PROFILE’; select profile from dba_users where username=‘YOUR_USER’;
  • 常见原因与处理
    • 图形/远程登录会话未加载 limits:改用登录 shell 或重新登录;必要时在 systemd 单元中显式设置。
    • 服务未继承 limits:为对应 systemd 单元添加 Limits 指令并重启服务。
    • 概要文件未生效:确认已执行 alter system set resource_limit=true 且用户已分配到目标 profile。

0