Pular para o conteúdo
  • Este tópico contém 3 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 9 meses atrás por Rodrigo Mesquita.
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #87354
    AleCris
    Participante

      Olá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?

      #87359
      vieri
      Participante

        coloquei 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]

        #87360
        David Siqueira
        Participante

          Opa!!!..
          Já tentou usar o resultado exibido pela DBMS_XPLAN.DISPLAY?
          Pode ser interessante.

          Ats.

          David

          #87412
          Rodrigo Mesquita
          Participante

            Eu 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’));
            Exit

            depois um arquivo .bat com o conteudo abaixo
            @echo off
            cd
            SQLPLUS usuario/senha@banco @planexec.sql > planexec.TXT
            START planexec.TXT

            no final ele abre o notepad com o plano de execução.

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.