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

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

oracle鎖表與解表

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

  AND s.username is NOT Null

  --kill session語(yǔ)句

  alter system kill session'50,492';

  --以下幾個(gè)為相關(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í)行的語(yǔ)句

  --比上面那段多出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;

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

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

  殺鎖命令

  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ā)生了鎖等待,我們可能更想知道是誰(shuí)鎖了表而引起誰(shuí)的等待

  以下的語(yǔ)句可以查詢到誰(shuí)鎖了表,而誰(shuí)在等待。

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

  如果想知道鎖用了哪個(gè)回滾段,還可以關(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 /*+ rule */ 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)閱讀

文章評(píng)論
發(fā)表評(píng)論

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

相關(guān)下載

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