Pregunta

Antecedentes: revise mi pregunta relacionada que involucra SQL Server: Interpretación del showplan XML de SQL Server

Ahora tengo una pantalla de plan de ejecución muy bonita para SQL Server (como resultado de mi pregunta anterior), y espero que Lightning pueda golpear dos veces aquí y que pueda encontrar una solución de alta calidad para Oracle.

Mi sitio Violín SQL Muestra planes de ejecución para cada una de las consultas que ejecuta en él, para cada uno de los tipos de bases de datos que admito (en este momento: MS SQL, MySQL, PGSQL y Oracle). El plan de ejecución de Oracle está construido de esta manera:

explain plan set STATEMENT_ID = '#schema_short_code#/#query_id#' for 
select id, type, details from supportContacts

/

select 
dbms_xplan.build_plan_xml(statement_id => '#schema_short_code#/#query_id#').getclobval() 
AS XPLAN 
FROM dual

Donde Schema_Short_Code y Query_ID son obviamente variables que representan cada consulta distinta. Puede ver el resultado del ejemplo anterior en ejecución aquí: http://sqlfiddle.com/#!4/ee7da/596

Esto produce el siguiente XML:

<plan>
  <operation name="SELECT STATEMENT" id="0" depth="0" pos="2">
    <card>2</card>
    <bytes>94</bytes>
    <cost>2</cost>
    <io_cost>2</io_cost>
    <cpu_cost>7501</cpu_cost>
    <time>00:00:01 </time>
  </operation>
  <operation name="TABLE ACCESS" options="FULL" id="1" depth="1" pos="1">
    <object>SUPPORTCONTACTS</object>
    <card>2</card>
    <bytes>94</bytes>
    <cost>2</cost>
    <io_cost>2</io_cost>
    <cpu_cost>7501</cpu_cost>
    <time>00:00:01 </time>
    <project>&quot;ID&quot;[NUMBER,22], &quot;TYPE&quot;[VARCHAR2,20], &quot;DETAILS&quot;[VARCHAR2,40]</project>
    <qblock>SEL$1</qblock>
    <object_alias>SUPPORTCONTACTS@SEL$1</object_alias>
    <other_xml>
      <info type="db_version">11.2.0.2</info>
      <info type="parse_schema"><![CDATA["USER_EE7DA"]]></info>
      <info type="dynamic_sampling">2</info>
      <info type="plan_hash">2812004906</info>
      <info type="plan_hash_2">2012527029</info>
      <outline_data>
        <hint><![CDATA[FULL(@"SEL$1" "SUPPORTCONTACTS"@"SEL$1")]]></hint>
        <hint><![CDATA[OUTLINE_LEAF(@"SEL$1")]]></hint>
        <hint><![CDATA[ALL_ROWS]]></hint>
        <hint><![CDATA[DB_VERSION('11.2.0.2')]]></hint>
        <hint><![CDATA[OPTIMIZER_FEATURES_ENABLE('11.2.0.2')]]></hint>
        <hint><![CDATA[IGNORE_OPTIM_EMBEDDED_HINTS]]></hint>
      </outline_data>
    </other_xml>
  </operation>
</plan>

Aunque leer el XML sin procesar no es terrible, ciertamente no se ve tan bien como lo que ahora puedo mostrar para SQL Server (compare haciendo clic en "Ver plan de ejecución" en esta página: http://sqlfiddle.com/#!3/1fa93/1)

¿Alguien ha trabajado con este XML antes? ¿Es posible que alguien haya creado algo cercano a lo que Justin creó para SQL Server (consulte el respondedor para la pregunta del servidor SQL)? Si no es así, ¿alguien sabe dónde puedo encontrar una buena dirección para construir mi propia XSLT (documentación del esquema, etc.), y posiblemente dónde pueda ver algunos buenos visualizantes de planes de consulta para Oracle que podría esperar ¿emular?

Actualizar

Dado que todavía no se proporcionan respuestas, y la recompensa está a punto de caducar, aceptaré una respuesta que simplemente pueda decirme algo útil sobre este esquema XML, o me señala en la dirección de cualquier pantalla de plan de ejecución gráfica para Oracle ( Incluso GUI basadas en escritorio).

¿Fue útil?

Solución

Puedes usar dbms_xplan.display_plan Para obtener el texto, XML, HTML o la salida 'activa' como un CLOB:

select dbms_xplan.display_plan(format=>'ALL', type=>'HTML') from dual;

select dbms_xplan.display_plan(format=>'ALL', type=>'ACTIVE') from dual;

HTML es similar a la salida de texto, pero el tipo 'activo' es bastante diferente:

Los informes activos tienen una interfaz de usuario rica e interactiva similar a la que se encuentra en Enterprise Manager sin requerir ninguna instalación de EM. El archivo de informe creado está en formato HTML, por lo que la mayoría de los navegadores modernos pueden interpretarlo. El código que alimenta el informe activo se descarga de manera transparente por el navegador web cuando se ve por primera vez el informe, por lo tanto, lo ve, requiere conectividad externa.

Otros consejos

Creo que sería mejor usar la versión de texto de la salida del plan Explicar en lugar de XML, ya que le brinda una representación ASCII legible preformateada del plan de consulta.

p.ej:

SELECT * FROM TABLE(dbms_xplan.display('PLAN_TABLE','#schema_short_code#/#query_id#','ALL'));

De lo contrario, si tiene los medios para hacerlo del lado del servidor, puede usar Oracle SQL Developer para brindarle una representación gráfica del plan de consulta, aunque esta es realmente la misma que la versión ASCII con algunos íconos.

Además, eche un vistazo a $ORACLE_HOME/rdbms/xml/orarep/xplan/xplSch.xsd , $ORACLE_HOME/rdbms/xml/orarep/xplan/xplHtml.xsl y $ORACLE_HOME/rdbms/xml/xsl/kuplan.xsl - Pueden ayudarlo a formatear su salida XML a HTML más bonita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top