最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

oracle數(shù)據(jù)庫查看鎖表的sql語句整理

 更新時間:2023年10月25日 10:36:46   作者:萬山寒  
Oracle數(shù)據(jù)庫操作中,我們有時會用到鎖表查詢以及解鎖和kill進程等操作,這篇文章主要給大家介紹了關(guān)于oracle數(shù)據(jù)庫查看鎖表的sql語句的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

關(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

吴忠市| 饶阳县| 万载县| 齐齐哈尔市| 鄂托克前旗| 平泉县| 饶平县| 灵石县| 石狮市| 左贡县| 大连市| 增城市| 昌黎县| 望都县| 鄂伦春自治旗| 呼玛县| 安平县| 潼关县| 南华县| 耒阳市| 宜阳县| 云浮市| 宝清县| 阿克陶县| 油尖旺区| 拉萨市| 乐山市| 南澳县| 盐山县| 萨嘎县| 姜堰市| 保亭| 上高县| 普格县| 台南县| 昆明市| 元谋县| 泸州市| 永昌县| 灵宝市| 临潭县|