--完成情況 變數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...