Cómo ejecutar € s 12câ Oracle SQL Tuning Advisor
Oracle 12c ofrece una utilidad llamada la optimización de SQL. Puede utilizar esta herramienta integrada para proporcionar sugerencias o recomendaciones sobre ciertas sentencias SQL. Aunque no siempre puede dar consejos perfecto, al igual que cualquier otra cosa, tener en su caja de herramientas de técnicas de optimización es beneficioso.
- Utilice PL / SQL y el DBMS_SQL_TUNE paquete interno para crear una tarea de afinación. Escribe esto:
DECLARAR
l_sql VARCHAR2 (500);
l_sql_tune_task_id VARCHAR2 (100);
COMENZAR
l_sql: = 'first_name SELECT nombre, apellidos, department_name' ||
'FROM emp ÚNETE departamentos USANDO (department_id)' ||
"DONDE last_name = '' Hopkins '' ';
l_sql_tune_task_id: = DBMS_SQLTUNE.create_tuning_task (
sql_text => l_sql,
'HR' nombre_usuario =>,
scope => DBMS_SQLTUNE.scope_comprehensive,
time_limit => 60,
'emp_dept_tuning_task' nombre_tarea =>,
Descripción => 'tarea de sintonización para un PME a DEPARTAMENTO unirse consultas.');
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 provoca una sobrecarga del sistema.
- 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 del wonâ € t volver.
Cuando se complete, usted debe ver esto:
PL / SQL terminado con éxito.
Si youâ € he fijado más tiempo y son cada vez más impaciente, puede abrir otra ventana de SQL para asegurarse de que la tarea se sigue ejecutando escribiendo
Nombre_tarea SELECT, estado, execution_start
DESDE DONDE dba_advisor_log propietario = 'HR';Usted ve algo como lo siguiente:
TASK_NAME ESTADO EXECUTION_START
------------------------------ --------------- ----- ---------------
emp_dept_tuning_task EJECUCIÓN 19-JUL-2013 15:35:42 - Cuando la ejecución se ha completado, usted puede ver los resultados mediante la ejecución del procedimiento BMS_SQLTUNE.report_tuning_task. Escriba lo siguiente:
SELECT
DBMS_SQLTUNE.report_tuning_task ('emp_dept_tuning_task') COMO recomendaciones
Del doble;Por razones de espacio, wea € ve snipped algunas secciones de la salida que sigue, pero ver algo como esto:
RECOMENDACIONES
-------------------------------------------------- -------------------------------
INFORMACIÓN GENERAL SECCIÓN
-------------------------------------------------- -------------------------------
Sintonía Nombre de tarea: emp_dept_tuning_task
Sintonía de tareas Propietario: HR
Tipo de carga de trabajo: Instrucción SQL individual
Alcance: INTEGRAL
Límite de tiempo (segundos): 60
Estado de finalización: INTERRUMPIDO
Iniciado en: 07/19/2013 15:21:39
Completado en: 07/19/2013 15:22:43
-------------------------------------------------- -------------------------------
Error: ORA-13639: La operación actual se interrumpió porque timed out.
-------------------------------------------------- -------------------------------
-------------------------------------------------- -------------------------------
Nombre de esquema: HR
Identificación SQL: 47uvvzcuu5mdg
SQL Texto: first_name SELECT nombre, apellidos, department_name énfasis DE ÚNETE
departamentos USANDO (department_id) DONDE last_name = 'Hopkins
RECOMENDACIONES
-------------------------------------------------- -------------------------------
-------------------------------------------------- -------------------------------
RESULTADOS SECCIÓN (1 hallazgo)
-------------------------------------------------- -------------------------------
Índice 1- Finding (ver sección de explicar los planes a continuación)
--------------------------------------------------
El plan de ejecución de esta declaración puede ser mejorado mediante la creación de uno o más
índices.
Recomendación (beneficio estimado: 99,98%)
------------------------------------------
- Considere la posibilidad de ejecutar el Asesor de Acceso a mejorar el diseño esquema físico
o crear el índice recomendado.
crear el índice HR.IDX $$ _ 03170001 en HR.EMP ("LAST_NAME");
Razón fundamental
---------
La creación de los índices recomendados mejora significativamente el plan de ejecución
de esta declaración. Sin embargo, podría ser preferible ejecutar "Asesor de Acceso"
utilizando una carga de trabajo SQL representante en oposición a una sola declaración. Este
permitirá obtener recomendaciones integrales de índice que tiene en
RECOMENDACIONES
-------------------------------------------------- ------------------------------
cuenta los gastos generales de mantenimiento índice y el consumo de espacio adicional.
... Salida cortó ...La última parte del informe muestra los planes de ejecución de antes y después. En este caso, es € he visto el antes cuando estaban generando planes de ejecución. Seguir adelante y añadir el índice, regenerar el plan de ejecución, y ver si es € He hecho una mejora.
Antes de agregar el índice, tenga en cuenta que las recomendaciones dan el SQL para agregar el índice:
Recomendación (beneficio estimado: 99,98%)
------------------------------------------
- Considere la posibilidad de ejecutar el Asesor de Acceso a mejorar el diseño esquema físico
o crear el índice recomendado.
crear el índice HR.IDX $$ _ 03170001 en HR.EMP ("LAST_NAME");También tenga en cuenta que Oracle da una advertencia:
RECOMENDACIONES
-------------------------------------------------- ------------------------------
cuenta los gastos generales de mantenimiento índice y el consumo de espacio adicional. - 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.
- Echa un vistazo a el plan de ejecución. Escriba lo siguiente:
explicar el plan de
First_name SELECT nombre, apellidos, department_name
Énfasis DE unirse departamentos utilizando (department_id)
DONDE last_name = 'Hopkins;
Explicado.
Transcurrido: 00: 00: 00.09Y a continuación, escriba
@? \ RDBMS \ admin \ utlxpls
Usted debe ver una salida como esta:
PLAN_TABLE_OUTPUT
-------------------------------------------------- -------------------------------
Plan de valor hash: 1505300146
-------------------------------------------------- -------------------------------
| ID | Funcionamiento | Nombre | Filas | Bytes | Costo (% de la CPU) | Hora |
-------------------------------------------------- -------------------------------
| 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 batched | EMP | 1 | 18 | 4 (0) | 00:00:01 |
| * 4 | RANGO ÍNDICE SCAN | EMP_LAST_NAME_IDX | 1 | | 3 (0) | 00:00:01 |
| * 5 | ÍNDICE SCAN UNIQUE | 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 youâ € ve añadido el índice, algunas cosas son evidentes:
- El costo del plan se redujo 40336-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, la participación de otros datos y aplicaciones 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.
Artículos relacionados
- Cómo solucionar problemas con su Metodología Sistema 12c Oracle
- Oracle 12c comandos SQL
- Cómo detener a un 12c Oracle Database
- 4 Técnicas básicas para solucionar problemas de su Metodología Sistema 12c Oracle
- Fundamentos de la recuperación Manager 12c Oracle (RMAN) Catálogo
- Cómo ajustar el 12c Oracle Database antes de que algo va mal
- Fundamentos de la Configuración y páginas de almacenamiento en € s 12câ Oracle Enterprise Manager
- Fundamentos de la bomba de los datos 12c Oracle
- Fundamentos de la 12c Oracle Database Registro de alertas