抓取鎖的sql語句 第四次修改

2022-08-03 07:57:11 字數 3668 閱讀 7736

--完成情況   變數v_blocking_sid 用來動態抓取 產生鎖的會話id,輸出引數沒有任何問題,但是執行報錯  識別符號無效!

create or replace procedure solve_lock123

asv_sql varchar2(3000); --定義 v_sql 接受抓取鎖的sql語句

v_sql02 varchar2(3000);

v_sql03 varchar2(3000);

kill_sid number;

kill_serial number;

cur_lock sys_refcursor; --定義游標變數,迴圈執行抓取鎖的sql語句

cur_lock02 sys_refcursor;

type tp_lock is record( --定義 record型別的 變數

v_sid number,

v_type varchar2(10),

v_id1 number,

v_id2 number,

v_lmode varchar2(200),

v_request varchar2(200),

v_lock_time number,

v_block number );

records_lock tp_lock;

type tp_lock02 is record(

waiting_sid number,

waiting_sql varchar2(1000),

blocker_event varchar2(1000),

blocking_sid number,

blocking_sql varchar2(1000));

records_lock02 tp_lock02;

v_blocking_sid number;

v_waiting_sid number;

begin

v_sql:='select sid,type,id1,id2,

decode(lmode,0, ''none'',1,''null'', 2, ''row share'' ,3, ''row exclusive'' ,4, ''share'' ,5, ''share row exclusive'' ,6 ,''exclusive'' ,''haha'') lock_type,

decode(request,0, ''none'',1,''null'', 2, ''row share'' ,3, ''row exclusive'' ,4, ''share'' ,5, ''share row exclusive'' ,6 ,''exclusive'' ,''haha'') lock_request,

ctime,block from v$lock where type in (''tm'',''tx'')' ;

open cur_lock for v_sql;

loop

fetch cur_lock into records_lock;

exit when cur_lock%notfound;

if records_lock.v_request <> 'none' then --抓取發出請求鎖的會話

dbms_output.put_line('waiting sid: '||records_lock.v_sid||' is request a lock ,lock_mode is '||records_lock.v_request||' and being locked '|| records_lock.v_lock_time||'s');

v_waiting_sid:=records_lock.v_sid;

end if;

if records_lock.v_block <> 0 then --抓取發生鎖阻塞的會話

dbms_output.put_line('blocking sid: '||records_lock.v_sid||' is make a lock , lock_mode is '||records_lock.v_lmode);

v_blocking_sid:=records_lock.v_sid;

dbms_output.put_line(v_blocking_sid);

end if;

end loop;

close cur_lock;  

v_sql02:='select distinct

waiter.sid "waiting_sid",

w_sql.sql_text "sql from waiting session",

blocker.event "blocker event",

blocker.sid "blocking sid",

b_sql.sql_text "sql from blocking session"

from v$session waiter,

v$session blocker,

v$sql w_sql,

v$sql b_sql

where waiter.event=''enq: tx - row lock contention'' and waiter.blocking_session=blocker.sid

and w_sql.sql_id=waiter.sql_id

and b_sql.sql_id =nvl(blocker.sql_id,blocker.prev_sql_id)';  

open cur_lock02 for v_sql02;

loop  

fetch cur_lock02 into records_lock02;

exit when cur_lock02%notfound;

if records_lock02.waiting_sid is not null then

dbms_output.put_line('waiting sid: '||records_lock02.waiting_sid||' wait_sql is: '||records_lock02.waiting_sql);

end if;

if records_lock02.blocking_sid is not null then

dbms_output.put_line('blocking sid: '||records_lock02.blocking_sid||' block_sql is: '||records_lock02.blocking_sql);

end if;

end loop;

close cur_lock02;

dbms_output.put_line(v_blocking_sid);

-- 解決 鎖阻塞、鎖等待

v_sql03:='select  sid , serial#  from v$session where sid=v_blocking_sid' ;  

execute immediate v_sql03 into kill_sid,kill_serial;

--'select  sid ,serial# from v$session where sid=197 ' into kill_sid,kill_serial;

dbms_output.put_line('alter system kill session ('||kill_sid||','||kill_serial||')');

end solve_lock123;

第四次作業

扎ogu 典型產品 最高傳輸速率 ieee 802.11a wi fi5 802.11a 43m 450 zyxel p334u 54mbps 1500 zyxel p335u 54mbps 1600 ieee 802.11b d link di 624 a 54mbps 215 linksys w...

第四次作業

作業題一 vs2012 rc在介面上,比beta版更容易使用,彩色的圖示和按照開發 執行 除錯等環境區分的顏色方案讓人愛不釋手。vs2012整合了asp.net mvc 4,全面支援移動和html5,wf 4.5相比wf 4,更加成熟,期待已久的狀態極工作流回來了,更棒的是,現在它的設計器已經支援c...

第四次作業

專案一求1000以內所有偶數的和 includevoid main cout sum includevoid main while i 1000 cout sum includeint main while i 1001 cout 專案3 乘法口訣表 程式設計序,輸出乙個乘法口訣表,形如 1x1 1...