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; 鎖住這個使用者即可。