- Este tópico contém 3 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 9 meses atrás por
Rodrigo Mesquita.
-
AutorPosts
-
19 de junho de 2009 às 7:22 am #87354
AleCris
ParticipanteOlás!
preciso exibir na tela de um programa o plano de execução de uma consulta sql. Para tanto pensei em dar um select na tabela PLAN_TABLE. Quais campos desta tabelas são equivalentes ao resultado exibido no sqlplus quando executo set autotrace on?
19 de junho de 2009 às 5:52 pm #87359vieri
Participantecoloquei um trace no meu auto-trace sqlplus e o resultado é este das
consultas para visulizar o plano.SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY(:”SYS_B_0″, :1))END OF STMT
PARSE #1:c=0,e=116,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1216229768044246
EXEC #1:c=0,e=24,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1216229768044309
=====================
PARSING IN CURSOR #10 len=146 dep=1 uid=0 oct=3 lid=0 tim=1216229768044692 hv=1143412014 ad=’65ce19b8′
[color=blue]select /*+ opt_param(‘parallel_execution_enabled’,
‘false’) EXEC_FROM_DBMS_XPLAN */ * from PLAN_TABLE where 1=0[/color]
END OF STMT
PARSE #10:c=0,e=26,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,tim=1216229768044689
EXEC #10:c=0,e=21,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,tim=1216229768044770
STAT #10 id=1 cnt=0 pid=0 pos=1 obj=0 op=’FILTER (cr=0 pr=0 pw=0 time=3 us)’
STAT #10 id=2 cnt=0 pid=1 pos=1 obj=162242 op=’TABLE ACCESS FULL PLAN_TABLE (cr=0 pr=0 pw=0 time=0 us)’
=====================
PARSING IN CURSOR #9 len=749 dep=1 uid=0 oct=3 lid=0 tim=1216229768045163 hv=925920731 ad=’19d6bf10′
[size=4][color=darkblue]SELECT /*+ opt_param(‘parallel_execution_enabled’, ‘false’) */
/* EXEC_FROM_DBMS_XPLAN */ id, position, depth, operation, options, object_name, cardinality, bytes, temp_space, cost, io_cost, cpu_cost , time, partition_start, partition_stop, object_node, other_tag, distribution, projection, access_predicates, filter_predicates , other, qblock_name, object_alias, nvl(other_xml, remarks), null, null, null, null, null, null, null,
null, null, null, null, null,
null, null, null, null from PLAN_TABLE where plan_id = (select max(plan_id)
from PLAN_TABLE where id=0 and statement_id = :stmt_id)
order by id[/color][/size]19 de junho de 2009 às 5:57 pm #87360David Siqueira
ParticipanteOpa!!!..
Já tentou usar o resultado exibido pela DBMS_XPLAN.DISPLAY?
Pode ser interessante.Ats.
David
22 de junho de 2009 às 3:45 pm #87412Rodrigo Mesquita
ParticipanteEu criei um arquivo .bat que exibe o resultado da plan table abrindo um txt.
criei um arquivo planexec.sql com o conteudo abaixo
Set LINESIZE 30000
SELECT * FROM
TABLE(DBMS_XPLAN.DISPLAY(‘PLAN_TABLE’,’TSH’,’ALL’));
Exitdepois um arquivo .bat com o conteudo abaixo
@echo off
cd
SQLPLUS usuario/senha@banco @planexec.sql > planexec.TXT
START planexec.TXTno final ele abre o notepad com o plano de execução.
-
AutorPosts
- Você deve fazer login para responder a este tópico.