oracle 記錄被鎖定

2021-09-02 16:18:26 字數 2047 閱讀 3752

select object_id,session_id,locked_mode from v$locked_object; 

select t2.username,t2.sid,t2.serial#,t2.logon_time 

from v$locked_object t1,v$session t2 

where t1.session_id=t2.sid order by t2.logon_time; 

alter system kill session '157,54616' 

select sess.sid, 

sess.serial#, 

lo.oracle_username, 

lo.os_user_name, lo.session_id,

ao.object_name, sess.seconds_in_wait,

lo.locked_mode,sess.machine 

from v$locked_object lo, 

dba_objects ao, 

v$session sess 

where ao.object_id = lo.object_id and lo.session_id = sess.sid; 

select object_name as 物件名稱,s.sid,s.serial#,p.spid as 系統程序號

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

where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;

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;

查詢導致鎖定原因的sql

1. oracle中檢視當前系統中鎖表情況 

select * from v$locked_object 

可以通過查詢v$locked_object拿到sid和objectid,然後用sid和v$session鍊錶查詢是**鎖的表,用v$session中的objectid欄位和dba_objects的id欄位關聯,查詢詳細的鎖表情況。

查詢sql如下: 

select sess.sid, 

sess.serial#, 

lo.oracle_username, 

lo.os_user_name, 

ao.object_name, 

lo.locked_mode 

from v$locked_object lo, dba_objects ao, v$session sess, v$process p 

where ao.object_id = lo.object_id 

and lo.session_id = sess.sid;

查詢是什麼sql引起了鎖表的原因,sql如下: 

select l.session_id sid, 

s.serial#, 

l.locked_mode, 

l.oracle_username, 

s.user#, 

l.os_user_name, 

s.machine, 

s.terminal, 

a.sql_text, 

a.action 

from v$sqlarea a, v$session s, v$locked_object l 

where l.session_id = s.sid 

and s.prev_sql_addr = a.address 

order by sid, s.serial#;

2. oracle解鎖的方法 

alter system kill session 』146′;  –146為鎖住的程序號,即spid

oracle被鎖定的記錄解鎖

下面是我在開發中遇到的乙個問題,通過以下的方法很好的解決了,下面部分是我從別的網頁中摘下來的,以防自己忘記。oracal資料庫中的乙個表的一條記錄被鎖定,既不能修改也不能刪除 只看到沙漏,等乙個小時都是這樣 刪除表物件也不行,報錯 ora 00054 資源正忙,要求指定nowait 解決方法 1 當...

ORACLE使用者被鎖定

oracle使用者修改密碼後,發現這個使用者的狀態被鎖定了,使用如下語句解鎖 alter user user name account unlock 解鎖後,發現過一會又鎖了,後台發現是應用的某個程序在持續的不斷用以前的使用者名稱連線資料庫,為了防止資料庫賬號被鎖定,妨礙其他應用和後台程序,就將資料...

oracle使用者過期被鎖定

查詢使用者狀態 select username,account status from dba users 解鎖使用者 alter user 使用者名稱 account unlock 檢視使用者使用的密碼策略,並將策略的有效期改為無限制 select username,profile from db...