怎麼快速查詢鎖與鎖等待

2021-08-23 11:54:51 字數 2275 閱讀 2105

/*怎麼快速查詢鎖與鎖等待

資料庫的鎖是比較耗費資源的,特別是發生鎖等待的時候,我們必須找到發生等待的鎖,有可能的話,殺掉該程序。

這個語句將查詢到資料庫中所有的dml語句產生的鎖,還可以發現,任何dml語句其實產生了兩個鎖,乙個是表鎖,乙個是行鎖。

可以通過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

--如果發生了鎖等待,我們可能更想知道是誰鎖了表而引起誰的等待,以下的語句可以查詢到誰鎖了表,而誰在等待。

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

--以上查詢結果是乙個樹狀結構,如果有子節點,則表示有等待發生。如果想知道鎖用了哪個回滾段,還可以關聯到v$rollname,其中xidusn就是回滾段的usn

--[q] 如何有效的刪除乙個大表(extent數很多的表)

-- [a] 乙個有很多(100k)extent的表,如果只是簡單地用drop table的話,會很大量消耗cpu(oracle要對fet$、uet$資料字典進行操作),可能會用上幾天的時間,較好的方法是分多次刪除extent,以減輕這種消耗:

1. truncate table big-table reuse storage;

2. alter table big-table deallocate unused keep 2000m ( 原來大小的n-1/n);

3. alter table big-table deallocate unused keep 1500m ;

....

4. drop table big-table;

-----查詢什麼sql鎖表

select event, count(*) from v$session_wait group by event;

select sid, event

from v$session_wait

where event in ('enqueue', 'latch free', 'db file sequential read', 'library cache lock', 'db file scattered read', '

buffer busy waits');

select /*+ ordered */

--s.sid,

--s.serial#,

--s.last_call_et,

--s.username,

--p.spid,

sql.sql_text

--s.machine

from v$session s, v$process p, v$sqltext sql

where sql.address = s.sql_address and sql.hash_value = s.sql_hash_value and s.sid = &sid and s.paddr = p.addr and

s.status = 'active' and s.username is not null and s.username in ('develop', 'neva2', 'uptel2h', 'uptel2l', 'gj')

order by s.username, s.sid, s.serial#, sql.piece

select * from v$locked_object

Oracle資料鎖快速查殺

網上有很多這樣的文章,我希望的是迅速找到一張表的所有的行級鎖,並把它們一併處理掉。所以改進了一下 要是想用kill 9 sessionpid的方式就會用到檢視v process,但這樣查詢速度很慢。於是可以先建表 可以先建表 create table b session process nologg...

怎麼快速查詢頁面元素的繫結事件

怎麼查詢頁面元素的繫結事件 1 程式簡單清晰 直接複製元素的id,在引用的js裡查詢 2 程式複雜 這是我們主要 的角度,尤其在複雜的web系統中,頁面元素的事件可能沒有顯式的呼叫,事件繫結比較隱蔽,翻了半天沒有找到 思路 仔細想一下,既然點選後觸發了某個事件,說明二者肯定已經關聯到了一起,瀏覽器可...

問題疫苗怎麼查?快速查詢渠道看這裡

最近幾天大家談論和關注的最多的應該就是問題疫苗事件,尤其是家長們對給孩子注射疫苗也產生了極大的焦慮和恐慌,更擔心自己的孩子之前注射的疫苗是否有問題。能否查詢到孩子之前是否注射過問題疫苗,也是眾多家長非常關心的問題,源妹也收集整理了一些疫苗查詢方式和途徑,擔心的家長不妨通過這些方式查詢看看。問題疫苗查...