oracle庫的表被鎖解決辦法

2021-09-01 17:49:02 字數 1723 閱讀 9004

1).查詢是哪些表被鎖了

select a.owner,

a.object_name,

b.xidusn,

b.xidslot,

b.xidsqn,

b.session_id,

b.oracle_username,

b.os_user_name,

b.process,

b.locked_mode,

c.machine,

c.status,

c.server,

c.sid,

c.serial#,

c.program

from all_objects a,

v$locked_object b,

sys.gv_$session c

where ( a.object_id = b.object_id )

and (b.process = c.process )

order by 1,2

或者用

select object_name,machine,s.sid,s.serial#

from v$locked_object l,dba_objects o ,v$session s

where l.object_id = o.object_id and l.session_id=s.sid;

(2).釋放session sql:

alter

system

kill

session

'sid, serial#'例:

alter

system

kill

session

'379, 21132

'alter

system

kill

session

'374, 6938

'可以用如下查詢批量得到上面類似的語句:

select 'alter system kill session '''   ||s.sid||','||s.serial#||'''; '

from v$locked_object l,dba_objects o ,v$session s

where l.object_id = o.object_id and l.session_id=s.sid;

(3).如果利用上面的命令殺死乙個程序後,程序狀態被置為 "killed", 但是鎖定的資源很長時間沒有被釋放,那麼可以在os一級再殺死相應的程序(執行緒),首先獲得程序(執行緒)號:

select spid, osuser, s.program

from v$session s,v$process p

where s.paddr=p.addr and s.sid=#sid; (#sid是上面的sid)

(4).在作業系統中殺掉相應的程序(執行緒):

1)在linux上,用root身份執行命令:

kill -9 12345(12345是第3步查詢出的spid)

其中:sid:表示要殺死的程序屬於的例項名

thread:是要殺掉的執行緒號,即第3步查詢出的spid。

例:c:>orakill orcl 12345

完全可以寫乙個組合查詢的儲存過程來自動執行上述四步操作,方便地殺光所有不自動釋放資源的程序,但一般情況下不推薦這樣做,畢竟在系統中用root使用者kill程序本身就是帶有一定風險的!

Oracle使用者被鎖的原因及解決辦法

oracle使用者被鎖的原因及解決辦法 在登陸時被告知test使用者被鎖 1 用dba角色的使用者登陸,進行解鎖,先設定具體時間格式,以便檢視具體時間 sql alter session set nls date format yyyy mm dd hh24 mi ss session altere...

表被鎖住 解決辦法

一 應急辦法 select request session id spid,object name resource associated entity id tablename from sys.dm tran locks where resource type object declare sp...

oracle 資料表被鎖定解決辦法

今天操作oracle資料庫時,更新一張表中的乙個字段值,一直沒有更新成功,後來發現,表被別的使用者鎖定,後來採用下面的方法解決了這個問題!update ems csg set device id csg000000000000001 where name viss csg 上面的sql語句執行後,表...