account lock不影响已经登陆的session

来源:互联网 发布:淘宝查关键词排名 编辑:程序博客网 时间:2024/06/06 03:49

有些时候为了一些特殊的需求,要暂时锁住ORACLE中的某个用户,以防止用户中的数据被修改。

但这只对新登录的会话有效,对已经登录的session只要不退出是没有影响的。


session1:
SQL> show user;
User is "scott"

 

SQL> select count(1) from user_objects;

  COUNT(1)
----------
         9

 

session2:

SQL> show user;
User is "SYS

SQL> alter user SCOTT account lock;
User altered


session3:
C:/Users/Liangwei>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期六 6月 4 22:58:06 2011
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
SQL> conn scott/tiger
ERROR:
ORA-28000: the account is locked

 
 
sesion1在sys用户发出alter user SCOTT account lock;命令后,只要不退出,仍然不受影响。
SQL> select count(1) from user_tables;

  COUNT(1)
----------
         6
        
session2解锁scott用户后,session3能正常登录。
SQL> alter user SCOTT account unlock;
User altered      


SQL> conn scott/tiger
已连接。
SQL> select sysdate from dual;

SYSDATE
--------------
04-6月 -11
 

 

  利用oracle account lock 只对新登录的会话有效,对已经登录的session只要不退出是没有影响的的特性 。

 

得出如下结论:

 

1.如果要想真正锁住oracle的某个用户,最好先断开所有该用户的会话。

 

 在利用alter user &username account lock; 锁住该账户。

 

 某用户被锁住该后,仍然不能阻止有权限的用户(如:sys),对已锁住用户下的对象进行操作。

 

 

2. 如果既想阻止别人用这个用户登录,自己又想用这个用户去做维护。可以先登录进去一个sesion并保持不断开,

            

   杀掉该用户的其它session后,在利用alter user &username account lock; 锁住这个用户即可。

0 0