#sql #oracle
Как я понимаю, Oracle не имеет многих вещей к которым я привык при работе с MS SQL Server и имеются "из коробки"...=( Чем можно визуализировать планы выполнения запросов, что бы было так же удобно, как и в MS SQL Management Studio? В приоритете бесплатные, а потом уже платные решения.
Ответы
Ответ 1
В дополнение к ответу от @MaxU. Реальный план выполнения запроса может отличаться от того, который предоставляет explain plan. Обычно, если я хочу посмотреть план выполняемого запроса, то сначала я получаю sql id(выглядит примерно так ds9njzundv6k0) нужного мне запроса. select s.sql_id, s.* from v$session s Дальше в зависимости от настроения есть несколько способов посмотреть план: 1 -В текстовом виде: SELECT * FROM TABLE (dbms_xplan.display_cursor('ds9njzundv6k0')); Результат будет представлен в текстовом виде: SQL_ID 9ya87b6a04kc3, child number 0 ------------------------------------- select s.sql_id, s.* from v$session s Plan hash value: 644658511 ---------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ---------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 1 (100)| | 1 | NESTED LOOPS | | 1 | 1379 | 0 (0)| | 2 | NESTED LOOPS | | 1 | 1170 | 0 (0)| |* 3 | FIXED TABLE FULL | X$KSUSE | 1 | 1009 | 0 (0)| |* 4 | FIXED TABLE FIXED INDEX| X$KSLWT (ind:1) | 1 | 161 | 0 (0)| |* 5 | FIXED TABLE FIXED INDEX | X$KSLED (ind:2) | 1 | 209 | 0 (0)| ---------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 3 - filter(("S"."INST_ID"=USERENV('INSTANCE') AND BITAND("S"."KSSPAFLG",1)<>0 AND BITAND("S"."KSUSEFLG",1)<>0)) 4 - filter("S"."INDX"="W"."KSLWTSID") 2 - В виде HTML(вариант 1): select dbms_sqltune.report_sql_monitor( sql_id => '9ya87b6a04kc3', type => 'HTML', report_level => 'ALL + PLAN') as report from dual; В результате вернется clob поле содержащее HTML файл, который можно открыть в браузере 3 - в виде HTML(вариант 2 с использованием Flash Player): select dbms_sqltune.report_sql_detail( sql_id => '9ya87b6a04kc3', type => 'ACTIVE', report_level => 'ALL+XPLAN' ) as report from dual; В результате вернется clob содержащее HTML страничку и использующее флеш плеер, что дает чуть более интерактивное отображение. В этом варианте на 1 из кнопочек можно увидеть графический план, на котором можно подергать мышкой. или в более традиционном для Oracle стиле PS Способы 2 и 3 используются для построения интерфейса в Enterprise Manager, возможно там есть какие то тонкости с лицензированием. Поигравшись с параметром report_level можно получить различные результаты.Ответ 2
sqlplus от Oracle предоставляет отличную возможность увидеть подробный план выполнения запроса в табличном виде (в виде текста): set linesize 200 pages 3000 explain plan for; select * from table(dbms_xplan.display); Также можно посмотреть в бесплатном Oracle SQL Developer, нажав F10 или кнопку "Explain Plan"
Комментариев нет:
Отправить комментарий