Debian下Oracle资源限制
导读:Debian下Oracle资源限制实践 一 操作系统层资源限制 创建Oracle用户与组 建议创建专用系统账户与组,便于权限隔离与审计: groupadd oinstall groupadd dba useradd -g oins...
Debian下Oracle资源限制实践
一 操作系统层资源限制
-
创建Oracle用户与组
- 建议创建专用系统账户与组,便于权限隔离与审计:
- groupadd oinstall
- groupadd dba
- useradd -g oinstall -G dba -m oracle
- passwd oracle
- 创建Oracle基目录并授权:
- mkdir -p /u01/app/oracle
- chown -R oracle:oinstall /u01/app/oracle
- chmod -R 755 /u01/app/oracle
- 建议创建专用系统账户与组,便于权限隔离与审计:
-
limits.conf 关键项(/etc/security/limits.conf)
- 对 oracle 用户设置进程数、文件句柄与锁定内存上限,示例值如下(可按物理内存与实例规模调优):
- oracle soft nproc 2047
- oracle hard nproc 16384
- oracle soft nofile 1024
- oracle hard nofile 65536
- oracle soft memlock 33554432
- oracle hard memlock 33554432
- 说明:
- nproc 控制单用户可创建的进程/线程数,影响数据库后台进程与并行执行能力。
- nofile 控制进程可打开文件描述符上限,影响连接数、数据文件与日志文件句柄。
- memlock 控制进程可锁定到物理内存的字节数,建议设置为略小于可用物理内存,避免换页影响SGA/PGA稳定性
- 对 oracle 用户设置进程数、文件句柄与锁定内存上限,示例值如下(可按物理内存与实例规模调优):
-
PAM 与安全会话
- 确保 PAM 启用 limits 模块,使 limits.conf 生效:
- 在 /etc/pam.d/login 中加入:session required /lib64/security/pam_limits.so
- 注意 32/64 位路径差异与系统发行版的 PAM 配置差异,必要时检查 /etc/pam.d/sshd 等登录入口
- 确保 PAM 启用 limits 模块,使 limits.conf 生效:
-
systemd 服务场景的补充
- 若通过 systemd 管理 Oracle 相关服务(如监听、ASM/DB 实例),在对应的 service 单元中显式声明资源限制,例如:
- [Service]
- LimitNOFILE=65536
- LimitNPROC=16384
- LimitMEMLOCK=33554432
- [Service]
- 这样可避免服务在 systemd 作用域内继承不到 limits.conf 的限制
- 若通过 systemd 管理 Oracle 相关服务(如监听、ASM/DB 实例),在对应的 service 单元中显式声明资源限制,例如:
二 Oracle数据库层资源限制
-
启用资源限制
- 以管理员身份登录数据库,开启资源限制总开关:
- ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;
- 以管理员身份登录数据库,开启资源限制总开关:
-
常用 Profile 资源项与作用
- SESSIONS_PER_USER:每用户最大并发会话数
- CPU_PER_SESSION:每会话CPU时间(百分之一秒)
- CPU_PER_CALL:每SQL调用CPU时间(百分之一秒)
- CONNECT_TIME:会话最大连接时长(分钟)
- IDLE_TIME:会话最大空闲时长(分钟)
- LOGICAL_READS_PER_SESSION:每会话逻辑读块数
- LOGICAL_READS_PER_CALL:每调用逻辑读块数
- PRIVATE_SGA:共享服务器模式下每会话SGA私有区大小
- COMPOSITE_LIMIT:综合资源限制(加权)
-
常用 Profile 密码项与作用
- FAILED_LOGIN_ATTEMPTS:连续失败登录次数上限
- PASSWORD_LIFE_TIME:密码有效期(天)
- PASSWORD_REUSE_TIME / PASSWORD_REUSE_MAX:密码重用时间/次数
- PASSWORD_LOCK_TIME:失败锁定时间(天)
- PASSWORD_GRACE_TIME:过期宽限期(天)
- PASSWORD_VERIFY_FUNCTION:密码复杂度校验函数
-
示例:创建并应用限制型 Profile
- 创建自定义 Profile:
- CREATE PROFILE app_profile LIMIT
- SESSIONS_PER_USER 10
- CPU_PER_SESSION 100000
- CONNECT_TIME 480
- IDLE_TIME 30
- FAILED_LOGIN_ATTEMPTS 5
- PASSWORD_LIFE_TIME 90
- PASSWORD_REUSE_TIME 180
- PASSWORD_REUSE_MAX 3
- PASSWORD_LOCK_TIME 1;
- CREATE PROFILE app_profile LIMIT
- 将 Profile 分配给用户:
- ALTER USER scott PROFILE app_profile;
- 查询与验证:
- 查看所有 Profile:SELECT * FROM DBA_PROFILES;
- 查看用户所属 Profile:SELECT USERNAME, PROFILE FROM DBA_USERS WHERE USERNAME=‘SCOTT’;
- 创建自定义 Profile:
三 生效与验证
-
操作系统层
- 重新登录 oracle 用户(或重启相关服务),使 limits 生效。
- 验证当前会话限制:
- ulimit -u(查看 nproc)
- ulimit -n(查看 nofile)
- ulimit -l(查看 memlock)
- 若通过 systemd 管理,使用 systemctl show 检查 LimitNOFILE/LimitNPROC/LimitMEMLOCK 是否生效
-
数据库层
- 确认资源限制开关:
- SHOW PARAMETER RESOURCE_LIMIT;
- 查询 Profile 配置与用户分配:
- SELECT * FROM DBA_PROFILES WHERE PROFILE=‘APP_PROFILE’;
- SELECT USERNAME, PROFILE FROM DBA_USERS WHERE USERNAME=‘SCOTT’;
- 测试策略行为(如 IDLE_TIME、FAILED_LOGIN_ATTEMPTS)是否符合预期
- 确认资源限制开关:
四 调优建议与注意事项
- 合理设置 memlock:建议设置为物理内存的70%–90%(以 KB 计),避免将全部内存锁定导致系统无法分配其他资源;并确保 vm.swappiness 较低以减少换页。
- 文件句柄与进程数:结合业务并发连接、并行度与操作系统内核参数(如 fs.file-max)统一规划,避免“文件句柄不足”或“无法创建新进程”的错误。
- 登录安全:生产环境建议设置合理的 FAILED_LOGIN_ATTEMPTS、PASSWORD_LIFE_TIME、PASSWORD_REUSE_* 与复杂度校验,降低暴力破解与口令复用风险。
- 监控与告警:对 SESSIONS_PER_USER、IDLE_TIME 超限、登录失败激增等设置监控阈值,提前发现异常连接与资源争用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian下Oracle资源限制
本文地址: https://pptw.com/jishu/751739.html
