使用 resource_limit 及 profile 限制用户连接

数据库性能是一个永恒的话题,那就是如何使用更少的资源以达到更高效的性能。Oracle系统参数RESOURCE_LIMIT是一个用于控制用户对于数据库资源使用的参数,当值为true的时候即为启用,否则禁用。该参数结合profile来可以控制多种资源的使用,如CPU_PER_SESSION, CONNECT_TIME,LOGICAL_READS_PER_SESSION,
PRIVATE_SGA等等从而达到到节省资源来实现高效性能。本文描述了数据资源限制并演示了IDLE_TIME及SESSIONS_PER_USER的用法。

1、数据库资源限制的主要步骤
Implemented by
    * Setting RESOURCE_LIMIT = TRUE in the database startup parameter file (spfile or pfile)
    * Creating or modifying existing user profiles (DBA_PROFILES) to have one or more resource limit
    * Assigning a profile to a user whose resources are wished to be limited

It could happen that if the idle_time has been set on the DEFAULT profile, this can lead to an MTS dispatchers being set to 'sniped' and then getting 'cleaned up' via the shell script.

The removal of the dispatcher will result in other sessions 'dying' .In that case, If you are to implement resource limits, may be advisable to create new profiles that be assigned to users and not to change the characteristics of DEFAULT.
Alternatively, if you do change DEFAULT, ensure that all the properties that you have affected have been fully tested in a development environment.

用户超出限制后的完成的动作
When a resource limit is exceeded (for example IDLE_TIME) ... PMON does the following
    * Mark the V$SESSION as SNIPED
    * Clean up the database resources for the session
    * Remove the V$SESSION entry

2、资源限制的配置

--演示环境
SQL> select * from v$version where rownum<2;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

--查看参数resource_limit
SQL> show parameter resource_limit

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

--修改参数resource_limit为true
SQL> alter system set resource_limit=true;

System altered.

SQL> show parameter resource_limit

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

--创建profile,其idle_time为3分钟
SQL> create profile app_user limit idle_time 3;

Profile created.

--修改profile,限制每个用户只能开一个session
SQL> alter profile app_user limit sessions_per_user 1;

Profile altered.

--将用户指派给特定的profile
SQL> alter user scott profile app_user;

User altered.

--查看刚刚创建的profile,查询结果中的RESOURCE_NAME都可以作相应的设置或修改
SQL> select * from dba_profiles where profile='APP_USER';

PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT
------------------------------ -------------------------------- -------- ----------------------------------------
APP_USER                      COMPOSITE_LIMIT                  KERNEL  DEFAULT
APP_USER                      SESSIONS_PER_USER                KERNEL  1
APP_USER                      CPU_PER_SESSION                  KERNEL  DEFAULT
APP_USER                      CPU_PER_CALL                    KERNEL  DEFAULT
APP_USER                      LOGICAL_READS_PER_SESSION        KERNEL  DEFAULT
APP_USER                      LOGICAL_READS_PER_CALL          KERNEL  DEFAULT
APP_USER                      IDLE_TIME                        KERNEL  3
APP_USER                      CONNECT_TIME                    KERNEL  DEFAULT
APP_USER                      PRIVATE_SGA                      KERNEL  DEFAULT
APP_USER                      FAILED_LOGIN_ATTEMPTS            PASSWORD DEFAULT
APP_USER                      PASSWORD_LIFE_TIME              PASSWORD DEFAULT
APP_USER                      PASSWORD_REUSE_TIME              PASSWORD DEFAULT
APP_USER                      PASSWORD_REUSE_MAX              PASSWORD DEFAULT
APP_USER                      PASSWORD_VERIFY_FUNCTION        PASSWORD DEFAULT
APP_USER                      PASSWORD_LOCK_TIME              PASSWORD DEFAULT
APP_USER                      PASSWORD_GRACE_TIME              PASSWORD DEFAULT

16 rows selected.

使用 resource_limit 及 profile 限制用户连接
更多相关文章
  • 启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则
    启用密码管理之前创建的用户连接Oracle报ORA-28002处理一则处理方法其实很简单.只要:alter user <username> identified by <same password>;  这个操作后,恢复正常了下面作个简单测试:SQL> conn hr/ ...
  • 如果买一台mac pro,可以多个用户(每个用户建立一个账号)连接到这个mac pro办公吗?我记得windows机器可以这样,不知道osx行不行,我看官方说一个垃圾桶可以连接6个显示器! 连接显示器和连接用户上去办公不是一个概念吧. 如果是SSH链接可以. 如果是想,一台电脑 ,多个显示器,想多个 ...
  • 想在用户连接到自己管理的wifi的时候,弹出广告,可以是html页面,如果能弹其他形式的广告也可以. 不太了解怎么在AP端实现,比如AP设备会提供一些基本的API?或者可以在AP设备上部署自己的应用程序? 这个其实是设备级别做的, 比如苹果设备, 连上wifi后, 苹果设备会自己访问一个地址(这个i ...
  • Oracle连接超限修改,ORA-00064,ORA-12571,ORA-24324及用户连接查看
    (一)Oracle连接超限修改我们需要调整oracle数据库的最大链接数,而这个链接数的调整是在oacle下的dbs目录下init.ora文件中调整的. ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下: sessions=(1.1*process ...
  • 使用Oracle PROFILE控制会话空闲时间
    客户想实现对会话空闲时间的控制,下面是做的一个例子.Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation.保留所有权利.  C:\Users\LIUBINGLIN>sqlplus sys/Oracle123@lo ...
  • 局域网之内我们局域网里面的电脑是可以正常访问我们电脑的,只要共享的全部都可以访问,那么我们要如何设置不让局域网用户访问我们的电脑呢,下面小编总结一些办法.第一种方法:共享密码只要把电脑设置密码就可以了,或停止共享了,我们只要右击“显示共享的文件夹”按钮,选中需管理的文件夹,单击菜单栏的“管理”,选择 ...
  • CentOS 6/Linux su: 无法设置用户ID: 资源暂时不可用
    系统环境:CentOS 6.5今天在使用su切换用户doiido的的时候,出现了如下报错:# su - doiidosu: 无法设置用户ID: 资源暂时不可用同时使用SecureCRT等远程SSH工具均无法使用doiido用户连接.查找相关资料,发现是在CentOS 6中,存在/etc/securi ...
  • C#实现远程连接SQL Server2005的步骤
    本文详细讲述了C#怎样实现远程连接SQL Server2005各个步骤. 首先配置SQLSERVER2005:打开"Microsoft SQL Server Management Studio" 直接用Windows 用户连接进入,再在"安全性"中的" ...
一周排行