IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫Oracle → oracle鎖表

oracle鎖表

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  查詢表的狀況的對象:V$LOCK, V$LOCKED_OBJECT, V$SESSION, V$SQLAREA, V$PROCESS

  select * from v$locked_object

  select * from dba_objects

  方法:

  首先查看那些表被鎖住了

  -----------------------------------------------------------------

  select b.owner, b.object_name, a.session_id, a.locked_mode

  from v$locked_object a, dba_objects b

  where b.object_id = a.object_id;

  -----------------------------------------------------------------

  select b.username, a.LOCKED_MODE, b.sid, b.serial#, logon_time

  from v$locked_object a, v$session b

  where a.session_id = b.sid

  order by b.logon_time;

  -----------------------------------------------------------------

  select b.sid,

  b.serial#,

  c.object_name,

  b.username,

  a.LOCKED_MODE,

  b.logon_time

  from v$locked_object a, v$session b, dba_objects c

  where a.session_id = b.sid

  and a.object_id = c.object_id

  order by b.logon_time;

  -----------------------------------------------------------------

  殺進(jìn)程中的會話

  alter system kill session 'SID,SERIAL#';

  例如:

  alter system kill session '29,5497';

  ------------------------------------------------

  SELECT S.SID SESSION_ID,

  S.USERNAME,

  s.SERIAL#,

  DECODE(LMODE,

  0,

  'None',

  1,

  'Null',

  2,

  'Row-S (SS)',

  3,

  'Row-X (SX)',

  4,

  'Share',

  5,

  'S/Row-X (SSX)',

  6,

  'Exclusive',

  TO_CHAR(LMODE)) MODE_HELD,

  DECODE(REQUEST,

  0,

  'None',

  1,

  'Null',

  2,

  'Row-S (SS)',

  3,

  'Row-X (SX)',

  4,

  'Share',

  5,

  'S/Row-X (SSX)',

  6,

  'Exclusive',

  TO_CHAR(REQUEST)) MODE_REQUESTED,

  O.OWNER || '.' || O.OBJECT_NAME || ' (' || O.OBJECT_TYPE || ')',

  S.TYPE LOCK_TYPE,

  L.ID1 LOCK_ID1,

  L.ID2 LOCK_ID2

  FROM V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION S

  WHERE L.SID = S.SID

  AND L.ID1 = O.OBJECT_ID;

  ORACLE里鎖有以下幾種模式:

  0:none

  1:null 空

  2:Row-S 行共享(RS):共享表鎖

  3:Row-X 行專用(RX):用于行的修改

  4:Share 共享鎖(S):阻止其他DML操作

  5:S/Row-X 共享行專用(SRX):阻止其他事務(wù)操作

  6:exclusive 專用(X):獨立訪問使用

  數(shù)字越大鎖級別越高, 影響的操作越多。

  一般的查詢語句如select ... from ... ;是小于2的鎖, 有時會在v$locked_object出現(xiàn)。

  select ... from ... for update; 是2的鎖。

  當(dāng)對話使用for update子串打開一個游標(biāo)時,

  所有返回集中的數(shù)據(jù)行都將處于行級(Row-X)獨占式鎖定,

  其他對象只能查詢這些數(shù)據(jù)行,不能進(jìn)行update、delete或select...for update操作。

  insert / update / delete ... ; 是3的鎖。

  沒有commit之前插入同樣的一條記錄會沒有反應(yīng),

  因為后一個3的鎖會一直等待上一個3的鎖, 我們必須釋放掉上一個才能繼續(xù)工作。

  創(chuàng)建索引的時候也會產(chǎn)生3,4級別的鎖。

  locked_mode為2,3,4不影響DML(insert,delete,update,select)操作,

  但DDL(alter,drop等)操作會提示ora-00054錯誤。

  有主外鍵約束時 update / delete ... ; 可能會產(chǎn)生4,5的鎖。

  DDL語句時是6的鎖。

關(guān)鍵詞標(biāo)簽:oracle鎖表

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法