Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Una de las mayores responsabilidades de un DBA es garantizar que la base de datos de Oracle se sintoniza
correctamente. El RDBMS de Oracle es altamente tuneable y permite que la base de datos para ser monitoreados y
regulados para optimizar y aumentar su rendimiento.
DUMMY #1:
En esta oportunidad mostrare el manejo del: SQL TUNING ADVISOR, desde la creación de las tablas hasta el de
los QUERYs y DECLARE que brindan el soporte al Tuning respectivo.
-- ================================================= --
-- CREAR TABLAS, INSERTs Y CONSTRAINTs PARA EL DUMMY --
-- ================================================= --
INSERT INTO TB_OR (COD_OR, COD_EST_OR, FEC_INI_OR, FEC_EJEC_OR, FEC_LIQUI_OR, COD_FLU, COD_OT)
VALUES (1, '1', TO_DATE('13-03-2012', 'DD-MM-YYYY'), TO_DATE('14-03-2012', 'DD-MM-YYYY'),
TO_DATE('16-03-2012', 'DD-MM-YYYY'), 2, 1);
INSERT INTO TB_OR (COD_OR, COD_EST_OR, FEC_INI_OR, FEC_EJEC_OR, FEC_LIQUI_OR, COD_FLU, COD_OT)
VALUES (2, '1', TO_DATE('13-03-2012', 'DD-MM-YYYY'), TO_DATE('14-03-2012', 'DD-MM-YYYY'),
TO_DATE('16-03-2012', 'DD-MM-YYYY'), 2, 2);
INSERT INTO TB_OR (COD_OR, COD_EST_OR, FEC_INI_OR, FEC_EJEC_OR, FEC_LIQUI_OR, COD_FLU, COD_OT)
VALUES (3, '1', TO_DATE('13-03-2012', 'DD-MM-YYYY'), TO_DATE('14-03-2012', 'DD-MM-YYYY'),
TO_DATE('16-03-2012', 'DD-MM-YYYY'), 4, 1);
INSERT INTO TB_OR (COD_OR, COD_EST_OR, FEC_INI_OR, FEC_EJEC_OR, FEC_LIQUI_OR, COD_FLU, COD_OT)
VALUES (4, '1', TO_DATE('13-03-2012', 'DD-MM-YYYY'), TO_DATE('14-03-2012', 'DD-MM-YYYY'),
TO_DATE('16-03-2012', 'DD-MM-YYYY'), 3, 2);
-- ========================== --
-- CREAR LA [TAREA DE TUNING] --
-- ========================== --
DECLARE
TAREA_TUNING VARCHAR2( 30 );
SQL_QUERY CLOB;
BEGIN
SQL_QUERY := 'SELECT OS.COD_OS, OS.COD_SIST_ORI, OS.FEC_INI_OS,
OT.COD_OT,
OX.COD_OR, OX.COD_EST_OR, OX.COD_FLU
FROM RGUERRA.TB_OS OS,
RGUERRA.TB_OT OT,
RGUERRA.TB_OR OX
WHERE OS.COD_OS = OT.COD_OS
AND OT.COD_OT = OX.COD_OT';
/*
SQL_QUERY := 'SELECT OS.COD_OS, OS.COD_SIST_ORI, OS.FEC_INI_OS,
OT.COD_OT,
OX.COD_OR, OX.COD_EST_OR, OX.COD_FLU
FROM RGUERRA.TB_OS OS INNER JOIN RGUERRA.TB_OT OT
ON OS.COD_OS = OT.COD_OS INNER JOIN RGUERRA.TB_OR OX
ON OT.COD_OT = OX.COD_OT'; */
-- ============================================== --
-- VERIFICAR QUE LA [TAREA DE TUNING] ESTE CREADA --
-- ============================================== --
SELECT X.TASK_NAME
FROM DBA_ADVISOR_LOG X
WHERE X.OWNER = USER;
-- ==================================== --
-- EJECUTAR LA [TAREA DE TUNING] CREADA --
-- ==================================== --
BEGIN
DBMS_SQLTUNE.EXECUTE_TUNING_TASK( TASK_NAME => 'QUERY_01' );
END;
-- =========================================== --
-- CONTROLAR EL ESTADO DE LA [TAREA DE TUNING] --
-- =========================================== --
-- ============================================== --
-- CONTROLAR EL PROGRESO DEL [SQL TUNING ADVISOR] --
-- ============================================== --
-- ============================================= --
-- MOSTRAR EL RESULTADO DEL [SQL TUNING ADVISOR] --
-- ============================================= --
BEGIN
DBMS_SQLTUNE.DROP_TUNING_TASK( 'QUERY_01' );
END;
DUMMY #2:
En este DUMMY mostrare la diferencia al desarrollar QUERYs: CON y SIN INDICES, mediante un análisis por medio de: EXPLAIN PLAN
TOOL.
--CREACION:
CREATE TABLE TB_DUMMY_TEST AS
SELECT (LEVEL) AS ID_TEST,
DECODE( MOD( LEVEL, 2 ),
0, 'A', --PAR
1, 'B', --IMPAR
'C'
) AS "ESTADO_TEST",
'DUMMY_' || LEVEL AS DESC_TEST
FROM DUAL
CONNECT BY LEVEL <= 100000
--ELIMINACION:
DROP TABLE TB_DUMMY_TEST;
--CONSULTA:
SELECT * FROM TB_DUMMY_TEST;
Mediante la herramienta PL/SQL DEVELOPER accedermos a la vista de EXPLAIN PLAN:
PRUEBA #1 (SIN APLICACIÓN DE INDICES): Ejecutaros un QUERY que lo FILTRAREMOS mediante 2 variables de tipo
BIND que representan a cualquier posible variable a reemplazar.
PRUEBA #2 (SIN APLICACIÓN DE INDICES): Ejecutaros un QUERY que lo FILTRAREMOS mediante 2 parámetros de
búsqueda.
Ahora PROBAREMOS los QUERYs anteriores pero antes le CREAMOS y asignaremos un INDEX para mejorar y optimizar los
FILTROS en base a los dos parámetros de tipo VARCHAR2.
--INDICES:
CREATE UNIQUE INDEX UQ_DUMMY ON TB_DUMMY_TEST( ESTADO_TEST, DESC_TEST );
PRUEBA #3 (CON APLICACIÓN DE INDICES): Ejecutaros el mismo QUERY de la PRUEBA #1, FILTRANDOLO mediante 2
variables de tipo BIND que representan a cualquier posible variable a reemplazar.
PRUEBA #4 (CON APLICACIÓN DE INDICES): Ejecutaros el mismo QUERY de la PRUEBA #2, FILTRANDOLO mediante 2
parámetros fijos.