воскресенье, 27 марта 2016 г.

Трассировка работающей сессии

В Oracle у DBA есть возможность включить трассировку для уже работающей сессии.
Например, так:

DBMS_SYSTEM.set_sql_trace_in_session(sid=>123, serial#=>1234, sql_trace=>TRUE);

В результате на сервере появится файл, который можно будет проанализировать.

В PostgreSQL для трассировки уже работающих сессий можно использовать следующий подход.
Для трассировки используются различные конфигурационные параметры, возьмем к примеру log_statement_stats.
Чтобы включить трассировку нужно знать <PID> серверного процесса, к которому нужно подключиться, и выполнить следующие действия:
1. ALTER SYSTEM SET log_statement_stats TO on;
2. Как известно ALTER SYSTEM лишь записывает параметр в postgresql.auto.conf,
но не применяет изменения. Для применения нужно перечитать конфигурацию.
Но перечитать нужно только в серверном процессе, который отлаживаем.
Поэтому вместо утилиты pg_ctl reload и функции pg_reload_conf() используем:
kill -s HUP <PID>
Статистика по всем командам только этого серверного процесса начинает записываться в журнал сервера.
3. Удалим log_statement_stats из postgresql.auto.conf
ALTER SYSTEM RESET log_statement_stats;

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