![]() |
|
Программирование >> Oracle
Глава 10 Session altered. tkyte@TKYTE816> select owner, count(*) 2 from all objects 3 group by owner; OWNER COUNT(*) CTXSYS DBSNMP DEMO DEMO11 MDSYS MV USER ORDPLUGINS ORDSYS PUBLIC SCOTT SEAPARK SYSTEM TKYTE TYPES 15 rows selected. 26 206 9796 18 3 11279 51 32 3 tkyte@TKYTE816> select a.spid 2 from v$process a, v$session b 3 where a.addr = b.paddr 4 and b.audsid = userenv(sessionid) SPID 1124 Здесь я проверил, что установлен параметр TIMEDSTATISTICS (без этого устанавливать SQL TRACE практически бесполезно), а затем включил SQL TRACE. Затем я выполнил запрос, который необходимо проанализировать. Наконец, я выполнил запрос для получения идентификатора серверного процесса (SPID - server process ID) - он потребуется для идентификации соответствующего трассировочного файла. После выполнения этого запроса я завершил сеанс SQL*Plus и перешел в каталог на сервере, заданный в качестве значения параметра USER DUMP DEST в файле init.ora. Значение этого параметра можно получить по ходу сеанса с помощью запроса к представлению V$PARAMETER или утилиты DBMS UTILITY (для этого не нужен доступ к представлению V$PARAMETER): tkyte@TKYTE816> declare 2 l intval number; 3 l strval varchar2(2000) ; 4 l type number; 5 begin 6 l type := dbms utility.get parameter value 7 (user dump dest, l intval, l strval); Стратегии и средства настройки 551 8 dbms output.put line(l strval); 9 end; 10 / C:\oracle\admin\tkyte816\udump PL/SQL procedure successfully completed. В этом каталоге я обнаружил следующее: C:\oracle\ADMIN\tkyte816\udp>dir Volume in drive C has no label. Volume Serial Nnber is F4S5-B3C3 Directory of C:\oracle\ADMIN\tkyte816\udmp 03/16/2001 02:55р <DIR> 03/16/2001 02:55р <DIR> 03/16/2001 08:45а 5,114 ORA00860.TRC 03/16/2001 02:52р 3,630 ORA01112.TRC 03/16/2001 02:53р 6,183 ORA01124.TRC 3 File(s) 14,927 bytes 2 Dir(s) 13,383,999,488 bytes free Несколько трассировочных файлов - вот теперь и пригодится значение SPID. Трассировочный файл моего сеанса - ORA01124.TRC. Я знаю это, потому что значение SPID - часть имени файла. В ОС UNIX используется похожий принцип именования, т.е. в имя файла тоже входит значение SPID. Одна из проблем, связанных с трассировочными файлами, состоит в том, что они могут быть недоступны для чтения пользователям, не входящим в группу администраторов Oracle (например, в группу dba в ОС UNIX). Если они недоступны, попросите администратора базы данных установить параметр trace files public = true в файле init.ora на тестовых серверах и серверах разработчиков. Это позволит читать трассировочные файлы на сервере всем пользователям. Эту установку нельзя делать на производственном сервере, поскольку трассировочные файлы могут содержать секретную информацию. В тестовой среде или среде разработки она вполне безопасна. Обратите внимание, что имя параметра начинается с символа подчеркивания. Этот параметр не описан в документации и не поддерживается корпорацией Oracle. Как и в случае с командой EVENTS, которую мы будем использовать чуть позже, этот параметр широко известен и повсеместно используется: поищите с помощью запроса trace files public в Google или любой другой поисковой системе и вы получите много интересной информации об этом параметре. Теперь, определив свой трассировочный файл, необходимо его сформатировать. Можно читать его и непосредственно. Но около 90 процентов нужной информации легко получить из хорошо сформатированного отчета. Остальные 10 процентов информации обычно не нужны, но если она потребуется, придется получать эту информацию непосредственно из трассировочного файла. Для форматирования трассировочного файла ис- Глава 10 пользуется утилита командной строки TKPROF. В простейшем случае достаточно выполнить: C:\oracle\ADMIN\tkyte816\udump>tkprof ora01124.trc report.txt TKPROF: Release 8.1.6.0.0 - Production on Fri Mar 16 15:04:33 2001 (c) Copyright 1999 Oracle Corporation. All rights reserved. Параметрами команды TKPROF являются имена файла исходных данных и файла результатов обработки. Теперь достаточно открыть файл REPORT.TXT в текстовом редакторе, и мы увидим следующее: select owner, count(*) from all objects group by owner
11777 NESTED LOOPS 30159 FIXED TABLE FULL X$KZSRO 28971 TABLE ACCESS BY INDEX ROWID OBJAUTH$
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |