- 首页 >
- 问答 >
-
云计算 >
- Linux Oracle资源限制如何设置
Linux Oracle资源限制如何设置
小樊
37
2025-12-12 14:34:02
Linux 与 Oracle 资源限制设置指南
一 操作系统层设置
- 系统级文件句柄上限
- 查看与调整内核全局上限:cat /proc/sys/fs/file-max;临时生效 sysctl -w fs.file-max=100000;永久写入 /etc/sysctl.conf:fs.file-max=100000,执行 sysctl -p 使配置生效。该值决定系统可分配的文件描述符总量。
- Oracle 用户会话级限制
- 编辑 /etc/security/limits.conf,为 oracle 用户设置软/硬限制(soft 为告警阈值,hard 为强制上限):
- oracle soft nproc 2047
- oracle hard nproc 16384
- oracle soft nofile 1024
- oracle hard nofile 65536
- 确保 PAM 启用 limits 模块:编辑 /etc/pam.d/login,加入 session required pam_limits.so(64 位系统可用 /lib64/security/pam_limits.so)。
- 为登录会话显式设置(可选,双重保障):在 /etc/profile 或 oracle 用户的 ~/.bash_profile 中加入
- if [ “$USER” = “oracle” ]; then
if [ “$SHELL” = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
- 使环境变更生效:source /etc/profile 或重新登录 oracle 用户。
- 生效验证
- 切换到 oracle:su - oracle
- 查看:ulimit -n -S/-H(打开文件软/硬限制)、ulimit -u -S/-H(进程数软/硬限制)应与 limits.conf 一致。
二 Oracle 数据库层设置
- 启用资源限制
- 检查并开启:show parameter resource_limit; 若为 FALSE,执行 alter system set resource_limit=true; 使资源限制生效(密码类限制始终生效,不受该参数影响)。
- 使用 Profile 限制会话与密码
- 常用资源参数:SESSIONS_PER_USER、CPU_PER_SESSION、CPU_PER_CALL、CONNECT_TIME、IDLE_TIME、LOGICAL_READS_PER_SESSION、LOGICAL_READS_PER_CALL、PRIVATE_SGA、COMPOSITE_LIMIT。
- 常用密码参数:FAILED_LOGIN_ATTEMPTS、PASSWORD_LIFE_TIME、PASSWORD_REUSE_TIME、PASSWORD_REUSE_MAX、PASSWORD_LOCK_TIME、PASSWORD_GRACE_TIME、PASSWORD_VERIFY_FUNCTION。
- 示例(创建并应用自定义 profile):
- create profile app_profile limit
- SESSIONS_PER_USER 50
- CPU_PER_SESSION 180000 – 单位为百分之一秒(约 30 分钟)
- IDLE_TIME 30 – 单位分钟
- FAILED_LOGIN_ATTEMPTS 6
- PASSWORD_LIFE_TIME 90
- PASSWORD_REUSE_TIME 180
- PASSWORD_REUSE_MAX 5
- PASSWORD_LOCK_TIME 1/48 – 30 分钟
- PASSWORD_VERIFY_FUNCTION verify_function_11G;
- alter user scott profile app_profile;
- 查询与调整:
- 查看用户当前 profile:select username,profile from dba_users where username=‘SCOTT’;
- 查看 profile 明细:select * from dba_profiles where profile=‘APP_PROFILE’;
- 调整示例:alter profile app_profile limit FAILED_LOGIN_ATTEMPTS 10;
- 密码复杂度函数:执行 @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql 创建 verify_function_11G 等函数,再在 profile 中引用。
三 关键参数建议与核对
- 常见建议值(需结合业务与压测微调)
- 打开文件数:oracle hard nofile 65536(limits.conf)
- 进程数:oracle hard nproc 16384(limits.conf)
- 系统级句柄:fs.file-max 至少 6815744(/etc/sysctl.conf,视内存与负载而定)
- Profile 会话:SESSIONS_PER_USER 50–200、IDLE_TIME 15–30 分钟、FAILED_LOGIN_ATTEMPTS 5–10、PASSWORD_LIFE_TIME 90 天
- 快速核对清单
- 系统:cat /proc/sys/fs/file-max;ulimit -a(oracle 会话)
- PAM:grep -n pam_limits.so /etc/pam.d/login
- Oracle:show parameter resource_limit;select * from dba_profiles where profile=‘DEFAULT’;