Oracle mechanics

Trace events

Трейсы, дампы, сигналы

Список ошибок 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';

Jonathan Lewis blog: treedump

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

Уровни для Oracle 10.2.0.1:

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]

Добавить комментарий »

Комментариев нет.

RSS-лента комментариев к этой записи. URI для обратной ссылки

Добавить комментарий

Fill in your details below or click an icon to log in:

Логотип WordPress.com

You are commenting using your WordPress.com account. Log Out / Изменить )

Фотография Twitter

You are commenting using your Twitter account. Log Out / Изменить )

Фотография Facebook

You are commenting using your Facebook account. Log Out / Изменить )

Connecting to %s

Тема: Rubric. Блог на WordPress.com.

Follow

Get every new post delivered to your Inbox.