DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Где расположен нужный файл трассировки и как его найти?


Файл трассировки, генерируемый одним из перечисленных выше методов, можно найти в каталоге, на местонахождение которого указывает параметр инициализации 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. Приве-
денные ниже шаги помогут в определении разыскиваемого файла трассировки.
Подчеркнем, что предлагаемый метод непригоден для идентификации файлов
трассировки в среде 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 и сортирует выходные данные по убыванию "числа чтений с диска во время фазы выборки".
$tkprof prod8l5_ora_1280.trc output prf explain=benchmark/benchmark sys=no sort=fchdsk
К предпочитаемым сортировкой опциям относятся 

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, чтобы дать разработчикам возможность иметь к этим файлам трассировки доступ по чтению.
 


хорватия отдых







jAntivirus