Как посмотреть план уже выполнившегося запроса : Oracle
Чтобы не дергаться с трассировкой по каждому поводу, план выполнившегося запроса можно посмотреть следующим образом:
Находите sql_id и child_number выполненного запроса по известному куску запроса.
select sql_id , child_number , sql_text from v$sql where sql_text like ‘%select r . C_BANK%’ ;
полученное подставляете в запрос вида
select * from table ( dbms_xplan . display_cursor ( ‘8tzkh2f6jv3j4’ , ‘5’ , ‘TYPICAL’ ));
8tzkh2f6jv3j4 — это у меня был sql_id, 5 — child_number
Желающим получить на выходе больше букв рекомендую вместо TYPICAL использовать ALL.
Как посмотреть план запроса в oracle sql developer
Информация о материале Автор: Сергей Жилин Категория: Вопросы и ответы Oracle Опубликовано: 11 июля 2011 Просмотров: 33633
С помощью команды EXPLAIN PLAN и пакета dbms_xplan, можно посмотреть, как будет выглядеть будущий план SQL запроса:
EXPLAIN PLAN FOR SELECT * FROM scott.emp e, scott.dept d WHERE e.deptno = d.deptno AND e.ename='benoit'; SELECT * FROM TABLE (dbms_xplan.display)
Если SQL курсор запроса уже присутствует в разделяемой области SQL, то его план выполнения можно получить с помощью процедуры display_cursor пакета dbms_xplan:
SELECT * FROM TABLE (dbms_xplan.display_cursor('fr0nvkcv4v70f'));
Значение параметра sql_id которое нужно подставлять в качестве входного, можно взять из представлений v$sqlarea и v$session. К примеру, следующий запрос выводит план текущего выполняемого курсора для определённого сеанса:
SELECT b.* FROM v$session a, TABLE(dbms_xplan.display_cursor(a.sql_id)) b WHERE a.sid = 1474;
Бывают ситуации, когда надо посмотреть план курсора SQL запроса, но в разделяемой области SQL такого курсора уже нет. Тогда можно использовать процедуру display_awr пакета dbms_xplan для того что бы отобразить этот план из AWR репозитория:
SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR(' 8zg2ht5n1jbjt'));
Получить sql_id нужного курсора в этом случае можно с помощью представления dba_hist_sqltext:
SELECT sql_id, sql_text FROM dba_hist_sqltext WHERE sql_text LIKE '%scott%'
Возможность просматривать планы SQL курсоров появилась в Oracle только в версии 10.1. Сам пакет dbms_xplan существует в Oracle, начиная с версии 9.2. Для того чтобы посмотреть план выполнения запроса в более ранних версиях Oracle, надо использовать запрос к таблице plan_table, как например, в следующем коде SQL:
DELETE FROM plan_table WHERE statement_id = 'P1'; EXPLAIN PLAN SET STATEMENT_ID = 'P1' FOR SELECT * FROM scott.emp e, scott.dept d WHERE e.deptno = d.deptno AND e.ename='benoit'; / SELECT id || ' ' || parent_id || ' ' || LPAD(' ',2 * ( LEVEL - 1 )) || operation || DECODE(other_tag,NULL,'','*') || DECODE(options, NULL, '', ' (' || options || ')') || DECODE(object_name, NULL, '', ' OF ' || object_name || '') || DECODE(object_type, NULL, '', ' (' || object_type || ')')|| DECODE(id, 0, DECODE(optimizer, NULL, '' , ' Optimizer=' || optimizer)) || DECODE(cost, NULL, '', ' (Cost=' || cost || DECODE(cardinality, NULL, '', ' Card=' || cardinality) || DECODE(bytes, NULL, '', ' Bytes=' || bytes) || ')') FROM plan_table START WITH AND statement_id = 'P1' CONNECT BY PRIOR AND statement_id = 'P1' ORDER BY id, position
Самое популярное
- Как посмотреть размер таблицы?
- Как посмотреть, когда у пользователя последний раз менялся пароль?
- Как вычислить разницу между двумя датами в соседних строках одного столбца?
- Как преобразовать TIMESTAMP в DATE?
- Как узнать, какие опции Oracle используются базой данных?
You have no rights to post comments
APPS-ORACLE.RU
PL/SQL Developer — Просмотр плана запроса в окне сессий
10 Июнь 2010 rudev Написать комментарий К комментариям
В окне сессий жмем на изображение ключа (Define Session Queris), в появившемся окне переходим на вкладку Details
SELECT lpad(' ', 2 * level) || pt.operation || ' ' || pt.options || ' ' || pt.object_name "Query Plan", pt.cost, pt.cardinality, pt.bytes, pt.cpu_cost, pt.io_cost, pt.access_predicates, pt.filter_predicates, pt.qblock_name, pt.temp_space FROM (select * from v$sql_plan where sql_id = :sql_id and child_number = :sql_child_number) pt CONNECT BY PRIOR pt.id = pt.parent_id START WITH pt.id = 0;
Похожие записи:
- MySave — Plug-in for PL/SQL Developer
- Регулярные выражения. Удаление последней буквы или цифры в строке.
- SQL Склонение количества ошибок
- Удаление управляющих символов из строки
- Список параметров процедуры SQL запросом
Categories: Others Tags: explain plan, PL/SQL Developer, plan, SQL, план, план запроса
Анализ запроса SQL
Для любого источника данных, который создается с использованием инструкции SQL для внутреннего представления, можно просмотреть план, анализ и результат.
Щелкните значок рядом с именем источника данных, в раскрывающемся меню выберите пункт «Свойства» и выберите ссылку Щелкните здесь на странице свойств.
План и анализ предназначены для использования специалистами по базам данных Oracle. Результаты позволяют узнать о возможном влиянии запроса на базу данных на основании размера таблицы и наличия индекса.
Для получения помощи по этой функции обратитесь к менеджеру учетной записи Responsys.
- About Oracle
- Legal Notices
- Terms of Use
- Your Privacy Rights
