AUTOTRACE - это, может быть, один из наиболее тщательно скрываемых секретов SQI?Plus. Данное средство стало доступным в SQI?Plus 2.3, и оно буквально вкладывает вам в руки замечательную информацию, позволяющую отказаться от прогона SQL_TRACE, обработки его выходной информации с помощью tkprof, очистки файлов трассировки и управления ими, а также от выполнения других административных действий, которые можно считать накладными расходами, связанными с этими операциями. Получить утилиту AUTOTRACE очень легко, а использовать ее еще легче.
Для создания AUTOTRACE необходимо запустить сценарий
plustrce.sql,
который размещен в каталоге $ORACLE_HOME/sqlplus/admin. Для версий Oracle, появившихся до 8.1.0 на платформе Windows NT, этот сценарий следует искать в каталоге plusXX. В некоторых выпусках файлplustrce.sql
(к нашему удивлению) можно найти в каталоге $ORACLE_HOME/dbms.Чтобы создать пользователя для AUTOTRACE, просто зарегистрируйтесь как SYS, а затем запустите вышеупомянутый сценарий. Наряду с другими объектами он создает роль по имени PLUSTRACE. Все, что вам нужно сделать после завершения выполнения сценария, это предоставить полномочия роли PLUSTRACE всем релевантным пользователям и подготовить их к использованию AUTOTRACE.
Замечание Поскольку AUTOTRACE автоматически генерирует Explain Plan одного или нескольких операторов SQL для указанного пользователя, таблица PLAN_TABLEb схеме пользователя должна быть создана еще до попыток применения AUTOTRACE. Если это не так, от имени запустившего AUTOTRACE пользователя выполните сценарий utlxplan.sql, который хранится в каталоге $ORACLE_HOME/rdbms/admin.
Хотя применяемым по умолчанию методом использования AUTOTRACE яв-
ляется команда set autotrace on, выполнить эту команду удается не всегда, осо-
бенно, если запрос возвращает сотни тысяч строк. Опция позволяет
взглянуть только на статистику запроса, без его данных.
ляется команда set autotrace on, выполнить эту команду удается не всегда, осо-
бенно, если запрос возвращает сотни тысяч строк. Опция позволяет
взглянуть только на статистику запроса, без его данных.
Совет
Опцию traceonly можно также использовать как очень быстрый метод получения Explain Plan для оператора SQL. Это справедливо, когда AUTOTRACE включается на клиентской машине из версии SQL*Plus для Windows, и как только появляется окно диалога "Query is Executing", нажмите на кнопку Cancel и получите Explain Plan.
Ниже приведен пример прогона AUTOTRACE:
О SQL> set autotrace traceonly
SQL> select count (*) from TEST_OBJECTS;
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1)
0 SORT (AGGREGATE)
1 TABLE ACCESS (FULL) OF 'TEST_OBJECTS' (Cost=l Card=1) Statistics
28 recursive calls 16 db block gets
2 consistent gets
0 physical reads
0 redo size
1083 bytes sent via SQL*Net to client
669 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
4 SQL*Net roundtrips to/from client
1 sorts (memory)
sorts (disk)
rows processed
Как видно из этих выходных данных, AUTOTRACE предлагает множество информации, в том числе количество рекурсивных вызовов, общее число логических операций ввода/вывода для оператора SQL, физический ввод/вывод, количество генерированных блоков обновлений (если необходимо), сведения о трафике SQL, статистики сортировки (сортировки в памяти против дисковых сортировок) и общее число обработанных строк.
Замечание
Как упоминалось в начале главы, необходимо присвоить приоритеты усилиям по настройке на основании потребляемых ресурсов и частоты выполнения операторов SQL в системе. Например, если за период продолжительностью в 24 час 100 операторов SQL в совокупности производят 2 млн операций логического ввода/вывода, а один запрос делает 1 млн операций логического ввода/вывода всего за одно свое выполнение, нужно ли фокусировать свои усилия именно на этом запросе. Да, потому что данный запрос составляет всего 1 % от рабочей нагрузки, но при этом потребляет 50% ресурсов. Такую информацию можно получить, сделав запрос kV$SQL относительно Buffer_Gets и Executions.
< Предыдущая | Следующая > |
---|