153 lines
5.3 KiB
MySQL
153 lines
5.3 KiB
MySQL
drop table t;
|
|
create table t(a int);
|
|
|
|
create or replace package recursive_session_test
|
|
-- authid definer
|
|
as
|
|
procedure p;
|
|
end;
|
|
/
|
|
|
|
create or replace package body recursive_session_test as
|
|
procedure p is
|
|
pragma autonomous_transaction;
|
|
begin
|
|
|
|
begin
|
|
-- insert into t values(1);
|
|
insert into t select rownum from dual connect by level <=100000;
|
|
dbms_lock.sleep(60);
|
|
-- set transaction read only;
|
|
exception
|
|
when others then null;
|
|
end;
|
|
p;
|
|
end;
|
|
|
|
begin
|
|
recursive_session_test.p;
|
|
end;
|
|
/
|
|
show err
|
|
|
|
grant execute on recursive_session_test to public;
|
|
|
|
select q'\@sample "decode(bitand(ksuseflg,19),17,'BACKGROUND',1,'USER',2,'RECURSIVE','?'),ksuudsna" x$ksuse ksusepro=hextoraw('\'||hextoraw(paddr)||''') 10000' run_this
|
|
from v$session where sid = userenv('SID')
|
|
union all
|
|
select ' ' from dual
|
|
union all
|
|
select 'select decode(bitand(ksuseflg,19),17,''BACKGROUND'',1,''USER'',2,''RECURSIVE'',''?''),ksuudsna,ksusepro,ksspaown'||chr(10)
|
|
||'from x$ksuse'||chr(10)
|
|
||'where ksusepro=hextoraw('''||paddr||''');' run_this
|
|
from v$session where sid = userenv('SID');
|
|
|
|
--'
|
|
|
|
insert into t select rownum from dual connect by level <= 100000;
|
|
|
|
exec recursive_session_test.p;
|
|
|
|
|
|
--, STATUS
|
|
--, SERVER
|
|
--, SCHEMA#
|
|
--, SCHEMANAME
|
|
--, OSUSER
|
|
--, PROCESS
|
|
--, MACHINE
|
|
--, TERMINAL
|
|
--, PROGRAM
|
|
--, TYPE
|
|
--, SQL_ADDRESS
|
|
--, SQL_HASH_VALUE
|
|
--, SQL_ID
|
|
--, SQL_CHILD_NUMBER
|
|
--, PREV_SQL_ADDR
|
|
--, PREV_HASH_VALUE
|
|
--, PREV_SQL_ID
|
|
--, PREV_CHILD_NUMBER
|
|
--, MODULE
|
|
--, MODULE_HASH
|
|
--, ACTION
|
|
--, ACTION_HASH
|
|
--, CLIENT_INFO
|
|
--, FIXED_TABLE_SEQUENCE
|
|
--, ROW_WAIT_OBJ#
|
|
--, ROW_WAIT_FILE#
|
|
--, ROW_WAIT_BLOCK#
|
|
--, ROW_WAIT_ROW#
|
|
--, LOGON_TIME
|
|
--, LAST_CALL_ET
|
|
--, PDML_ENABLED
|
|
--, FAILOVER_TYPE
|
|
--, FAILOVER_METHOD
|
|
--, FAILED_OVER
|
|
--, RESOURCE_CONSUMER_GROUP
|
|
--, PDML_STATUS
|
|
--, PDDL_STATUS
|
|
--, PQ_STATUS
|
|
--, CURRENT_QUEUE_DURATION
|
|
--, CLIENT_IDENTIFIER
|
|
--, BLOCKING_SESSION_STATUS
|
|
--, BLOCKING_INSTANCE
|
|
--, BLOCKING_SESSION
|
|
--, SEQ#
|
|
--, EVENT#
|
|
--, EVENT
|
|
--, P1TEXT
|
|
--, P1
|
|
--, P1RAW
|
|
--, P2TEXT
|
|
--, P2
|
|
--, P2RAW
|
|
--, P3TEXT
|
|
--, P3
|
|
--, P3RAW
|
|
--, WAIT_CLASS_ID
|
|
--, WAIT_CLASS#
|
|
--, WAIT_CLASS
|
|
--, WAIT_TIME
|
|
--, SECONDS_IN_WAIT
|
|
--, STATE
|
|
--, SERVICE_NAME
|
|
--, SQL_TRACE
|
|
--, SQL_TRACE_WAITS
|
|
--, SQL_TRACE_BINDS )
|
|
--as
|
|
--select
|
|
--s.inst_id,s.addr,s.indx,s.ksuseser,s.ksuudses,s.ksusepro,s.ksuudlui,s.ksuudlna,s.ksuudoct,s.ksusesow
|
|
--,
|
|
--decode(s.ksusetrn,hextoraw('00'),null,s.ksusetrn),decode(s.ksqpswat,hextoraw('00'),null,s.ksqpswat),
|
|
--decode(bitand(s.ksuseidl,11),1,'ACTIVE',0,decode(bitand(s.ksuseflg,4096),0,'INACTIVE','CACHED'),2,'SNIPED',3,'SNIPED', 'KILLED'),
|
|
--decode(s.ksspatyp,1,'DEDICATED',2,'SHARED',3,'PSEUDO','NONE'),
|
|
--s.ksuudsid,s.ksuudsna,s.ksuseunm,s.ksusepid,s.ksusemnm,s.ksusetid,s.ksusepnm,
|
|
--decode(bitand(s.ksuseflg,19),17,'BACKGROUND',1,'USER',2,'RECURSIVE','?'), s.ksusesql, s.ksusesqh,
|
|
--s.ksusesqi, decode(s.ksusesch, 65535, to_number(null), s.ksusesch), s.ksusepsq, s.ksusepha,
|
|
--s.ksusepsi, decode(s.ksusepch, 65535, to_number(null), s.ksusepch), s.ksuseapp, s.ksuseaph,
|
|
--s.ksuseact, s.ksuseach, s.ksusecli, s.ksusefix, s.ksuseobj, s.ksusefil, s.ksuseblk, s.ksuseslt,
|
|
--s.ksuseltm, s.ksusectm,decode(bitand(s.ksusepxopt, 12),0,'NO','YES'),decode(s.ksuseft, 2,'SESSION',
|
|
--4,'SELECT',8,'TRANSACTIONAL','NONE'),decode(s.ksusefm,1,'BASIC',2,'PRECONNECT',4,'PREPARSE','NONE'),
|
|
--decode(s.ksusefs, 1, 'YES','NO'),s.ksusegrp,decode(bitand(s.ksusepxopt,4),4,'ENABLED',decode(bitand(s.ksusepxopt,8),8,'FORCED',
|
|
--'DISABLED')),decode(bitand(s.ksusepxopt,2),2,'FORCED',decode(bitand(s.ksusepxopt,1),1,'DISABLED','ENABLED'))
|
|
--,decode(bitand(s.ksusepxopt,32),32,'FORCED',decode(bitand(s.ksusepxopt,16),16,'DISABLED','EN
|
|
--ABLED')), s.ksusecqd, s.ksuseclid, decode(s.ksuseblocker,4294967295,'UNKNOWN', 4294967294,
|
|
--'UNKNOWN',4294967293,'UNKNOWN',4294967292,'NO HOLDER', 4294967291,'NOT IN WAIT','VALID'),
|
|
--decode(s.ksuseblocker, 4294967295,to_number(null),4294967294,to_number(null),
|
|
--4294967293,to_number(null), 4294967292,to_number(null),4294967291,
|
|
--to_number(null),bitand(s.ksuseblocker, 2147418112)/65536),decode(s.ksuseblocker,
|
|
--4294967295,to_number(null),4294967294,to_number(null), 4294967293,to_number(null),
|
|
--4294967292,to_number(null),4294967291, to_number(null),bitand(s.ksuseblocker, 65535)),s.ksuseseq,
|
|
--s.ksuseopc,e.kslednam, e.ksledp1, s.ksusep1,s.ksusep1r,e.ksledp2,
|
|
--s.ksusep2,s.ksusep2r,e.ksledp3,s.ksusep3,s.ksusep3r,e.ksledclassid, e.ksledclass#, e.ksledclass,
|
|
--decode(s.ksusetim,0,0,-1,-1,-2,-2, decode(round(s.ksusetim/10000),0,-1,round(s.ksusetim/10000))),
|
|
--s.ksusewtm,decode(s.ksusetim, 0, 'WAITING', -2, 'WAITED UNKNOWN TIME', -1, 'WAITED SHORT TIME',
|
|
--decode(round(s.ksusetim/10000),0,'WAITED SHORT TIME','WAITED KNOWN TIME')),s.ksusesvc,
|
|
--decode(bitand(s.ksuseflg2,32),32,'ENABLED','DISABLED'),decode(bitand(s.ksuseflg2,64),64,'TRUE','FALSE'),
|
|
--decode(bitand(s.ksuseflg2,128),128,'TRUE','FALSE')
|
|
--from x$ksuse s, x$ksled e
|
|
--where
|
|
-- s.ksuseopc=e.indx
|
|
----and bitand(s.ksspaflg,1)!=0
|
|
----and bitand(s.ksuseflg,1)!=0
|