通過dba_objects查找表的object_id,再查v$lock中id1等于object_id的,在這行里肯定有個不同于你SID的用戶擁有了這個表的鎖,它肯定在update這個表,長時間沒有commit,要么找到這個client讓它commit或者rollback,要么通過sid把它kill掉
目前成都創新互聯已為1000多家的企業提供了網站建設、域名、虛擬主機、網站托管維護、企業網站設計、寧安網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
下面還有幾個方法
a. $ORACLE_HOME/rdbms/admin/utllockt.sql 好用!
b.select blocking_session from v$session where blocking_session not is null 可以查出誰會阻塞會話 必須在10g中
c.dba_waiters 可以查詢阻塞源和目標
d. dba_blockers 僅有一列阻塞源
用如下語句查詢鎖死的表:
1
2
3
4
5
6
7
8
9
10
select p.spid,
a.serial#,
c.object_name,
b.session_id,
b.oracle_username,
b.os_user_name
from v$process p, v$session a, v$locked_object b, all_objects c
where p.addr = a.paddr
and a.process = b.process
and c.object_id = b.object_id;
其中object_name就是被鎖的表名,如圖:
直接去update那條記錄 如果不能被跟新 且別的數據可以update 基本可以確認這一條記錄被鎖住了
1.創建測試表,如下圖。
createtabletest_lock(idnumber,valuevarchar2(200));
2.執行append語句;并且不做提交,insert/*+append*/intotest_lockvalues(1,1)如下圖。
3.再次執行清表語句,truncatetabletest_lock;報鎖表錯誤,如下圖。
4.查看鎖表語句,發現被鎖表
selectb.object_name,t.*
fromv$locked_objectt,user_objectsb
wheret.object_id=b.object_id
注意事項:
簡化數據:可以將復雜的查詢創建為其他人可以使用的視圖,而不必了解復雜的業務或邏輯關系。這簡化并掩蓋了視圖用戶數據的復雜性。
表結構設計的補充:在設計的系統才剛剛開始,大部分的程序直接訪問數據表結構,但是隨著業務的變化,系統更新,等等,引起了一些表結構不適用,這次修改系統的表結構太大,開發成本較高的影響。
這個時候可以創建一個視圖來補充表結構設計,降低開發成本。程序可以通過查詢視圖直接獲得它想要的數據。
添加安全性:視圖可以向用戶顯示表中的指定字段,而不是向用戶顯示表中的所有字段。在實際開發中,視圖通常作為提供數據的一種方式提供,并將只讀權限提供給第三方以供查詢使用。
網站欄目:oracle記錄鎖怎么看 oracle如何查看鎖表的語句
文章分享:http://m.kartarina.com/article38/hjjosp.html
成都網站建設公司_創新互聯,為您提供做網站、外貿建站、網站制作、企業建站、響應式網站、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯