Трейсы, дампы, сигналы
Список ошибок Oracle, включая номера событий (Oracle events) на Unix/Linux платформах можно найти в файле $ORACLE_HOME/rdbms/mesg/oraus.msg.
218105.1 Introduction to ORACLE Diagnostic EVENTS
Event Reference описание недостаточно документированных событий от Julian Dyke
Список событий Oracle 11g, полученный с использованием функции sqlerrm
SQL> declare 2 v_errm VARCHAR2(256); 3 begin 4 v_errm := SUBSTR(SQLERRM(-10046),1,256); 5 DBMS_OUTPUT.PUT_LINE( v_errm); 6 end; 7 / ORA-10046: enable SQL statement timing
Трейс выполнения запроса / SQL trace/ 10046 event
“стандартный” Oracle SQL Trace, в зависимости от уровня может включать значения связанных переменных (binds) и информацию по статистике событий ожиданий (waits). “Уровни трейса (EVENT) 10046:
1 – стандартный уровень SQL_TRACE (Default)
4 – уровень 1 + трейс значений связанных переменных (binds)
8 – уровень 1 + трейс событий ожидания (waits)…
12 – уровень 1 + трейсы значений связанных переменных (binds) и событий ожидания (waits)“
Включить/выключить стандартные трейс в текущей сессии
SQL> alter session set SQL_TRACE= TRUE|FALSE;
или с указанием уровня трейса
SQL> alter session set events '10046 trace name context forever , level 12'; SQL> alter session set events '10046 trace name context off';
Включить/выключить трейс в любой сессии, используя пакет DBMS_SUPPORT:
SQL> exec sys.dbms_support.start_trace_in_session( &sid, &serial, waits=>TRUE, binds=>TRUE ); SQL> exec sys.dbms_support.stop_trace_in_session( &sid, &serial );
То же с использованием утилиты ORADEBUG:
SQL> select s.sid, s.serial#, p.spid ospid, p.pid orapid, s.username, s.osuser 2 from v$session s, v$process p 3 where s.paddr = p.addr 4 / SID SERIAL# OSPID ORAPID USERNAME OSUSER ------- ---------- -------- --------- ----------- ------------
определить/установить сессию по orapid
SQL> oradebug setorapid &orapid
или по ospid
SQL> oradebug setospid &ospid
включить/выключить трейс
SQL> oradebug event 10046 trace name context forever [, level L] SQL> oradebug event 10046 trace name context off
1058210.6 How to Enable SQL_TRACE for Another Session or in MTS Using Oradebug
Включить/выключить трейс на уровне системы:
SQL> alter system set events '10046 trace name context forever[, level L]'; SQL> alter system set events '10046 trace name context off';
или с использованием параметра системы:
event='10046 trace name context forever[, level 12]'
Выключить все события для всех инстансов бд:
SQL> ALTER SYSTEM RESET EVENT SCOPE=SPFILE SID='*' ;
160178.1 How to set EVENTS in the SPFILE
all possible methods for sql trace / 10046 trace setup [ID 1274511.1] – специалисты Oracle сами всё описывают
Начиная с Oracle 10.2 можно определить наличие и уровень SQL_TRACE для сессии по значениям SQL_TRACE, SQL_TRACE_WAITS, SQL_TRACE_BINDS в V$SESSION
Интерпретация результатов трейса 10046:
39817.1 Interpreting Raw SQL_TRACE and DBMS_SUPPORT.START_TRACE output – структура информации необработанного (raw) трейс файла
На примере трассировке с уровнем 12 (LEVEL 12 = binds + waits) операции вставки массива строк (array insert, реализуемый с использованием FORALL кляузы в PL/SQL или host arrays) Oracle сразу после записи о разборе (PARSING IN CURSOR) запишет в файл только первый набор значений связанных переменных (первый элемент вставляемого массива строк):
PARSING IN CURSOR #139988089003064 len=227 dep=0 uid=21 oct=2 lid=21 tim=1323439560100077 hv=1512394967 ad='1f578f9c0' sqlid='291quzjd2an6r'
INSERT INTO "MY_TABLE" ("EVENTTIME", "TRANTIME", "BLOCK_ID", ...) VALUES(TO_DATE(:p1, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(:p2, 'YYYY-MM-DD HH24:MI:SS'), :p3, ...)
END OF STMT
BINDS #139988089003064: -- bind-значения для курсора #139988089003064
Bind#0 --
oacdty=01 mxl=32(19) mxlc=00 mal=00 scl=00 pre=00 -- св-ва переменной: тип данных [oac]dty; макс.длина mxl;...
oacflg=00 fl2=1000000 frm=01 csi=196 siz=96 off=0
kxsbbbfp=7f5184562ab8 bln=32 avl=19 flg=05 -- bind address [kxsbb]bfp; размер bind буфера bln; актуальный размер переменной avl;...
value="2011-12-09 17:29:03" -- значение
...
далее – типичные ожидания (в случае array insert основные дисковые чтения приходятся на блоки индексов):
... WAIT #139988089003064: nam='db file sequential read' ela= 13105 file#=197 block#=576548 blocks=1 obj#=8483163 tim=1323439560207461 ...
и, собственно, выполнение курсора:
... EXEC #139988089003064:c=245963,e=29695833,p=683,cr=265,cu=3207,mis=0,r=1000,dep=0,og=1,plh=0,tim=1323439589795819
c CPU time (9i+ microseconds)
e Elapsed time (9i+ microseconds)
p Number of physical reads
cr Number of buffers retrieved for CR reads – соответствует статистике consistent gets
cu Number of buffers retrieved in current mode – соответствует статистике db block gets
mis Cursor missed in the cache – если <> 0 – поребовался разбор курсора – hard parse
r Number of rows processed – кол-во обработанных строк, в этом случае 1000
dep Recursive call depth (0 = user SQL, >0 = recursive).
og Optimizer goal: 1=All_Rows, 2=First_Rows, 3=Rule, 4=Choose
tim Timestamp (9i+ microseconds) – может быть использован для определения времени между операциями в трейс файле, к реальному времени можно привязать через обзор v$timer
32951.1 Tkprof Interpretation: стандартно поставляемая с Oracle утилита tkprof для обработки и анализа содержимого трейс файлов
tkprof
Из обработанного tkprof трейса:
******************************************************************************** count = number of times OCI procedure was executed -- кол-во выполнений процедур PARSE, FETCH, EXEC,... cpu = cpu time in seconds executing elapsed = elapsed time in seconds executing disk = number of physical reads of buffers from disk -- соответствует статистике physical reads query = number of buffers gotten for consistent read -- соответствует статистике consistent gets current = number of buffers gotten in current mode (usually for update) -- соответствует статистике db block gets rows = number of rows processed by the fetch or execute call -- количество полеченных (SELECT) или вставленных/обновлённых (INSERT/UPDATE) строк ********************************************************************************
Обработанный трейс Array insert из предыдущего примера выглядит так:
call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 0 0.00 0.00 0 0 0 0 Execute 7 1.34 136.54 3816 1828 19538 6032 -- за 7 выполнений вставлено 6032 строк, при этом прочитано 1828(query)+19538(current)=21366 блоков бд, из них 3816 блоков - с диска Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 7 1.34 136.54 3816 1828 19538 6032 Misses in library cache during parse: 0 Optimizer mode: ALL_ROWS Parsing user id: 21 Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ db file sequential read 3816 0.49 130.10 -- 3816 одноблочных чтений с диска были выполнены за 130 секунд SQL*Net more data from client 24 0.00 0.00 log file switch completion 1 0.41 0.41 SQL*Net message to client 7 0.00 0.00 SQL*Net message from client 7 0.01 0.08 read by other session 2 0.07 0.09 latch: object queue header operation 2 0.00 0.00 latch: cache buffers chains 1 0.00 0.00 ********************************************************************************
По крайней мере, начиная с версии 11g, tkprof пишет статистику плана выполнения (row source statistics):
Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 173
Number of plan statistics captured: 1
Rows (1st) Rows (avg) Rows (max) Row Source Operation
---------- ---------- ---------- ---------------------------------------------------
2628 2628 2628 SORT AGGREGATE (cr=9913 pr=1028 pw=0 time=7379389 us) -- 1028 Physical Reads; 7.379389 seconds
2628 2628 2628 TABLE ACCESS BY INDEX ROWID CUSTOMER_TRX_ALL (cr=9913 pr=1028 pw=0 time=7373736 us cost=5 size=13 card=1)
2628 2628 2628 INDEX RANGE SCAN CUSTOMER_TRX_IDX3 (cr=7847 pr=1028 pw=0 time=7359145 us cost=4 size=0 card=1)(object id 29159)
TRCANLZR
224270.1 TRCANLZR “…reads a raw SQL Trace generated by standard SQL Trace or by EVENT 10046 (Level 4, 8 or 12), and generates a comprehensive HTML report with performance related details: time summary, call summary (parse, execute, fetch), identification of top SQL, row source plan, explain plan, CBO statistics, wait events, values of bind variables, I/O summary per schema object, latches, hot blocks, etc.” . Инструмент реализован в виде схемы БД, считывает трейс файл 10046 и генертрует подробный отчёт в формате HTML. Во время обработки данные загружаются в global temporary table и доступны из SQL, например, для создания на основе активности сессии тестового повторного сценария (Oracle session activity Replay)
events sql_trace
Начиная с Oracle 11g появилась возможность устанавливать SQL trace на уровнях отдельных запросов, процессов – см.описание в блоге Miladin Modrakovich:
SQL> alter session/system set events 'sql_trace [sql:|] wait=true | false, bind=true | false, planstat=never | first_execution | all_executionss | level = 12';
SQL> alter session/system set events 'sql_trace {process : pid = , pname = , orapid = } ...';
SQL> alter system set events 'sql_trace {process: pname = p000 | p005}';
, более подробно возможности детальной трассировки описаны в Tanel Poder: The full power of Oracle’s diagnostic events, part 2: ORADEBUG DOC and 11g improvements
10053 event / 10132 event
Трассировка действий оптимизатора (Cost-Based Optimizer) по выбору плана выполнения запроса, включая используемые параметры, статистику объектов (изпользуемых таблиц и индексов), использование правил,…
SQL> alter session set events '10053 trace name context forever'; SQL> select count(*) from emp ...; SQL> alter session set events '10053 trace name context off';
*) начиная с Oracle 11.1.0.6 при установленном параметре trace_enabled=false файлы 10053 event могут не генерится – Bug 7304656: TRACE_ENABLED=FALSE DISABLES EVENT 10053 TRACE IN 11G
та же проблема в 11.2.0.2, при этом файлы обычного SQL_TRACE (10046 event) генерируются без проблем
Событие 10132 – облегчённый вариант предыдущего события(?), без математики
SQL> alter session set events '10132 trace name context forever, level 12'; SQL> select ... SQL> alter session set events '10053 trace name context off';
В конце трейсов в случае применения в запросе подсказок можно найти отчёт об использовании подсказок (used=0/1 – неиспользована/использована):
Dumping Hints ============= atom_hint=(@=0x7ff72a34fce8 err=6 resol=1 used=0 token=453 org=1 lvl=2 txt=FIRST_ROWS ) atom_hint=(@=0x7ff72a348b18 err=6 resol=1 used=0 token=454 org=1 lvl=2 txt=ALL_ROWS ) ********** WARNING: SOME HINTS HAVE ERRORS *********
Wolfgang Breitling A LOOK UNDER THE HOOD OF CBO: THE 10053 EVENT
CASE STUDY: Analyzing 10053 Trace Files [ID 338137.1]
Optimizer Trace
Greg Rahn “Creating Optimizer Trace Files” – начиная с Oracle 11g:
SQL> oradebug doc component SQL_Compiler
SQL_Compiler SQL Compiler
SQL_Parser SQL Parser (qcs)
SQL_Semantic SQL Semantic Analysis (kkm)
SQL_Optimizer SQL Optimizer
SQL_Transform SQL Transformation (kkq, vop, nso)
SQL_MVRW SQL Materialized View Rewrite
SQL_VMerge SQL View Merging (kkqvm)
SQL_Virtual SQL Virtual Column (qksvc, kkfi)
SQL_APA SQL Access Path Analysis (apa)
SQL_Costing SQL Cost-based Analysis (kko, kke)
SQL_Parallel_Optimization SQL Parallel Optimization (kkopq)
SQL_Code_Generator SQL Code Generator (qka, qkn, qke, kkfd, qkx)
SQL_Parallel_Compilation SQL Parallel Compilation (kkfd)
SQL_Expression_Analysis SQL Expression Analysis (qke)
SQL_Plan_Management SQL Plan Managment (kkopm)
MPGE MPGE (qksctx)
SQL> alter session set events 'trace [SQL_Compiler.*]';
SQL> select * from scott.emp where ename = 'SCOTT';
SQL> alter session set events 'trace [SQL_Compiler.*] off';
Начиная с Oracle 11.2 можно получить трейс оптимизатора для запроса, находящегося в shared pool (v$sql), без повторного выполнения запроса:
begin dbms_sqldiag.dump_trace( p_sql_id=>'d9m84krtg4yg1', p_child_number => 2, p_component=>'Optimizer', --Valid values are "Optimizer" and "Compiler" p_file_id=>'My_CBO_Trace'); end;
При выполнениии процедуры dbms_sqldiag.dump_trace для формирования трейса будет выполнен повторный разбор запроса, в текст которого добавляется соответствующий комментарий:
sql=/* SQL Analyze(129,0) */ SELECT "A1"."C" FROM "TEST" "A1"
, т.е. указание в качестве параметра процедуры p_child_number не позволяет получать трейс формирования конкретного дочернего курсора – Параметр CHILD NUMBER в процедуре DBMS_SQLDIAG.DUMP_TRACE по крайней мере в 11.2
Для трассировки интересных случаев разбора определённого запроса, например, вызываемого из PL/SQL, или изменяющего план выполнения под влиянием Cardinality Feedback или удалённого выполнения, удобно выставлять трейс таким образом:
11.2.0.2.@SQL> alter system set events 'trace [rdbms.SQL_Compiler.*][sql:dvhxps45r7j8s]'; System altered.
How do I capture a 10053 trace for a SQL statement called in a PL/SQL package
SQL PLAN MANAGEMENT trace
SQL PLAN MANAGEMENT TRACING [ID 789520.1]
SQL> exec dbms_spm.configure('spm_tracing',1);
PL/SQL procedure successfully completed
SQL> select parameter_value from SYS.SMB$CONFIG where parameter_name = 'SPM_TRACING';
PARAMETER_VALUE
---------------
1
SQL> exec dbms_spm.configure('spm_tracing',0);
PL/SQL procedure successfully completed
SQL> select parameter_value from SYS.SMB$CONFIG where parameter_name = 'SPM_TRACING';
PARAMETER_VALUE
---------------
0
или на уровне сессии:
SQL> alter session set events 'trace [sql_planmanagement.*]';
cursortrace event
событие для анализа причин повторного неиспользования курсоров, упоминается в “296377.1 Handling and resolving unshared cursors/large version_counts“
Включить трейс
SQL> alter system set events 'immediate trace name cursortrace level 577, address &hash_value'; SQL> alter system set events 'immediate trace name cursortrace level 612, address &hashvalue';
Отключить
SQL> alter system set events 'immediate trace name cursortrace level 128, address &hashvalue';
&hashvalue – значение hash_value курсора из обзора v$sql – тесты события описаны в блоге Tanya Hardy – Cursortrace event
drop_segments event
SQL> alter session set events 'immediate trace name DROP_SEGMENTS level TS#+1';
Событие для удаления временных сегментов, которые по каким-либо причинам не были удалены SMON. На практике бывает необходимо для очистки временных сегментов, оставшихся от прерванной операции создания индекса, например. Наличие таких “неочищенных” SMON’ом сегментов затрудняет создание новых объектов в ТС.
61997.1 SMON – Temporary Segment Cleanup and Free Space Coalescing
47400.1 EVENT: DROP_SEGMENTS – Forcing cleanup of TEMPORARY segments
10949 event
# "Disable autotune direct path read for full table scan" # // *Cause: # // *Action: Disable autotune direct path read for serial full table scan. # //
Начиная с Oracle 11g, позволяет отключить автоматический выбор механизма многоблочного чтения между [обычным] чтением данных через buffer cache SGA (с соотв.ожиданиями db file scattered read) и чтением блоков через PGA – serial direct read (ожидания direct path read):
SQL> alter session set events '10949 trace name context forever, level 1';
trace name treedump
Выводит внутреннюю структуру индекса по id объекта
SQL> alter session set events 'immediate trace name treedump level &object_id';
Richard Foote. Oracle B-Tree Index Internals: Rebuilding The Truth
10231 event
позволяет на уровне сессии пропускать битые блоки (corrupted blocks), выдающие ORA-01578, ORA-08103 при сканировании таблиц. Удобно для переноса уцелевших данных (в случае отсутствия бэкапа) – EVENT: 10231 “skip corrupted blocks on _table_scans_” [ID 21205.1]
SQL> ALTER SESSION SET EVENTS '10231 TRACE NAME CONTEXT FOREVER, LEVEL 10'; SQL> ALTER TABLE ... MOVE; $ oerr ORA 10231 10231, 00000, "skip corrupted blocks on _table_scans_" // *Cause: // *Action: such blocks are skipped in table scans, and listed in trace files
установить режим пропуска “плохих” блоков (skip corrupted blocks) на уровне объекта бд:
EXEC DBMS_REPAIR.SKIP_CORRUPT_BLOCKS ( SCHEMA_NAME => '&OWNER', OBJECT_NAME => '&TABLE_NAME', OBJECT_TYPE => dbms_repair.table_object, FLAGS => dbms_repair.SKIP_FLAG);
event 43905
трассировка Result Cache – Julian Dyke “Result Cache Internals”:
SQL> ALTER SESSION SET EVENTS '43905 trace name context forever, level 1';
$ oerr ora 43905 43905, 0000, "result cache tracing event" // *Document: NO // *Cause: This is an internal event. // *Action: N/A
heapdump / memory heaps dump
SQL> ALTER SESSION SET EVENTS 'immediate trace name heapdump level &level'; SQL> oradebug dump heapdump &level
| Level | Description |
| 1 | PGA summary |
| 2 | SGA summary |
| 4 | UGA summary |
| 8 | Callheap (Current) |
| 16 | Callheap (User) |
| 32 | Large pool |
| 64 | Streams pool |
| 128 | Java pool |
| 1025 | PGA with contents |
| 2050 | SGA with contents |
| 4100 | UGA with contents |
| 8200 | Callheap with contents (Current) |
| 16400 | Callheap with contents (User) |
| 32800 | Large pool with contents |
| 65600 | Streams pool with contents |
| 131200 | Java pool with contents |
shared pool heap dump / X$KSMSP – Oracle 11g
_px_trace
Трейс паралельного выполнения, как запускать и что и как нужно читать описано в Tracing Parallel Execution with _px_trace. Part I [ID 444164.1]:
SQL> alter session set “_px_trace”=[[Verbosity,]area],[[Verbosity,]area],..,[time];
примеры:
SQL> alter session set "_px_trace"=high,execution,medium,execution,time; SQL> alter session set "_px_trace"="compilation","execution","messaging"; SQL> alter session set "_px_trace"="high","execution","medium","buffer","time"; SQL> alter session set "_px_trace"="all";
параметры:
Verbosity:
high
medium
low
Area:
scheduling – ( equivalent to some of event 10384 and some of 10390)
execution – (equivalent to some of event 10390)
granule – (equivalent to some of event 10390 and some of 10391)
messaging – (equivalent to event 10392 and event 10393)
buffer – (equivalent to event 10399)
compilation – ( no equivalent event)
all – all of the above
none – none of the above.
Timing
time
events 10384
Предназначен для выполнения запроса с использованием параллельного плана выполнения в непараллельном (serial) режиме – одним процессом без использования PX slave процессов. Может быть полезен для получения консолидированной статистики / трейса выполнения запроса
Доступен, начиная с Oracle 10.2 – How to force that a Parallel Query runs in serial with the Parallel Execution Plan [ID 1114405.1]:
alter session set events '10384 trace name context forever , level 16384'; alter session set events '10384 trace name context off';
dbms_space_admin.segment_dump(&tablespace_name, &relative_fno, &header_block)
дамп блоков заголовка сегмента и bitmap-карты в USER_DUMP_DEST
dump datafile
How to dump a block within ASM [ID 280636.1] – дамп блоков бд по имени файла, по 1 блоку:
SQL> alter system dump datafile 'C:\ORADATA\ORCL112\SYSTEM01.DBF' block 288; System altered. SQL> alter system dump datafile '+DATA/orcl112/datafile/idx.259.765724117' block 2971572; System altered.
по номерам файлов бд, и по диапазонам блоков:
SQL> alter system dump datafile 85 block min 1956115 block max 1956118; System altered.
events 1652
может быть полезно для трассировки условий возникновения ORA-1652: unable to extend temp segment by 16 in tablespace TEMP
How Can Temporary Segment Usage Be Monitored Over Time? [ID 364417.1]
Trace “ORA-01652: unable to extend temp segment”
SQL> alter system set events '1652 trace name errorstack level 3'; SQL> alter system set events '1652 trace name errorstack level 12'; System altered. SQL> alter system set events '1652 trace name errorstack off';
events 10704
информация о блокировках (locks/enqueues), используемых сессией, включая время ожидания
SQL> alter session set events '10704 trace name context forever, level 10'; $ oerr ora 10704 10704, 00000, "Print out information about what enqueues are being obtained" // *Cause: When enabled, prints out arguments to calls to ksqcmi and // ksqlrl and the return values. // *Action: Level indicates details: // Level: 1-4: print out basic info for ksqlrl, ksqcmi // 5-9: also print out stuff in callbacks: ksqlac, ksqlop // 10+: also print out time for each line
events 43905
трассировка result cache Result Cache Internals – Julian Dyke
11G@SQL> ALTER SESSION SET EVENTS '43905 trace name context forever, level 1'; Session altered. 11G@SQL> ALTER SESSION SET EVENTS '43905 trace name context off';
events 10104
детали выполнения операций HASH JOIN
$ oerr ora 10104 10104, 00000, "dump hash join statistics to trace file" SQL> ALTER SESSION SET EVENTS '10104 trace name context forever, level 1'; Session altered SQL> ALTER SESSION SET EVENTS '10104 trace name context off';
уровни 1-10, к более подробному
events 10730
трассировка предикатов, добавляемых политиками VPD | RLS | FGAC, в Tracing VPD Predicates описан для диагностики ошибок типа ORA-28113: policy predicate has error
$ oerr ora 10730 10730, 00000, "trace row level security policy predicates" // *Document: NO SQL> ALTER SESSION SET events '10730 trace name context forever, level 1'; Session altered.
в трейс-файле – описание RLS view, в который преобразуется запрос к таблице/синониму:
------------------------------------------------------------- Logon user : SCOTT Synonym : SCOTT.SOME_SYN_NAME Policy name : MY_SEC Policy function: SCOTT.MY_SECURITY RLS view : SELECT ... FROM "SCOTT"."SOME_SYN_NAME" WHERE (sec_id = sys_context(... -------------------------------------------------------------
ORADEBUG утилита
ORADEBUG – UNDOCUMENTED ORACLE UTILITY – подробное описание некоторых возможностей от Miladin Modrakovic’а
_swrf_test_action
трассировка процессов MMON:
SQL> alter session set "_swrf_test_action" = 28;-- включение трейса Session altered. SQL> alter session set "_swrf_test_action" = 29;-- выключение
и snapshot flush trace (M00x процессов):
SQL> alter session set "_swrf_test_action" = 10;-- включение Session altered. SQL> alter session set "_swrf_test_action" = 11;-- выключение
Могут быть полезны, в частности, для выявления проблем с генерацией AWR снапшотов – Troubleshooting: AWR Snapshot Collection issues [ID 1301503.1]
ashdump
запись данных Active Session History системы (v$active_session_history) в файл
SQL> alter session set events 'immediate trace name ashdump level 10'; --or SQL> alter system set events 'immediate trace name ashdump level 10'; --or SQL> oradebug setmypid SQL> oradebug dump ashdump 10;
10 => кол-во минут истории для дампа
John Beresniewicz. Practical Active Session History
10g and above Active Session History (Ash) And Analysis Of Ash Online And Offline [ID 243132.1]
Как найти название трейс файла процесса Oracle?
Для собственной сессии
SQL> oradebug setmypid Statement processed. SQL> oradebug tracefile_name c:\oracle\diag\rdbms\orcl112\orcl112\trace\orcl112_ora_2076.trc
Несколько способов для любого (включая системные) процесса – из блога Laurent Schneider
1)
SQL> select p.pid from v$session s, v$process p 2 where s.paddr = p.ADDR 3 and s.program like '%LGWR%' 4 / PID ---------- 11 SQL> oradebug setorapid 11 Oracle pid: 11, Windows thread id: 5760, image: ORACLE.EXE (LGWR) SQL> oradebug tracefile_name c:\oracle\diag\rdbms\orcl112\orcl112\trace\orcl112_lgwr_5760.trc
2)
SQL> SELECT LOWER(d.name)||'_ora_'||p.spid||DECODE(p.value,'','','_'||value) tracefile_name 2 FROM v$parameter p, v$database d, sys.v_$session s, sys.v_$process p 3 ,(SELECT sid FROM v$session WHERE program like '%LGWR%') m 4 WHERE p.name = 'tracefile_identifier' 5 AND s.paddr = p.addr 6 AND s.sid = m.sid 7 / TRACEFILE_NAME -------------------------------------------------------------------------------- orcl112_ora_5760
3) начиная с версии Oracle 11g для собственной сессии
SQL> select value from v$diag_info where name='Default Trace File' 2 / VALUE ------------------------------------------------------------------ c:\oracle\diag\rdbms\orcl112\orcl112\trace\orcl112_ora_2284.trc
4) с версии Oracle 11g для любого процесса
SQL> select tracefile from v$process where pid=11; TRACEFILE ---------------------------------------------------------------- c:\oracle\diag\rdbms\orcl112\orcl112\trace\orcl112_lgwr_5760.trc
трейс паралельного выполнения
EVENT: 10262 “Do not check for memory leaks” – Reference Note [ID 21235.1]

