Файл трассировки, генерируемый одним из перечисленных выше методов, можно найти в каталоге, на местонахождение которого указывает параметр инициализации Oracle USER_DUMP_DEST. Если неизвестно, где располагается этот каталог, можно выполнить следующий запрос и определить адрес назначения:
SQL-Plus: Release 8.1.5.0.0 - Production on Fri 10 21:19:41 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> select Value
from V$PARAMETER
where Name = ' user_dump_desf /* Determine the destination of USER_DUMP_DEST */;
VALUE
/u01/app/oracle/admin/prod815/udump
Для названий файлов трассировки используется формат <$ORACLE_SID>_ora_<ID процесса на серверо. Упомянутый здесь ID процесса - это столбец Spid представления V$SESSION. Следующий запрос поможет при определении ID процесса на сервере, к которому подключился пользователь с именем
Q select S.Username, P. Spid, S, Program from V$SESSION S, V$PROCESS P
where S.PADDR = P.ADDR
and S.Username = 'ST00V;
Если, используя приведенный выше метод, не удается определить ID процес-
ca сервера/сеанса (потому что есть несколько сеансов, включая и данный, кото-
рые зарегистрированы с тем же самым именем в случае, если мы
работаем в среде UNIX, имеется еще один способ отыскания файла трассиров-
ки. Этот метод не слишком элегантен и является релевантным только для при-
(пользовательских запущенных с того сервера, на
котором выполняется база данных Oracle. Более того, все сказанное далее будет
справедливо только для приложений, поддерживающих команду host. Приве-
денные ниже шаги помогут в определении разыскиваемого файла трассировки.
ca сервера/сеанса (потому что есть несколько сеансов, включая и данный, кото-
рые зарегистрированы с тем же самым именем в случае, если мы
работаем в среде UNIX, имеется еще один способ отыскания файла трассиров-
ки. Этот метод не слишком элегантен и является релевантным только для при-
(пользовательских запущенных с того сервера, на
котором выполняется база данных Oracle. Более того, все сказанное далее будет
справедливо только для приложений, поддерживающих команду host. Приве-
денные ниже шаги помогут в определении разыскиваемого файла трассировки.
Подчеркнем, что предлагаемый метод непригоден для идентификации файлов
трассировки в среде Windows NT.
О SQL>! Host out of SQbPlus, Do not exit
/* Determine the processes within your current shell. This is to determine the process ID of your SQL*Plus session */
1262 pts/2 0:00 tcsh
1279 pts/2 0:03 sqlplus
1327 pts/2 0:00 ksh $ps -ef | grep 1279 /* Now scan all processes on the system and filter out the ones with your SQL*Plus's process ID. This is to determine the process ID of the server process that this SOL*Plus session is attached to */
oracle 1280 1279 0 21:41:00 ? 0:12 oracleprod815 (DESCRIPTION=aOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 1279 1262 0 pts/2 0:03 sqlplus
oracle 1327 1279 0 22:38:57 pts/2 0:00 /bin/ksh
\
$cd /u01/app/oracle/admin/prod815/udump /* Change directory to the USER_DUMP_DESTdirectory*/
$ls | grep 1280 total 816
-rw-ree 1 oracle dba 408548 Nov 10 21:04 prod815_ora_1280.trc
Выполнение tkprof для файлов трассировки
Следующий шаг процесса настройки SQL - выполнение утилиты
tkprof,
анализирующей и разбивающей файлы трассировки для придания выходным данным более читабельного вида, в котором они будут более понятны АБД Oracle. Чтобы ближе познакомиться сtkprof,
можно выполнить эту команду без аргументов, тогда мы увидим синтаксис и все опции сортировки для отображения выходных данных трассировки. Вот как это выглядит:C:\tkprof
Usage: tkprof tracefile outputfile [explain= ] [table= ]
[print= ] [insert= ] [sys= ] [sort= ] table=schema.tablename Use 'schema.tablename' with 'explain^ option.
explain=user/password Connect to ORACLE and issue EXPLAIN PLAN.
print=integer List only the first 'integer' SQL statements. aggregate=yes|no
List SQL statements and data inside INSERT statements.
sys=no TKPROF does not list SQL statements run
as
user SYS.record=filename Record non-recursive statements found in the trace file,
sort=option Set of zero or more of the following sort options: prscnt number of times parse was called prscpu cpu time parsing
prsela elapsed time parsing
prsdsk number of disk reads during parse
prsqry number of buffers for consistent read during parse
prscu number of buffers for current read during parse prsmis number of misses in library cache during parse execnt number of execute was called
execpu cpu time spent executing exeela elapsed time executing exedsk number of disk reads during execute
exeqr-y number of buffers for consistent read during execute ■
execu number of buffers for current read during execute exerow number of rows processed during execute exemis number of library cache misses during execute fchcnt number of times fetch was called fchcpu cpu time spent fetching fchela elapsed time fetching fchdsk number of disk reads during fetch fchqry number of buffers for consistent read during fetch fchcu number of buffers for current read during fetch fchrow number of rows fetched userid userid of user that parsed the cursor
Как можно заметить, имеется много опций, доступных для сортировки выходных данных трассировки, которая выполняется при указании sort=<opti-оп> в командной строке. Опция сортировки имеет по умолчанию значение
fchela-
время, потраченное на выборку. Известно, что выходные данные трассировки сортируются по убыванию или по возрастанию величин значенийданной опции.
Если желательно, чтобы план выполнения был отображен как часть выходных данных сортировки, необходимо убедиться, что идентификатор пользователя userid, который вы специфицировали для выполнения Explain Plan в
tkprof,
является владельцем таблицы PLANJEABLE для своей схемы. При отсутствии в схеме пользователя этой таблицы необходимо перед выполнением tkpro/запус-тить от имени пользователя сценарийutlxplan.sql,
который размещается в каталоге $ORACLE_HOME/rdbms/admin.Ниже приведен пример прогона
tkprof,
в котором интерпретируются данные трассировки, собранные в файл сименем
prod815_ora_1280.trс.
В этом прогонеtkprof
создает выходной файл трассировки с именемoutput.рг,
применяет пользователя с именемbenchmark
и паролемbenchmark,
не показывает выходные данные операторов SQL пользователя SYS и сортирует выходные данные по убыванию "числа чтений с диска во время фазы выборки".J $tkprof prod8l5_ora_1280.trc output prf explain=benchmark/benchmark sys=no sort=fchdsk
К предпочитаемым сортировкой опциям относятся
как затраченное время - это реальное время, необходимое для выполнения рас-
сматриваемой фазы обработки оператора SQL. Лично мы чаще всего использу-
ем
большинства операторов SQL обычно не являются проблемными областями.
Большая часть работы в операторе
почему опция
тех операторов SQL, которые занимаются модификацией данных
UPDATE и DELETE),
хотим, чтобы операторы были упорядочены по общему использованию ЦП,
нужно использовать опцию сортировки в виде Анало-
prsela, excela и/ске'м,
таккак затраченное время - это реальное время, необходимое для выполнения рас-
сматриваемой фазы обработки оператора SQL. Лично мы чаще всего использу-
ем
критерий/chela,
поскольку фазы синтаксического анализа и выполнения длябольшинства операторов SQL обычно не являются проблемными областями.
Большая часть работы в операторе
select
выполняется на стадии выборки, вотпочему опция
fchela
является наиболее релевантной для операторовselect.
Длятех операторов SQL, которые занимаются модификацией данных
UPDATE и DELETE),
exeela
является наиболее жизнеспособной опцией. Если мыхотим, чтобы операторы были упорядочены по общему использованию ЦП,
нужно использовать опцию сортировки в виде Анало-
гичный выход можно получить для суммарного физического ввода/вывода (операций ввода/вывода, которым не удалось найти требующихся Oracle блоков в буферном кэше базы данных), применяя для этого сортировку вида sort=(prsdsk,exedsk,fchdsk).
Общее число логического ввода/вывода (операции ввода/вывода, которые нашли требующиеся Oracle блоки в буферном кэше базы данных) можно получить, указав sort^prsqiy.prscu.exeqiy.execu.fchqryTchcu) Важно понимать, что сортировка по логическому вводу/выводу является более согласованным методом, так как физический ввод/вывод может изменяться по различным причинам, скажем, из-за увеличения размера буферного кэша базы данных. Логический ввод/вывод предлагает возможность сравнить, как много экономится времени ЦП при условии, что логический ввод/вывод (манипуляции с буферным кэшем базы данных) потребляет циклы ЦП.
Замечание
Для того чтобы выполнить
tkprof
и получить требующийся доступ к файлам трассировки, АБД должен иметь возможность зарегистрироваться как пользователь операционной системы с именем oracle. Но еслиtkprof
требуется выполнить одному из разработчиков приложений (кому не полагается регистрироваться под именем oracle), то придется установить параметр файла init.ora_TRACE_FILES_PUBL!C=TRUE, чтобы дать разработчикам возможность иметь к этим файлам трассировки доступ по чтению.< Предыдущая | Следующая > |
---|