linux

Linux Oracle资源限制如何配置

小樊
62
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,硬限制)

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';

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中的资源限制将对所有用户生效。

注意事项

0
看了该问题的人还看了