`

Oracle 限制特定用户连接数

 
阅读更多
1 查询限制功能是否开启
SQL> show parameter resource_limit;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
resource_limit                       boolean     FALSE
2 开启限制功能
SQL> alter system set resource_limit=true;

System altered

SQL>show parameter resource_limit;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
resource_limit                       boolean     TRUE
3 创建限制文件profile
SQL> create profile session_limit20 limit sessions_per_user 20;

Profile created
4 限制HR用户最大连接数为20
SQL> alter user hr profile session_limit20;

User altered
5 删除限制文件Profile
SQL> drop profile session_limit20 cascade;

Profile dropped
6 查询某用户的限制条件
SQL> select profile from dba_users where username='HR';
 
PROFILE
------------------------------
SESSION_LIMIT20
7 Oracle用户Profile说明
一 目的:

Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使 用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该 profile的限制之内。
二 条件:

创建profile必须要有CREATE PROFILE的系统权限。
为用户指定资源限制,必须:
1.动态地使用alter system或使用初始化参数resource_limit使资源限制生效。该改变对密码资源无效,密码资源总是可用。
SQL> show parameter resource_limit

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE

SQL> alter system set resource_limit=true;

系统已更改。

SQL> show parameter resource_limit;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean TRUE

SQL>

2.使用create profile创建一个定义对数据库资源进行限制的profile。
3.使用create user 或alter user命令把profile分配给用户。
三 语法:
CREATE PROFILE profile
LIMIT { resource_parameters
         | password_parameters
         }
           [ resource_parameters
           | password_parameters
           ]... ;

<resource_parameters>
{ { SESSIONS_PER_USER
| CPU_PER_SESSION
| CPU_PER_CALL
| CONNECT_TIME
| IDLE_TIME
| LOGICAL_READS_PER_SESSION
| LOGICAL_READS_PER_CALL
| COMPOSITE_LIMIT
}
{ integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA
{ integer [ K | M ] | UNLIMITED | DEFAULT }
}

< password_parameters >
{ { FAILED_LOGIN_ATTEMPTS
| PASSWORD_LIFE_TIME
| PASSWORD_REUSE_TIME
| PASSWORD_REUSE_MAX
| PASSWORD_LOCK_TIME
| PASSWORD_GRACE_TIME
}
{ expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION
     { function | NULL | DEFAULT }
}
四 语法解释:

profile:配置文件的名称。Oracle数据库以以下方式强迫资源限制:
1.如果用户超过了connect_time或idle_time的会话资源限制,数据库就回滚当前事务,并结束会话。用户再次执行命令,数据库则返回一个错误,
2.如果用户试图执行超过其他的会话资源限制的操作,数据库放弃操作,回滚当前事务并立即返回错误。用户之后可以提交或回滚当前事务,必须结束会话。
提示:可以将一条分成多个段,如1小时(1/24天)来限制时间,可以为用户指定资源限制,但是数据库只有在参数生效后才会执行限制。
Unlimited:分配该profile的用户对资源使用无限制,当使用密码参数时,unlimited意味着没有对参数加限制。

Default:指定为default意味着忽略对profile中的一些资源限制,Default profile初始定义对资源不限制,可以通过alter profile命令来改变。

Resource_parameter部分

Session_per_user:指定限制用户的并发会话的数目。
Cpu_per_session:指定会话的CPU时间限制,单位为百分之一秒。
Cpu_per_call:指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒。
Connect_time:指定会话的总的连接时间,以分钟为单位。
Idle_time:指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开。但是长时间运行查询和其他操作的不受此限制。
Logical_reads_per_session:指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。
Logical_read_per_call:指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。
Private_sga:指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位。(该限制只在使用共享服务器结构时才有效,会话在SGA中的私有空间包括私有的SQL和PL/SQL,但不包括共享的SQL和PL/SQL)。
Composite_limit:指定一个会话的总的资源消耗,以service units单位表示。Oracle数据库以有利的方式计算 cpu_per_session,connect_time,logical_reads_per_session和private-sga总的 service units

Password_parameter部分:

Failed_login_attempts:指定在帐户被锁定之前所允许尝试登陆的的最大次数。
Password_life_time:指定同一密码所允许使用的天数。如果同时指定了 password_grace_time参数,如果在grace period内没有改变密码,则密码会失效,连接数据库被拒绝。如果没有设置password_grace_time参数,默认值unlimited将引 发一个数据库警告,但是允许用户继续连接。
Password_reuse_time和password_reuse_max:这两个参数必须互相关联设置,password_reuse_time指定了密码不能重用前的天数,而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参数都必须被设置为整数。
1.如果为这两个参数指定了整数,则用户不能重用密码直到密码被改变了password_reuse_max指定的次数以后在password_reuse_time指定的时间内。
如:password_reuse_time=30,password_reuse_max=10,用户可以在30天以后重用该密码,要求密码必须被改变超过10次。
2.如果指定了其中的一个为整数,而另一个为unlimited,则用户永远不能重用一个密码。
3.如果指定了其中的一个为default,Oracle数据库使用定义在profile中的默认值,默认情况下,所有的参数在profile中都被设置为unlimited,如果没有改变profile默认值,数据库对该值总是默认为unlimited。
4.如果两个参数都设置为unlimited,则数据库忽略他们。

Password_lock_time:指定登陆尝试失败次数到达后帐户的缩定时间,以天为单位。
Password_grace_time:指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。
Password_verify_function:该字段允许将复杂的PL/SQL密码验证脚本做 为参数传递到create profile语句。Oracle数据库提供了一个默认的脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。如果为密码参数指定表达式,则该表达式可以是任意格 式,除了数据库标量子查询。
五 举例:

1.创建一个profile:
create profile new_profile
limit password_reuse_max 10
password_reuse_time 30;

2.设置profile资源限制:
create profile app_user limit
sessions_per_user unlimited
cpu_per_session unlimited
cpu_per_call 3000
connect_time 45
logical_reads_per_session default
logical_reads_per_call 1000
private_sga 15k
composite_limit 5000000;

总的resource cost不超过五百万service units。计算总的resource cost的公式由alter resource cost语句来指定。

3.设置密码限制profile:
create profile app_users2 limit
failed_login_attempts 5
password_life_time 60
password_reuse_time 60
password_reuse_max 5
password_verify_function verify_function
password_lock_time 1/24
password_grace_time 10;

4.将配置文件分配给用户:
SQL> alter user dinya profile app_user;
用户已更改。
SQL>
SQL> alter user dinya profile default;
用户已更改。
SQL>
分享到:
评论

相关推荐

    Oracle经典故障解析 连接数&会话数

    1. 连接数和会话数的概念:在Oracle中,连接数指的是同一时间连接到数据库的用户数量。每次用户通过SQL客户端登录到数据库时,都建立了一个连接。而会话数则是指为这些连接提供的会话的数量,每个连接对应一个或多个...

    怎样查看oracle当前的连接数

    `processes`参数指定了Oracle实例可以支持的最大进程数,这间接反映了最大连接数的限制。 2. **查看`sessions`参数**: ```sql SHOW PARAMETERS sessions; ``` `sessions`参数定义了可以同时打开的最大会话数...

    Oracle默认密码及修改密码.docx

    Oracle提供了一些预定义的系统用户,每个用户都有特定的权限和用途。在初装Oracle数据库时,这些默认密码通常用于初始设置和管理。 首先,让我们看看Oracle的一些默认密码: 1. **sys** 用户:默认密码是 `change_...

    SSIS连接Oracle参考[借鉴].pdf

    综上所述,连接SQL Server与Oracle涉及到多个方面的问题,包括但不限于服务器之间的位数兼容性、路径配置的正确性、不同环境下的特定挑战等。对于企业级应用而言,建议根据实际情况选择合适的连接方式,并密切关注...

    oracle用户账号管理和权限控制

    概要文件限制用户账号的使用,包括密码策略(如过期时间、重复尝试次数等)和资源限制(如会话数、CPU使用量等)。创建概要文件并将其分配给用户,可以进一步增强安全性。 在实际操作中,DBA通常会结合Oracle企业...

    Oracle10g_Linux安装步骤

    - **为oracle用户设置shell限制**:由于Oracle要求特定的shell,通常使用`/bin/bash`,需确保`/etc/security/limits.conf`中的配置符合要求。 - **配置HOSTS**:在`/etc/hosts`文件中添加所有网络节点的主机名和IP...

    Oracle数据库安全管理

    概要文件中可以设置的资源限制包括CPU时间、逻辑读取次数、并发会话数、闲置时间、连接时间和私有SGA区的大小。这些限制可以通过设置相应的参数来调整,参数值可以是整数、UNLIMITED(无限制)或DEFAULT(使用默认值...

    oracle 文本导入工具

    3. **映射与转换**:工具可能允许用户定义源数据字段与目标Oracle表字段之间的映射,以及数据类型转换规则,以确保数据的一致性和兼容性。 4. **错误处理**:在导入过程中,工具应能检测并报告错误,如格式错误、...

    oracle安装手册_Linux

    - 修改`/etc/security/limits.conf`,限制`oracle`用户的`nproc`(进程数)和`nofile`(打开文件数)。 4. **环境变量设置**: 以`oracle`用户登录,通过`vi`编辑`.bash_profile`,定义`ORACLE_BASE`, `ORACLE_...

    ORACLE数据库安装

    在Linux系统中,为了安全管理Oracle数据库,通常会创建特定的用户和用户组。这里创建了三个用户组`oinstall`、`dba`和`oper`,以及一个名为`oracle`的用户。`oinstall`组用于所有Oracle软件的安装,`dba`组包含有权...

    组态王与Oracle9i数据库的连接doc.doc

    【组态王与Oracle9i数据库的连接】是关于如何在组态王(KingView)这一工业自动化软件中,与Oracle9i数据库进行交互的知识点。以下是对这些内容的详细解释: 1. **Oracle9i数据库的启动**: - 通过“开始”菜单,...

    在Linux中安装Oracle10g的主要步骤

    6. **修改限制文件**:增加对`oracle`用户的资源限制,如最大进程数和打开文件数,这是通过编辑`/etc/security/limits.conf`完成的。 7. **配置PAM**:通过在`/etc/pam.d/login`文件中添加一行,确保系统会话管理器...

    oracle-用户管理.pptx

    Oracle 数据库用户管理是数据库系统中的关键组成部分,它涉及到如何创建、管理以及限制用户对数据库资源的访问。在Oracle环境中,用户和角色是权限管理的基础,而概要文件则是实现这些管理策略的重要工具。 首先,...

    存储过程中采样数据库的实时连接数

    DBA和普通用户可以通过查询session_num表来查看当前超过特定阈值(例如50)的连接数,这有助于识别可能的高并发情况。同时,查询v$license视图可以获取数据库许可证信息,帮助判断当前连接数是否超出许可限制。 当...

    oracle基础命令总结.docx

    Oracle数据库是世界上最...这些是Oracle数据库管理的基本操作,涵盖了数据泵、表空间管理、用户管理、连接数调整、数据文件扩展以及安全设置等多个方面。了解并熟练掌握这些命令对于日常的Oracle数据库管理至关重要。

    RED HAT ENTERPRISE5安装ORACLE11g图文教程

    - 为Oracle用户设置Shell限制,编辑`/etc/security/limits.conf`文件,设置用户级别的资源限制,如`nproc`(进程数限制)、`nofile`(文件描述符数量)等。 - 编辑`/etc/pam.d/login`文件,添加`session required/...

    Oracle错误码大全 oracle数据库

    除了标准的错误码,Oracle数据库还有一系列与特定模块或特性相关的警告和异常,如PL/SQL错误、网络连接问题、性能优化难题等。"Oracle错误码大全"都会对这些情况进行详尽的解释。 总的来说,"Oracle错误码大全"是...

    Oracle数据库试题.pdf

    12. **用户配置文件限制**:用户配置文件可以限制登录失败次数、CPU使用时间和SGA区大小,但不能直接限制每个会话的用户数。 13. **DML操作与回滚**:在事务中插入数据并创建表后回滚,原表(a)保留插入的数据,而...

    linux下安装oracle11g

    在`/etc/security/limits.conf`文件中,为Oracle用户(通常是'oracle')增加软硬限制,如nproc(进程数)和nofile(打开文件数)。这样能确保Oracle数据库在运行时有足够的资源。 2. **修改PAM配置**: 在`/etc/...

    Oracle12c for Linux7.1安装文档

    - 设置用户限制:编辑 `/etc/security/limits.conf` 文件,为 Oracle 用户设置内存限制、文件句柄数等。 4. 数据库的安装: - 下载 Oracle 12c 的安装介质,通常是 ISO 映像文件。 - 使用挂载命令挂载 ISO 文件...

Global site tag (gtag.js) - Google Analytics