oracle中的阻塞

2021-06-28 00:08:44 字數 1553 閱讀 6832

oracle的鎖是放在塊上的。

-- 當前鎖定的物件:

select *

from v$locked_object;

-- 被死鎖的語句

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))

-- 鎖型別

select *

from v$lock_type lt

where lt.type = 'tx';

--鎖的資訊

select vl.*,trunc(id1/power(2,16)) usn,

bitand(id1,to_number('ffff','***x'))+0 slot ,

vl.id2 sequence

from v$lock vl

where vl.type = 'tx';

-- 查出當前鎖定資源的事務是那乙個以及session 資訊。

select vs.*

from v$transaction t, v$session vs

where t.addr = vs.taddr

and exists (select 1

from v$lock vl

where vl.type = 'tx'

and trunc(id1 / power(2, 16)) = t.xidusn

and bitand(id1, to_number('ffff', '***x')) + 0 = t.xidslot

and vl.id2 = t.xidsqn);

-- kill session.

alter system kill session '78,14848' ;

-- 誰阻塞了誰

select 'sid:', blk.sid ,',is block sid :',req.sid

from v$lock blk,v$lock req

where blk.type = 'tx'

and blk.block = 1

and blk.type = req.type

and req.request > 0

and blk.id1 = req.id1

and blk.id2 = req.id2 ;

-- 日前等待最多的是那個鎖。

select blk.sid ,count(req.sid)

from v$lock blk,v$lock req

where blk.type = 'tx'

and blk.block = 1

and blk.type = req.type

and req.request > 0

and blk.id1 = req.id1

and blk.id2 = req.id2

group by blk.sid

order by 2;

verilog中的阻塞與非阻塞

初學verilog的同學容易搞混淆阻塞與非阻塞賦值操作。要區分的話,其實也有辦法。學過數位電路的都知道時序的概念,比暫存器的操作,把d端輸入用clk打入暫存器,在clk時鐘上公升沿取樣d值,只有在時鐘上公升沿的下一週期的上公升沿,d值才會在輸出端q上輸出出來。符合這個特徵的就是非阻塞賦值 alway...

Socket程式設計中,阻塞與非阻塞的區別

阻塞 一般的i o操作可以在新建的流中運用.在伺服器回應前它等待客戶端傳送乙個空白的行.當會話結束時,伺服器關閉流和客戶端socket.如果在佇列中沒有請示將會出現什麼情況呢?那個方法將會等待乙個的到來.這個行為叫阻塞.accept 方法將會阻塞伺服器執行緒直到乙個呼叫到來.當5個連線處理完閉之後,...

Socket程式設計中,阻塞與非阻塞的區別

阻塞 一般的i o操作可以在新建的流中運用.在伺服器回應前它等待客戶端傳送乙個空白的行.當會話結束時,伺服器關閉流和客戶端socket.如果在佇列中沒有請示將會出現什麼情況呢?那個方法將會等待乙個的到來.這個行為叫阻塞.accept 方法將會阻塞伺服器執行緒直到乙個呼叫到來.當5個連線處理完閉之後,...