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

