Cómo ejecutar SQL Tuning Advisor oráculo de 12c

Oracle 12c ofrece una utilidad llamada la optimización de SQL. Puede utilizar esta herramienta integrada para proporcionar sugerencias o recomendaciones sobre determinadas sentencias SQL. A pesar de que no siempre puede dar consejo perfecto, al igual que cualquier otra cosa, que tiene en su caja de herramientas de técnicas de afinación es beneficioso.

  1. Utilice PL / SQL y el DBMS_SQL_TUNE paquete interno para crear una tarea de afinación. Escriba lo siguiente:

    DECLAREl_sqlVARCHAR2 (500) -l_sql_tune_task_id VARCHAR2 (100) -BEGINl_sql: = 'nombre SELECT, apellidos, department_name' || 'FROM emp JOIN departamentos USANDO (department_id)' || 'DONDE last_name =' 'Hopkins' '' - l_sql_tune_task_id: = DBMS_SQLTUNE.create_tuning_task (sql_text => l_sql, nombre_usuario => 'HR', alcance 'emp_dept_tuning_task' => DBMS_SQLTUNE.scope_comprehensive, time_limit => 60, nombre_tarea =>, description => 'tarea de sintonización para un EMP al DEPARTAMENTO consulta de combinación. " ) -DBMS_OUTPUT.put_line ('l_sql_tune_task_id:' || l_sql_tune_task_id) -FIN- /

    Debería ver lo siguiente:

    PL / SQL terminado con éxito.

    En el comando anterior, anote el time_limit de 60. Eso limita el tiempo de procesamiento de 60 segundos. No siempre es posible que desee ejecutar algo como esto durante largos períodos en su base de datos, ya que incurre en la sobrecarga del sistema.

  2. Ejecutar el asesor de ajuste con su tarea al escribir esto:

    EXEC DBMS_SQLTUNE.execute_tuning_task (nombre_tarea => 'emp_dept_tuning_task') -

    Debido al límite de 60 segundos previstos en la creación de la tarea, este paso puede tardar hasta 60 segundos en completarse. Durante este tiempo, el indicador no va a volver.

    Cuando se complete, usted debe ver esto:

    PL / SQL terminado con éxito.

    Si ha establecido un tiempo más largo y está consiguiendo impaciente, puede abrir otra ventana de SQL para asegurarse de que la tarea aún está ejecutando escribiendo

    Nombre_tarea SELECT, estado, execution_startFROM dba_advisor_log DONDE propietario = 'HR'-

    Usted ve algo como lo siguiente:

    TASK_NAME ESTADO EXECUTION_START ------------------------------ --------------- - ------------------ emp_dept_tuning_task EXECUTING19-julio-2013 15:35:42
  3. Cuando la ejecución se ha completado, usted puede ver los resultados mediante la ejecución del procedimiento de BMS_SQLTUNE.report_tuning_task. Escriba lo siguiente:

    SELECTDBMS_SQLTUNE.report_tuning_task ('emp_dept_tuning_task') AS recommendationsFROM dual

    Por razones de espacio, hemos cortó algunas secciones de la salida que sigue, pero vemos algo como esto:

    RECOMMENDATIONS---------------------------------------------------------------------------------GENERAL INFORMACIÓN SECCIÓN ------------------------------------------------ --------------------------------- Sintonía Nombre de tarea: emp_dept_tuning_taskTuning Tarea Propietario: Tipo HRWorkload: Soltero SQL StatementScope: COMPREHENSIVETime Límite (segundos): 60Completion Estado: INTERRUPTEDStarted en: 07/19/2013 15: 21: 39Completed en: 07/19/2013 15:22:43 ------------------ -------------------------------------------------- ------------- error: ORA-13639: La operación actual se interrumpió porque cronometrado out.------------------------------------------------------------------------------------------------------------------------------------------------------------------Schema Nombre: HRSQL ID: 47uvvzcuu5mdgSQL Texto: first_name SELECT, apellidos, department_name DE JOINdepartments emp USO (department_id) DONDE last_name = 'Hopkins'RECOMMENDATIONS------------------------------------------------------------------------------------------------------------------------------------------------------------------FINDINGS SECCIÓN (1 resultado) --------------------------------------------- ------------------------------------ Índice 1- Finding (ver sección explica los planes a continuación) --- ----------------------------------------------- El plan de ejecución de esta declaración puede ser mejorado mediante la creación de uno o moreindices.Recommendation (beneficio estimado: 99,98%) ------------------------------ ------------- Considere ejecutar el Asesor de acceso para mejorar el esquema físico Designor crear el HR.IDX índice index.create recomendada $$ _ 03170001 en HR.EMP ("LAST_NAME") - Rationale-- ------- Creación de los índices recomendados mejora significativamente la ejecución planof esta declaración. Sin embargo, podría ser preferible ejecutar "Access Advisor", utilizando una carga de trabajo SQL representante en lugar de una sola sentencia. Thiswill permitirá obtener recomendaciones índices integrales que toma intoRECOMMENDATIONS--------------------------------------------------------------------------------account sobrecarga de mantenimiento índice y el consumo de espacio adicional .... salida snipped ...

    La última parte del informe muestra el antes de y después los planes de ejecución. En este caso, usted ha visto el antes, cuando estabas generando planes de ejecución. Vaya por delante y agregar el índice, vuelva a generar el plan de ejecución, y ver si usted ha hecho una mejora.

    Antes de agregar el índice, tenga en cuenta que las recomendaciones dan la SQL para agregar el índice:

     Recomendación (beneficio estimado: 99,98%) ------------------------------------------ - Considere la posibilidad de ejecutar el Asesor de acceso para mejorar el esquema físico Designor crear el HR.IDX índice index.create recomendada $$ _ 03170001 en HR.EMP ("LAST_NAME") -

    También tenga en cuenta que Oracle da una advertencia:

    RECOMMENDATIONS--------------------------------------------------------------------------------account sobrecarga de mantenimiento índice y el consumo de espacio adicional.
  4. Añadir el índice con su propio nombre, escriba lo siguiente:

    CREAR emp_last_name_idx ÍNDICE DE LA emp (apellidos) -

    Debería ver algo como lo siguiente:

    Índice creado.
  5. Echa un vistazo a el plan de ejecución. Escriba lo siguiente:

    explicar first_name forSELECT plan, apellidos, department_nameFROM emp unirse a los departamentos utilizando (department_id) DONDE last_name = 'Hopkins'-Explained.Elapsed: 00: 00: 00,09

    Y a continuación, escriba

    @? RDBMS admin utlxpls

    Usted debe ver una salida como esta:

PLAN_TABLE_OUTPUT---------------------------------------------------------------------------------Plan valor hash: 1505300146 ---------------------------------------------- ----------------------------------- | Id | Funcionamiento | Nombre | Filas | Bytes | Costo (% de la CPU) | Tiempo | ------------------------------------------------ --------------------------------- | 0 | DECLARACIÓN DE SELECCIÓN | | 1 | 34 | 5 (0) | 00:00:01 || 1 | Bucles anidados | ||| ||| 2 | Bucles anidados | | 1 | 34 | 5 (0) | 00:00:01 || 3 | CUADRO DE ACCESO POR ÍNDICE ROWID lotes | EMP | 1 | 18 | 4 (0) | 00:00:01 || * 4 | ÍNDICE GAMA SCAN | EMP_LAST_NAME_IDX | 1 || 3 (0) | 00:00:01 || * 5 | UNIQUE INDEX SCAN | DEPT_ID_PK | 1 || 0 (0) | 00:00:01 || 6 | CUADRO DE ACCESO POR ROWID ÍNDICE | DEPARTAMENTOS | 1 | 16 | 1 (0) | 00:00:01 | -------------------------------------------- ------------------------------------- Información Predicado (identificado por id funcionamiento): ---- ----------------------------------------------- 4 - Acceso (. "EMP" "LAST_NAME" = 'Hopkins) 5 - acceso ("EMP" "DEPARTMENT_ID" = "DEPARTAMENTOS" "DEPARTMENT_ID"..)

Ahora que ya has agregado el índice, algunas cosas son evidentes:

  • El costo del plan se redujo 40.336 a 5.

  • En la actualidad hay seis pasos.

  • El escaneo completo de tabla se ha ido. En su lugar se ve el uso de su nuevo índice.

A menudo una de las partes difíciles sobre tuning una base de datos es tener una sólida comprensión de la aplicación y los datos. La cuestión podría no ser siempre obvias. A veces participar otras aplicaciones y datos expertos ayuda.

Explíqueles a sus conclusiones y lo que usted propone. Ellos pueden ser capaces de ayudarle a llegar a una conclusión. Además, si los datos son parte de una aplicación de terceros envasados, a veces abrir un ticket con el vendedor es el camino a seguir.




» » » Cómo ejecutar SQL Tuning Advisor oráculo de 12c