以下脚本可以用于列出本会话(local session)的sid、pid、spid、trace 路径等有用信息; 因为不依赖于dbms_session等包体,所以仅需要select_catalog_role的角色即可执行,更为灵活。
set serveroutput on set linesize 200 pagesize 1400 set time on declare l_audsid number; l_sid number; l_serial number; l_module varchar2(128); l_pid number; l_spid number; l_trace varchar2(2000); l_user varchar2(128); begin DBMS_APPLICATION_INFO.SET_MODULE(module_name => 'Maclean Liu OppO', action_name => 'ACTIVE'); select audsid, sid, SERIAL#, module,username into l_audsid, l_sid, l_serial, l_module,l_user from v$session where sid = (select distinct sid from v$mystat); select pid, spid into l_pid, l_spid from v$process where addr = (select paddr from v$session where sid = l_sid and serial# = l_serial); SELECT d.VALUE || '/' || LOWER(RTRIM(i.INSTANCE, CHR(0))) || '_ora_' || p.spid || '.trc' into l_trace FROM (SELECT p.spid FROM v$mystat m, v$session s, v$process p WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p, (SELECT t.INSTANCE FROM v$thread t, v$parameter v WHERE v.NAME = 'thread' AND (v.VALUE = 0 OR t.thread# = TO_NUMBER(v.VALUE))) i, (SELECT VALUE FROM v$parameter WHERE NAME = 'user_dump_dest') d; dbms_output.enable(9999999); dbms_output.put_line('==============================================='); dbms_output.put_line(' USERNAME=' || l_user); dbms_output.put_line(' SESSION ID=' || l_sid || ' SERIAL#=' || l_serial); dbms_output.put_line(' AUDSID=' || l_audsid || ' MODULE#=' || l_module); dbms_output.put_line(' PID=' || l_pid || ' SPID#=' || l_spid); dbms_output.put_line(' TRACE_FILE_LOCATION=' || l_trace); dbms_output.put_line('==============================================='); commit; end; /