温馨提示×

Linux Oracle资源限制如何配置

小樊
61
2025-10-04 00:22:41
栏目: 云计算

Linux环境下Oracle资源限制配置指南
在Linux系统中,Oracle数据库的资源限制配置需结合操作系统级限制(通过limits.conf和PAM模块)和数据库级限制(通过PROFILE对象)两部分完成,以确保数据库运行的稳定性和安全性。

一、操作系统级资源限制配置

操作系统级的资源限制是Oracle数据库正常运行的基础,主要通过修改/etc/security/limits.conf文件和配置PAM模块实现。

1. 修改/etc/security/limits.conf文件

该文件用于定义用户或用户组的资源限制,需为Oracle用户(如oracle)添加以下关键参数(以Oracle官方推荐值为例):

# Oracle用户资源限制(软限制/硬限制)
oracle soft nproc 2048       # 最大进程数(软限制)
oracle hard nproc 16384      # 最大进程数(硬限制)
oracle soft nofile 1024      # 最大打开文件数(软限制)
oracle hard nofile 65536     # 最大打开文件数(硬限制)
oracle soft stack 10240      # 栈大小(KB,软限制)
oracle hard stack 32768      # 栈大小(KB,硬限制)
  • 参数说明
    • nproc:限制Oracle用户可创建的最大进程数,避免进程数耗尽导致系统崩溃;
    • nofile:限制Oracle用户可打开的最大文件数(包括数据文件、日志文件等),确保数据库能正常读写;
    • stack:限制每个进程的栈大小,防止栈溢出。
  • 注意:修改后需保存文件,重新登录Oracle用户使软限制生效。

2. 配置PAM模块

确保PAM(Pluggable Authentication Modules)模块能读取limits.conf中的限制,需编辑/etc/pam.d/login文件(部分系统可能为/etc/pam.d/sshd,若通过SSH登录):

session required /lib64/security/pam_limits.so  # 64位系统
# 或 session required /lib/security/pam_limits.so  # 32位系统

该配置确保每次用户登录时,PAM模块会自动加载limits.conf中的资源限制。

3. 验证操作系统限制

以Oracle用户登录后,使用ulimit命令验证限制是否生效:

ulimit -Su  # 查看Oracle用户的进程数软限制
ulimit -Hu  # 查看Oracle用户的进程数硬限制
ulimit -Sn  # 查看Oracle用户的打开文件数软限制
ulimit -Hn  # 查看Oracle用户的打开文件数硬限制

输出结果应与limits.conf中的配置一致。

二、Oracle数据库级资源限制配置(PROFILE)

数据库级的资源限制通过PROFILE对象实现,用于控制用户对数据库资源的会话级或调用级使用,如CPU时间、逻辑读、会话数等。

1. 查看默认PROFILE

Oracle数据库默认存在DEFAULT PROFILE,所有未显式分配PROFILE的用户均使用该配置。可通过以下SQL查看DEFAULT PROFILE的资源限制:

SELECT * FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_type = 'KERNEL';
  • 常见资源参数
    • SESSIONS_PER_USER:每个用户的最大并发会话数(默认UNLIMITED);
    • CPU_PER_SESSION:每个会话的CPU时间限制(单位:百分之一秒,默认UNLIMITED);
    • LOGICAL_READS_PER_SESSION:每个会话的逻辑读限制(单位:数据块,默认UNLIMITED);
    • CONNECT_TIME:会话最大连接时间(单位:分钟,默认UNLIMITED);
    • FAILED_LOGIN_ATTEMPTS:登录失败锁定账户的尝试次数(默认10);
    • PASSWORD_LIFE_TIME:密码有效期(单位:天,默认180)。

2. 修改默认PROFILE

若需调整默认限制,可使用ALTER PROFILE命令(以限制密码有效期为例):

ALTER PROFILE DEFAULT LIMIT 
    FAILED_LOGIN_ATTEMPTS 6,          -- 登录失败6次后锁定账户
    PASSWORD_LIFE_TIME 90,            -- 密码有效期90天
    PASSWORD_REUSE_TIME 180;          -- 密码180天内不可重用

该修改会影响所有使用DEFAULT PROFILE的用户。

3. 创建自定义PROFILE并分配给用户

若需为特定用户(如scott)设置更严格的限制,可创建自定义PROFILE:

-- 创建名为'test_profile'的PROFILE
CREATE PROFILE test_profile LIMIT 
    SESSIONS_PER_USER 5,              -- 最大并发会话数5
    CPU_PER_SESSION 10000,            -- 每个会话CPU时间100秒
    LOGICAL_READS_PER_SESSION 1000,   -- 每个会话逻辑读1000块
    CONNECT_TIME 30,                  -- 最大连接时间30分钟
    FAILED_LOGIN_ATTEMPTS 3,          -- 登录失败3次后锁定
    PASSWORD_LIFE_TIME 30;            -- 密码有效期30天

-- 将'test_profile'分配给'scott'用户
ALTER USER scott PROFILE test_profile;

创建后,scott用户的资源使用将受test_profile限制。

4. 启用资源限制

Oracle数据库默认不强制执行PROFILE中的资源限制resource_limit参数为FALSE),需修改该参数使其生效:

ALTER SYSTEM SET resource_limit = TRUE SCOPE=SPFILE;

修改后需重启数据库使参数生效:

# 重启Oracle数据库(以Oracle 19c为例)
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
STARTUP;

重启后,PROFILE中的资源限制将对所有用户生效。

注意事项

  • 操作系统级限制是数据库运行的基础,需优先配置;
  • 数据库级限制需结合业务需求调整,避免过度限制影响数据库性能;
  • 修改limits.conf后需重新登录用户,修改resource_limit后需重启数据库
  • 定期监控资源使用情况(如v$sessionv$process视图),根据实际情况调整限制。

0