今天在操作表時,發現無法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