1. 程式人生 > >account lock不影響已經登陸的session

account lock不影響已經登陸的session

有些時候為了一些特殊的需求,要暫時鎖住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; 鎖住這個使用者即可。