oracle限制用户连接数

本操作不需要重启数据库

SQL> show parameter resource_limit;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
resource_limit                       boolean     FALSE
SQL> alter system set resource_limit=true;

System altered.

SQL> create profile sess limit sessions_per_user 3;

Profile created.

SQL> alter user test profile sess;

User altered.

此时再开四个窗口,使用test用户连接,在第四个窗口连接报错:

[oracle@11g ~]$ sqlplus test/test

SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 28 14:19:12 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:
ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit


Enter user-name: 

那么,如果限制数小于当前连接数呢?

SQL> select count(*) from gv$session where username='TEST';

  COUNT(*)
----------
         3

SQL> alter profile sess limit sessions_per_user 2;

Profile altered.

SQL> select count(*) from gv$session where username='TEST';

  COUNT(*)
----------
         3

SQL> alter user test profile sess;

User altered.

SQL> select count(*) from gv$session where username='TEST';

  COUNT(*)
----------
         3

不影响当前连接的会话,那么把当前会话关掉再打开呢?

[oracle@11g ~]$ sqlplus test/test

SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 28 14:19:09 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@11g ~]$ sqlplus test/test

SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 28 14:30:43 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

ERROR:
ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit

关掉再连就连不进去了,另外,修改profile之后需要再alter user profile xxx吗?

SQL> alter profile sess limit sessions_per_user 1;

Profile altered.

SQL> select count(*) from gv$session where username='TEST';

  COUNT(*)
----------
         2
(此时将一个会话断掉重连报错)
SQL> select count(*) from gv$session where username='TEST';

  COUNT(*)
----------
         1
不需要


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值