在比较忙的系统中我常用一段处理Resource Busy的角本来对表作DDL操作, 但还是常遇到久久不成成功的情况, 这时就要去看是那个会话一直锁住了我要修改的表, 我常用AnySQL中的两个命令来完成这个功能. 如下所示:
ASQL> list object t_long
TYPE ID OWNER OBJECT_NAME CREATED MODIFIED STATUS
----- ------ ------ ----------- ---------- ---------- ------
TABLE 538638 ANYSQL T_LONG 2006/08/02 2007/01/25 VALID
1 rows returned.
ASQL> ora hold 538638
SID SERIAL# SPID USERNAME MACHINE STATUS PROGRAM
--- ------- ---- -------- ------- -------- ----------------
529 62199 44 ANYSQL frisket INACTIVE sqlplus@frisket
1 rows returned.
在找出会话之后, 就可以进一步分析, 是否可以将这个会话杀掉. 事实上这一招我们是常用的.