Программирование >>  Oracle 

1 2 3 4 [ 5 ] 6 7 8 ... 469


column global name new value gname

set termout off

select lower(user) 8

decode(global name, ORACLE8.WORLD, 8.0, ORA8I.WORLD, 8i , global name) global name from global name; set sqlprompt &gname> set termout on

В этом сценарии:

DEFINE EDITOR=vi устанавливается стандартный редактор для SQL*Plus. Можете задать свой любимый текстовый редактор (но не текстовый процессор), например Notepad или emacs.

SET SERVEROUTPUT ON SIZE 1000000 включает по умолчанию поддержку пакета DBMS OUTPUT (чтобы не нужно было набирать эту команду каждый раз). Устанавливает также максимально возможный размер буфера.

SET TRIMSPOOL ON гарантирует, что в выдаваемом тексте хвостовые пробелы будут отсекаться. Если используется стандартное значение этой установки, OFF, выдаваемые строки будут иметь длину LINESIZE.

SET LONG 5000 устанавливает стандартное количество байт, в]даваем1х при выборе столбцов типа LONG и CLOB.

SET LINESIZE 100 устанавливает длину втдаваемой утилитой SQL*Plus строки равной 100 символам.

SET PAGESIZE 9999 задает значение PAGESIZE, определяющее, как часто утилита SQL*Plus выдает заголовки, настолько большим, чтобы на странице было не более одного заголовка.

COLUMN PLAN PLUS EXP FORMAT A80 устанавливает формат для результатов выполнения оператора EXPLAIN PLAN, получаемых при установке опции AUTOTRACE. Формат А80 (ширина - 80 символов) обычно достаточен для представления большинства планов.

Следующая часть сценария login.sql задает приглашение SQL*Plus. Она начинается со строки:

column global name new value gname

Эта директива заставляет утилиту SQL*Plus помещать последнее значение, извлеченное из любого столбца с именем GLOBAL NAME, в переменную подстановки GNAME. Затем выполняется следующий запрос:

select lower(user) @

decode(global name, ORACLE8.WORLD, 8.0, OEA8I.WORLD, 8i, global name) global name from global name;

Он выбирает из базы данных значение GLOBAL NAME, используя функцию DECODE для присваивания требуемых имен одному или нескольким обычно используемым экземплярам, а затем конкатенирует его с именем текущего пользователя. Наконец, мы отображаем эту информацию в приглашении SQL*Plus:

set sqlprompt &gname>



Поэтому приглашение будет иметь вид: tkyte@TKYTE816>

Таким образом, я знаю, кто я и где я. Еще один очень полезный сценарий, который можно поместить в тот же каталог, что и login.sql, - это сценарий connect.sql:

set termout off connect &1 Slogan

set termout on

Утилита SQL*Plus будет выполнять сценарий login.sql при начальном запуске. В общем случае он должен выполняться при каждом подключении. Я просто завел себе привычку использовать команду:

tkyte@TKYTE816> @connect scott/tiger,

а не просто CONNECT SCO/TIGER. В результате мое приглашение всегда устанавливается должным образом, как и другие установки, такие как SERVEROUTPUT.

Настройка AUTOTRACE в SQL*Plus

По ходу всей книги эта установка пригодится нам для контроля производительности выполняемых запросов и получения информации о плане выполнения запроса, выбранном оптимизатором SQL, и другой полезной статистической информации о ходе выполнения. Oracle предлагает средство EXPLAIN PLAN, которое при использовании команды EXPLAIN PLAN позволяет генерировать план выполнения запроса.

Подробнее об интерпретации результатов выполнения EXPLAIN PLAN см. в руководстве OracteSiDesigningandTuningforPerformance .

Однако утилита SQL*Plus предлагает средство AUTOTRACE, позволяющее получать планы выполнения обрабатываемых запросов, а также информацию об используемых ресурсах, без выполнения команды EXPLAIN PLAN. Соответствующий отчет генерируется после успешного выполнения операторов ЯМД (т.е. SELECT, DELETE, UPDATE и INSERT). В этой книге это средство широко используется. Средство AUTOTRACE можно настроить несколькими способами. Я практикую следующую последовательность действий:

перехожу в каталог [ORACLE HOME]/rdbms/admin;

регистрируюсь в SQL*Plus от имени SYSTEM;

запускаю сценарий @utlxplan;

выполняю оператор CREATE PUBLIC SYNONYM PLAN TABLE FOR PLAN TABLE;

выполняю оператор GRANT ALL ON PLAN TABLE TO PUBLIC.

Если хотите, можете заменить GRANT ... ТО PUBLIC оператором GRANT для конкретного пользователя. Предоставляя привилегию роли PUBLIC, вы фактически разрешаете трассировать операторы в SQL*Pius любому пользователю. По-моему это непло-



хо - пользователи могут не устанавливать собственные таблицы планов. Альтернатива этому - запуск сценария @UTLXPLAN в каждой схеме, где необходимо использовать средство AUTOTRACE.

Следующий шаг - создание и предоставление всем роли PLUSTRACE:

переходим в каталог [ORACLE HOME]/sqlplus/admin;

регистрируемся в SQL*Plus от имени SYS;

запускаем сценарий @plustrce;

выполняем оператор GRANT PLUSTRACE TO PUBLIC.

И в этом случае, если хотите, можете заменить PUBLIC в операторе GRANT именем конкретного пользователя.

Управление отчетом о плане выполнения

Управлять информацией, выдаваемой в отчете о плане выполнения, можно с помощью установки системной переменной AUTOTRACE.

8 AUTOTRACE OFF

AUTOTRACE ON EXPIN

8 AUTOTRACE ON STATISTICS

SET AUTOTRACE ON

AUTOTRACE TRACEONLY

Отчет AUTOTRACE не генерируется. Так происходит по умолчанию.

В отчете AUTOTRACE показывается только выбранный оптимизатором план.

В отчете AUTOTRACE показывается только статистическая информация о выполнении оператора SQL

В отчет AUTOTRACE включается как выбранный оптимизатором план, так и статистическая информация о выполнении оператора SQL.

Аналогично AUTOTRACE ON, но подавляет выдачу результатов выполнения запроса.

Интерпретация плана выполнения запроса

План выполнения отражает выбранный оптимизатором способ выполнения запроса. Каждая строка плана выполнения имеет порядковый номер. Утилита SQL*Plus также выдает номер строки родительской операции.

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

Имя столбца ID PLUS EXP PARENT ID PLUS EXP

PN PLUS EXP OBJECT NODE PLUS EXP

Описание

Показывает порядковый номер шага выполнения

Показывает для каждого шага родительский шаг. Этот столбец полезен в больших отчетах.

Показывает описание шага выполнения.

Показывает использованные базы данных или серверы для параллельного запроса.

2 Зак 68



1 2 3 4 [ 5 ] 6 7 8 ... 469

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика