Выборка из V$SQL_PLAN

eml78
Дата: 06.06.2006 12:35:09
Как выбрать все планы из V$SQL_PLAN так чтобы планы были упорядочены в соответсвии с их иерархической структурой. Я пытался использовать connect by но видно опыта не хватает, т.е. как выбрать упорядоченный план для одного конкретного запроса я знаю, а вот как выбрать сразу для нескольких/(для всех)?
Elic
Дата: 06.06.2006 13:04:18
eml78
Как выбрать все планы из V$SQL_PLAN так чтобы планы были упорядочены в соответсвии с их иерархической структурой. Я пытался использовать connect by но видно опыта не хватает, т.е. как выбрать упорядоченный план для одного конкретного запроса я знаю, а вот как выбрать сразу для нескольких/(для всех)?
STFF Древовидный запрос на v$sql_plan не работает
RTFM ORDER SIBLINGS BY (FAQ)
eml78
Дата: 06.06.2006 14:36:26
to Elic доку я читал, и запрос писать пробовал, только он зависал, сегодня попробовал еще и вот выполнилось. Всего есть три запроса с child_number=5 (в таблице планов им соотв. 11 строк) такой запрос работал 30 сек. А если бы их было не 3 а 30? В чем причина таких тормозов?
select * from 
  (select * from v$sql_plan x where child_number=5)
start with id=0
connect by prior id=parent_id
  and prior ADDRESS=ADDRESS
  and prior HASH_VALUE=HASH_VALUE
  and prior child_number=child_number
ORDER SIBLINGS BY POSITION
eml78
Дата: 06.06.2006 17:53:02
Я вот тут смотрю на планы и вижу что ID однозначно задает порядок и никакие connect by не нужны (достаточно order by ID). Или все-таки бывают какие-то случаи когда порядок ID не соответствует порядку в дереве?
Peter Bobrov
Дата: 06.06.2006 18:04:54
Я пользуюсь обходным путём, мне так привычнее форматировано :)

INSERT INTO plan_table
            (STATEMENT_ID, 
             TIMESTAMP, remarks, 
             operation, options, object_node, object_owner, object_name, object_instance,
             object_type, 
             optimizer, search_columns, 
             ID, parent_id, POSITION, COST, cardinality, BYTES, other_tag, 
             partition_start, partition_stop, partition_id, other, distribution, 
             cpu_cost, io_cost, temp_space, access_predicates, filter_predicates)
SELECT   /*address,*/ hash_value ||':' || child_number || ':V$SQL_PLAN' STATEMENT_ID, 
            sysdate TIMESTAMP, null remarks, 
            operation, options, object_node, /*object#,*/ object_owner, object_name, NULL object_instance,
            null object_type,
            optimizer, search_columns, 
            ID, parent_id, /*DEPTH,*/ POSITION, COST, cardinality, BYTES, other_tag,
            partition_start, partition_stop, partition_id, other, distribution,
            cpu_cost, io_cost, temp_space, access_predicates, filter_predicates
     FROM SYS.v_$sql_plan 
     where hash_value = &1 and child_number = &2
/
SELECT * FROM TABLE(DBMS_XPLAN.display('PLAN_TABLE', '&1:&2:V$SQL_PLAN','ALL'))
/
eml78
Дата: 06.06.2006 18:33:38
Peter Bobrov
Я пользуюсь обходным путём, мне так привычнее форматировано :)
Это конечно здорово, но хотелось бы это вывести в html-файл (типа ловим и сохраняем планы для тяжелых запросов, а клиенты их нам потом высылают). Поэтому и нужен файл простого формата, во-первых они видят что мы у них берем (нет проблем с безопасностью), во-вторых один файл даже не самый грамотный админ выслать сможет.