Oracle 限制单个用户的并发连接数
在生产环境中,控制数据库连接数对于保障系统稳定性至关重要。本文将介绍如何通过 Oracle 的资源限制功能,针对特定用户设置并发连接上限。
开启 RESOURCE_LIMIT 参数
首先,需要确认数据库是否启用了资源限制。检查资源限制是否开启:
SQL> show parameter resource_limit
NAME TYPE VALUE
---- ---- -----
resource_limit boolean TRUE
这个参数一般是默认开启的,如果没有开启就需要通过 ALTER SYSTEM 命令来开启。
查看对用户的资源限制
Oracle 数据库通过指定用户的 Profile 来对用户资源进行限制。Profile 是对数据库资源使用约束条件的一个集合。
一般用户默认的 Profile 为 DEFAULT。我们可以通过查询 v$profile 视图来查看当前的资源限制情况,重点关注 SESSIONS_PER_USER 这一项。
SELECT resource_name, limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'SESSIONS_PER_USER';
如果显示的是 UNLIMITED,说明没有限制,此时需要手动配置。
创建或修改 Profile
要限制连接数,我们需要修改 Profile 中的 SESSIONS_PER_USER 参数。这里有两种场景:
新建用户
如果是新建用户,可以在创建时直接指定自定义 Profile:
CREATE USER test_user IDENTIFIED BY password
PROFILE limited_profile;
现有用户
如果是现有用户,建议先创建一个新 Profile(或者修改现有的),避免影响其他依赖默认配置的用户。
-- 创建并限制会话数为 5
ALTER PROFILE limited_profile LIMIT SESSIONS_PER_USER 5;
然后将用户关联到这个 Profile:
ALTER USER test_user PROFILE limited_profile;

