oracle數(shù)據(jù)庫查看鎖表的sql語句整理
關(guān)鍵表
V$LOCKED_OBJECT:記錄鎖信息的表v$session:記錄會話信息的表v$sql:記錄執(zhí)行sql的表dba_objects:用來管理對象(表、庫等等對象)
查看鎖表的SID
sql1
SELECT USERNAME,SID, LOCKWAIT, STATUS, MACHINE, PROGRAM FROM v$session WHERE sid IN (SELECT session_id FROM v$locked_object);
sql2
SELECT sess.SID, sess.SERIAL#, lo.ORACLE_USERNAME, lo.OS_USER_NAME, lo.LOCKED_MODE, ao.OBJECT_NAME
FROM V$LOCKED_OBJECT lo,
v$session sess,
dba_objects ao
WHERE lo.SESSION_ID = sess.SID
AND ao.OBJECT_ID = lo.OBJECT_ID;
- USERNAME:死鎖語句所用的數(shù)據(jù)庫用戶;
- SID: session_id
- LOCKWAIT:死鎖的狀態(tài),如果有內(nèi)容表示被死鎖。
- STATUS:狀態(tài),active表示被死鎖
- MACHINE:死鎖語句所在的機器。
- PROGRAM:產(chǎn)生死鎖的語句主要來自哪個應(yīng)用程序。
查看鎖表執(zhí)行語句
用sid查詢單個
SELECT sql_text
FROM v$sql
WHERE hash_value IN
(SELECT sql_hash_value FROM v$session WHERE sid='XXXXXXXX');
查詢所有加鎖的sql
SELECT sql_text
FROM v$sql
WHERE hash_value IN
(SELECT sql_hash_value FROM v$session WHERE sid IN (SELECT session_id FROM v$locked_object));
查詢未提交事務(wù)的SQL
造成死鎖的sql事務(wù)都必定是未提交的
SELECT s.SID,
s.USERNAME,
s.OSUSER,
s.PROGRAM,
TO_CHAR(s.LOGON_TIME, 'yyyy-mm-dd hh24:mi:ss') AS LOGON_TIME,
TO_CHAR(t.START_DATE, 'yyyy-mm-dd hh24:mi:ss') AS START_DATE,
s.STATUS,
(SELECT q.SQL_TEXT FROM v$sql q WHERE q.LAST_ACTIVE_TIME = t.START_DATE AND rownum <= 1) AS SQL_TEXT
FROM v$session s,
v$transaction t
WHERE s.SADDR = t.SES_ADDR;
殺死鎖
ALTER SYSTEM KILL SESSION 'sess.sid, sess.serial#';
附:數(shù)字越大鎖級別越高, 影響的操作越多
1級鎖有:Select,有時會在v$locked_object出現(xiàn)。
2級鎖有:Select for update,Lock For Update,Lock Row Share
select for update當(dāng)對話使用for update子串打開一個游標(biāo)時,所有返回集中的數(shù)據(jù)行都將處于行級(Row-X)獨占式鎖定,其他對象只能查詢這些數(shù)據(jù)行,不能進行update、delete或select for update操作。
3級鎖有:Insert, Update, Delete, Lock Row Exclusive
沒有commit之前插入同樣的一條記錄會沒有反應(yīng), 因為后一個3的鎖會一直等待上一個3的鎖, 我們必須釋放掉上一個才能繼續(xù)工作。
4級鎖有:Create Index, Lock Share
locked_mode為2,3,4不影響DML(insert,delete,update,select)操作, 但DDL(alter,drop等)操作會提示ora-00054錯誤。
00054, 00000, "resource busy and acquire with NOWAIT specified"
// *Cause: Resource interested is busy.
// *Action: Retry if necessary.
5級鎖有:Lock Share Row Exclusive
具體來講有主外鍵約束時update / delete ... ; 可能會產(chǎn)生4,5的鎖。
6級鎖有:Alter table, Drop table, Drop Index, Truncate table, Lock Exclusive
總結(jié)
到此這篇關(guān)于oracle數(shù)據(jù)庫查看鎖表的sql語句的文章就介紹到這了,更多相關(guān)oracle查看鎖表sql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Oracle查看正在執(zhí)行的sql語句的方法大全
- oracle轉(zhuǎn)mysql語句轉(zhuǎn)換實例代碼
- Oracle中sql語句如何執(zhí)行日志查詢
- Oracle如何在SQL語句中對時間操作、運算
- oracle數(shù)據(jù)庫導(dǎo)入.dmp腳本的sql 語句
- ORACLE中如何找到未提交事務(wù)的SQL語句詳解
- SELECT INTO 和 INSERT INTO SELECT 兩種表復(fù)制語句詳解(SQL數(shù)據(jù)庫和Oracle數(shù)據(jù)庫的區(qū)別)
- Oracle數(shù)據(jù)庫找到 Top Hard Parsing SQL 語句的方法
相關(guān)文章
Oracle數(shù)據(jù)遠(yuǎn)程連接的四種設(shè)置方法和注意事項
Oracle數(shù)據(jù)庫的遠(yuǎn)程連接可以通過多種方式來實現(xiàn),本文我們主要介紹四種遠(yuǎn)程連接的方法和注意事項,并通過示例來說明,接下來我們就開始介紹2014-04-04
Oracle BULK COLLECT批量取數(shù)據(jù)解決方法
在oracle使用中為了提高取數(shù)據(jù)效率,本文將詳細(xì)介紹Oracle BULK COLLECT批量取數(shù)據(jù),需要了解跟多的朋友可以參考下2012-11-11
Oracle 23ai中重要新特性VECTOR數(shù)據(jù)類型的使用
Oracle 23ai 中的 VECTOR 數(shù)據(jù)類型是 Oracle 數(shù)據(jù)庫在 AI 領(lǐng)域的一個重要新特性,它允許用戶以向量的形式存儲數(shù)據(jù),并在這些向量的基礎(chǔ)上進行高效的搜索和分析,下面就來介紹一下如何使用2024-08-08
oracle 12c因誤刪pdb數(shù)據(jù)文件導(dǎo)致整個數(shù)據(jù)庫打不開的解決方法
這篇文章主要給大家介紹了關(guān)于oracle 12c因誤刪pdb數(shù)據(jù)文件導(dǎo)致整個數(shù)據(jù)庫打不開問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧。2017-10-10
oracle如何修改Blob類型數(shù)據(jù),批量更新數(shù)據(jù)做字符替換
這篇文章主要介紹了oracle如何修改Blob類型數(shù)據(jù),批量更新數(shù)據(jù)做字符替換問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
Windows下編寫批處理腳本來啟動和重置Oracle數(shù)據(jù)庫
這篇文章主要介紹了Windows下編寫cmd腳本來對Oracle數(shù)據(jù)庫執(zhí)行啟動和重置的方法,只需在bat文件中保存cmd shell之后就可以雙擊使用,簡單粗暴,需要的朋友可以參考下2016-03-03
oracle中commit之后進行數(shù)據(jù)回滾的方法
這篇文章主要介紹了oracle中commit之后如何進行數(shù)據(jù)回滾,本文給大家分享兩種方法,每種方法都給大家介紹的比較詳細(xì),需要的朋友可以參考下2021-12-12
Oracle數(shù)據(jù)庫中如何給表賦予權(quán)限
賦權(quán)是指將特定的權(quán)限授予用戶或用戶組,以便他們可以執(zhí)行特定的操作,如查詢、插入、更新和刪除數(shù)據(jù),創(chuàng)建和修改表結(jié)構(gòu),以及執(zhí)行其他管理任務(wù),這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中如何給表賦予權(quán)限的相關(guān)資料,需要的朋友可以參考下2024-01-01

