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

您當(dāng)前所在位置:首頁數(shù)據(jù)庫Oracle → 關(guān)于ORACLE的鎖表與解鎖總結(jié)

關(guān)于ORACLE的鎖表與解鎖總結(jié)

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

  select

  s.username,

  decode(l.type,'tm','table lock','tx','row lock',null) lock_level,

  o.owner,

  o.object_name,

  o.object_type,

  s.sid,

  s.serial#,

  s.terminal,

  s.machine,

  s.program,

  s.osuser

  from v$session s,v$lock l,dba_objects o

  where l.sid = s.sid

  and l.id1 = o.object_id(+)

  and s.username is not null;

  --kill session語句

  alter system kill session'50,492';

  --以下幾個為相關(guān)表

  SELECT * FROM v$lock;

  SELECT * FROM v$sqlarea;

  SELECT * FROM v$session;

  SELECT * FROM v$process ;

  SELECT * FROM v$locked_object;

  SELECT * FROM all_objects;

  SELECT * FROM v$session_wait;

  --1.查出鎖定object的session的信息以及被鎖定的object名

  SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,

  l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time

  FROM v$locked_object l, all_objects o, v$session s

  WHERE l.object_id = o.object_id

  AND l.session_id = s.sid

  ORDER BY sid, s.serial# ;

  --2.查出鎖定表的session的sid, serial#,os_user_name, machine name, terminal和執(zhí)行的語句

  --比上面那段多出sql_text和action

  SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,

  l.os_user_name,s.machine, s.terminal,a.sql_text, a.action

  FROM v$sqlarea a,v$session s, v$locked_object l

  WHERE l.session_id = s.sid

  AND s.prev_sql_addr = a.address

  ORDER BY sid, s.serial#;

  --3.查出鎖定表的sid, serial#,os_user_name, machine_name, terminal,鎖的type,mode

  SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,

  s.terminal, s.logon_time, l.type

  FROM v$session s, v$lock l

  WHERE s.sid = l.sid

  AND s.username IS NOT NULL

  ORDER BY sid;

  這個語句將查找到數(shù)據(jù)庫中所有的DML語句產(chǎn)生的鎖,還可以發(fā)現(xiàn),

  任何DML語句其實(shí)產(chǎn)生了兩個鎖,一個是表鎖,一個是行鎖。

  殺鎖命令

  alter system kill session 'sid,serial#'

  SELECT /*+ rule */ s.username,

  decode(l.type,'TM','TABLE LOCK',

  'TX','ROW LOCK',

  NULL) LOCK_LEVEL,

  o.owner,o.object_name,o.object_type,

  s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser

  FROM v$session s,v$lock l,dba_objects o

  WHERE l.sid = s.sid

  AND l.id1 = o.object_id(+)

  AND s.username is NOT NULL

  如果發(fā)生了鎖等待,我們可能更想知道是誰鎖了表而引起誰的等待

  以下的語句可以查詢到誰鎖了表,而誰在等待。

  以上查詢結(jié)果是一個樹狀結(jié)構(gòu),如果有子節(jié)點(diǎn),則表示有等待發(fā)生。

  如果想知道鎖用了哪個回滾段,還可以關(guān)聯(lián)到V$rollname,其中xidusn就是回滾段的USN

  col user_name format a10

  col owner format a10

  col object_name format a10

  col object_type format a10

  select lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name,

  o.owner,o.object_name,o.object_type,s.sid,s.serial#

  from v$locked_object l,dba_objects o,v$session s

  where l.object_id=o.object_id

  and l.session_id=s.sid

  order by o.object_id,xidusn desc

關(guān)鍵詞標(biāo)簽:ORACLE鎖表與解鎖

相關(guān)閱讀

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

熱門文章 Oracle中使用alter table來增加,刪除,修改列Oracle中使用alter table來增加,刪除,修改列oracle中使用SQL語句修改字段類型-oracle修oracle中使用SQL語句修改字段類型-oracle修使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限Oracle對user的訪問控制Oracle對user的訪問控制

相關(guān)下載

人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語句Oracle中使用alter table來增加,刪除,修改列的語法ORACLE和SQL語法區(qū)別歸納(1)oracle grant 授權(quán)語句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權(quán)限