Трассировку операторов SQL можно сравнить с отслеживанием или перехватом телефонных звонков подозреваемого. Это делается не только для того чтобы узнать все подробности переговоров, но и определить источник или место происхождения звонков, а заодно вычислить сообщников преступника.
Замечание
Важно отметить, что для повышения качества информации, собираемой утилитой трассировки, необходимо, чтобы приложение выполнялось со значимыми и релевантными данными. Если данные (полученные из результатов работы других приложений или смоделированные) нереалистичны, то настолько же нереалистичными будут и результаты трассировки. Кроме того, если предстоит работать со стоимостным оптимизатором, убедитесь в достоверности используемой статистики. Когда последний раз проводился анализ таблиц и индексов? Как много данных было с тех пор добавлено в таблицы? Допустимо ли после всего этого сегодня использовать старую статистику? Далее удостоверьтесь в том, что все релевантные (т. е. имеющие влияние на исследуемую ситуацию) параметры файла init.ora установлены должным образом. Если ваш Oracle конфигурирован в режиме MTS, выясните, выполнено ли текущее подключение (для трассировки SQL) в выделенном режиме, чтобы выход трассировки не был раскидан по различным файлам.
Трассировку операторов SQL можно делать несколькими способами. Обычно используется установка параметра SQL_TRACE на уровне сеанса. Но прежде чем начать трассировку операторов SQL, необходимо установить или модифицировать (если необходимо) следующие параметры инициализации Oracle:
• USER_DUMP_DEST =<$ORACLE_ADMIN>/<$ORACLE _SID>/udump
Применяйте для соответствия OFA эти установки. Данный параметр не может быть изменен динамически, для любого его преобразования потребуется перестартовать базу данных. Проверьте текущее значение этого параметра, чтобы определить, где размещены ваши файлы трассировки.
• TIMED_STATISTICS TRUE
Лучше установить его постоянно в файле init.ora, если только используемая версия Oracle не страдает от каких-либо
недокументированных возможностей,
связанных с постоянной установкой данных параметров. Как всегда, перед модификацией любых параметров инициализации нужно определить, не зарегистрированы ли для применяемой версии Oracle какие-то ошибки, связанные с этими параметрами. Параметр TIMEDSTATISTICS можно изменить динамически, выдав команду alter system или alter session для его установки на уровне системы или сеанса, а впоследствии выключив его. Это спасительный если у системы есть проблемы с установкой постоянного значения TIMEDSTATISTICS в файле init.ora.• MAX_DUMP_FILE_SIZE = 1024
Параметр определяет максимальный размер файлов трассировки для вашей системы. Если для трассировки вам потребуются большие файлы, можно модифицировать этот параметр на уровне сеанса, используя команду alter session и устанавливая его равным UNLIMITED, чтобы избежать риска возможного переполнения файла трассировки.
Предупреждение
Нельзя устанавливать SQLTRACE=TRUE в файле init.ora, так как будет трассироваться каждый оператор SQL. Это вызовет заметные задержки при выполнении и, кроме того, будет засорять файловую систему в том месте, на которое указывает параметр USER_DUMP_DEST, скорее всего бесполезными файлами трассировки. Мы рекомендуем сохранить установку (по умолчанию) этого параметра в файле init.ora на FALSE. Установка же его в TRU E должн а быть использована в качестве последнего шанса, когда вы окончательно убедитесь, что его не удается установить в TRUE из среды вашего приложения или любого другого сеанса.
Чтобы включить трассировку из текущего сеанса, можно выполнить следующие команды:
SQL*Plus: Release 8.1.5.0.0 - Production on Fri Nov 10 20:57:18 2000 (c) Copyright 1999 Oracle Corporation. All rights reserved. Connected to:
0racle8i Enterprise Edition Release 8.1.5.0.0 - Production With the Partitioning and Java options PL/SQL Release 8.1.5.0.0 - Production
SQL> alter session set timed_statistics=true /* Optional - Only if setting at the instance level permanently causes problems */; Session altered.
SQL> alter session sql_trace=true; Session altered.
SQL> /.Execute your SQL statements */
SQL> alter session set timed_statistics=false /* Only if it were set to true in the current session */;
Session altered.
SQL> alter session set sql_trace=false; . Session altered.
В версиях Oracle до 7.2 возникали проблемы с применением данного метода. Это было связано с тем, что для отключения опции SQL_TRACE приходилось ждать, пока закончатся все выполнявшиеся в данный момент операторы SQL. Однако в Oracle 7.2 и более поздних версиях появилась возможность отключать трассировку из другого сеанса. Рекомендуемый метод отключения трассировки
состоит в том, чтобы установить на FALSE из этого или из другого
состоит в том, чтобы установить на FALSE из этого или из другого
сеанса. Нельзя отключить трассировку, просто "убив" сеанс. Такое отключение может привести к тому, что содержимое файла трассировки будет обрезано, либо в нем запишется неверная информация.
Следующий метод иллюстрирует, как включить трассировку из сеанса какого-либо пользователя. Это бывает особенно полезно, когда имеются проблемы с производительностью для приложения, которое может поддерживать, а может и не поддерживать внутри опцию SQL_TRA.CE. Более того, данный метод также позволяет по желанию включать и выключать трассировку, не дожидаясь, пока закончится выполняющееся задание. Если необходимо, установите TIMED_ STATISTICS на TRUE таким образом:
J SQbPlus: Release 8.1.5.0.0 - Production on Fri Nov 10 21:10:38 2000 (c) Copyright 1999 Oracle Corporation. All rights reserved.
Connected to:
0racle8i Enterprise Edition Release 8.1.5.0.0 - Production
With the Partitioning and Java options PP/SQP Release 8.1.5.0.0 - Production
SQL> select Sid, Serial*
2 from V$SESSI0N
3 where Username = 'BENCHMARK' /* Determine the SID, SERIAL# of the
session that you are trying to trace from v$session /;
SID
SERIAL#
11
54
SQL> execute dbms_system. set_sql_trace._in_session(' 11', '54',TRUE): PL/SQL procedure successfully completed.
SQL> /* Wait for SQL statements to execute for a certain period */ SQP> execute dbms_system.set_sql_trace_in_session(' 11', '54',FALSE);
PL/SQL procedure successfully completed.
Очень важно
Поскольку ядром книги является настройка на базе событий ожидания, следует заметить, что запись событий ожидания для задания в файл трассировки с последующим их изучением является мощным средством диагностики главу "Метод,
стоящий за безумием").
< Предыдущая | Следующая > |
---|