天天看點

Oracle 表解鎖

今天在操作表時,發現無法update,于是到網上搜尋了一些資料,發現是Oracle鎖表了....

其實解鎖并不複雜,用PL/SQL可以很友善解鎖,可以用兩種方式得到目前被鎖住的表。

第一種是,直接從,Tools->Session裡面檢視,裡面有很多的Session和程序,下面有一個Lock的Tab,選中那個Tab,然後一條一條地去上面Session,如果Lock這一欄有資料,就說明被鎖住了,在Objec_Name裡面可以看到表名。

如果是自己的表,可以得到Sid和Serial#,接着執行以下語句就可以解鎖:

alter system kill session 'sid,serial#';

第二種方法是用語句得到詳細的被鎖住的表的資訊,語句如下:

SELECT s.username,

decode(l.type,'TM','TABLE LOCK',

'TX','ROW LOCK',

NULL) LOCK_LEVEL,

o.owner,o.object_name,o.object_type,

s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser

FROM v$session s,v$lock l,dba_objects o

WHERE l.sid = s.sid

AND l.id1 = o.object_id(+)

AND s.username is NOT Null