> For the complete documentation index, see [llms.txt](https://unisim-soft.gitbook.io/unisim-soft/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unisim-soft.gitbook.io/unisim-soft/administrirovanie/trassirovka.md).

# Трассировка

### 1. Определить sid и serial# нужной сессии

Используйте представление v$session, чтобы найти значения sid и serial# нужной сессии.

### 2. Включить трассировку для сессии

Выполните PL/SQL-блок, подставив найденные sid и serial#:

{% code title="Включение трассировки (пример)" %}

```sql
begin
  dbms_system.set_ev(sid, serial#, 10046, 12, '');
end;
/
```

{% endcode %}

### 3. Выполнить проблемное действие в приложении

Запустите операцию, которая вызывает проблему.

### 4. Дождаться окончания работы и закрыть сессию

После завершения работы в приложении обязательно закрыть программу (завершить сессию).\
Если сессию не завершить, часть ценной информации может не попасть в трейс-файл.

### 5. Проверить, сформировался ли трейс-файл в папке udump

Найти путь к udump можно так:

```sql
select value from v$parameter where name='user_dump_dest';
```

Трэйс должен содержать строку вида:

\*\*\* SESSION ID:(sid.serial#) <дата и время>

где sid и serial# — значения из шага 1.

Если трейс не сформировался — повторите процедуру (возможно неверно идентифицирована сессия).

### 6. Обработать полученный файл при помощи tkprof

Нужно получить 4 файла, обработанных tkprof:

* без сортировки
* с sort=prsela
* с sort=exeela
* с sort=fchela

Пример (имя файла трассировки — catalog\_ora\_2384.trc). При каждом вызове указывайте новое имя выходного файла, чтобы не перезаписать предыдущие результаты. Удобно добавлять суффикс с первой буквой параметра сортировки.

Вызовы tkprof:

{% code title="Примеры вызовов tkprof" %}

```
```

{% endcode %}

1\) tkprof catalog\_ora\_2384.trc catalog\_ora\_2384.out sys=no

2. tkprof catalog\_ora\_2384.trc catalog\_ora\_2384\_p.out sys=no sort=prsela
3. tkprof catalog\_ora\_2384.trc catalog\_ora\_2384\_e.out sys=no sort=exeela
4. tkprof catalog\_ora\_2384.trc catalog\_ora\_2384\_f.out sys=no sort=fchela

````
{% endcode %}

Для дальнейшего анализа нужны все полученные на выходе tkprof файлы и сам файл трассировки (.trc).
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Дополнительная информация: http://www.sql.ru/faq/faq_topic.aspx?fid=389
{% endhint %}

{% hint style="warning" %}
Если трейс не формируется:
- Возможно, была некорректно идентифицирована нужная сессия — проверьте sid и serial# ещё раз.
- Повторите процедуру включения трассировки и выполнения проблемного действия.
{% endhint %}

<details>
<summary>Как изменить путь к user_dump_dest</summary>

Например, можно временно изменить путь так:

{% code %}
```sql
alter system set user_dump_dest = '\\Work-fc67b62689\Shares\dump_test';
````

### Советы по анализу tkprof / трейс-файла

* Анализируйте максимальный elapsed (время выполнения).
* Обращайте внимание на: количество чтений (physical/logical), время, количество обработанных строк, методы доступа (access methods), способы соединения (join methods) и т.д.

### Полезные ссылки / ресурсы

* Локальный путь/документы: \orasvr\docs\Dima\Sorted\Oracle & SQL\К.Миллсап, Д.Хольт - Oracle. Оптимизация призводительности.pdf
