You are on page 1of 56

Coordinación Nacional del Programa Inclusión 1 de 10

Social Prospera Fecha de elaboración


Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Procedimiento:
CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

DIRECCIÓN: DGAIDT
Código:

Elaboró: Revisó:

Ing. Maiyec Urrutia Luna


Subdirectora de Área Director de Investigación y Desarrollo
Tecnológico

Vo. Bo. Autorizó:

Lic. Angélica Castañeda Sánchez


Director General Adjunto de Directora General de Padrón y Liquidación
Informática y Desarrollo
Tecnológico

Fecha de documentación: 25-09-2014


Revisión número: 1.0
Copia número: Original
Copia asignada a: (11)
Coordinación Nacional del Programa Inclusión 2 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

1.- Situación actual previa al mantenimiento:


Observaciones.
Justificación descriptiva de la actividad.
Afectaciones, impacto o consecuencia de no aplicarse.
Posibles consecuencias o impactos de aplicarse la actividad.
Beneficios de aplicarse la actividad.

2.- Actividades y requerimientos previos al mantenimiento.


3.- Plan de actividades
Tiempos esperados para realizar cada actividad
Checklist de actividades:
Incluir dentro de las actividades toma de la situación actual previo a ejecutar las acciones:
*Cómo estaban los objetos antes de iniciar con la actividad, donde se localizaban, DDL, dependencias e incluso cantidad de
registros.
* En caso de cambio en parámetros, listar los parámetros.

4.- Resultados posterior al mantenimiento:


- Documentación de la situación actual previo a ejecutar las acciones, que también puede incluirse como anexo:
*Cómo estaban los objetos antes de iniciar con la actividad, donde se localizaban, DDL, dependencias e incluso número de
registros.
- Actividades realizadas, recomendaciones.
- No omitir documentar actividades que impliquen cambios no especificados en el documento y que se requieren realizar.
- Si las actividades a realizar afectan la operación del día siguiente, no realizarlas e informar.
- Control por cada actividad, y cantidad de objetos realizados, tiempos y pendientes:
Coordinación Nacional del Programa Inclusión 3 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Justificación Cantidad Cantidad Pendientes Fecha Tiempo


Objetos de objetos en Tiempo Tiempo Log
No. Actividad identificados realizados Hini Hfin Minutos Hombre Máquina Estatus (archivo) Observaciones

-Documentación de los pendientes y justificación.


-Reportar situación posterior al mantenimiento.

5.- Errores presentados durante el mantenimiento, causa y solución.


6.- Anexo: Script y Salida o logs de resultados
Script de sentencias.
Logs de salidas
Coordinación Nacional del Programa Inclusión 4 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Contenido
Mover objetos (índices y tablas) de tablespaces de acuerdo a su tamaño. ....................................... 5
Constraint desactivados. ................................................................................................................... 13
Reconstrucción de tablespace undotbs1 .......................................................................................... 14
Liberar tablespace SYSAUX................................................................................................................ 15
Mover objetos de Auditoria a tablespace de TAB_AUDITORIA ........................................................ 16
Revisar en general espacios en TB. ................................................................................................... 17
Compilación y reporte de Objetos inválidos ..................................................................................... 18
Regeneración de índices, Desfragmentar y reorganizar Índices (Rebuild Indices) ........................... 19
Reorganizar el almacenamiento de una tabla. ................................................................................. 23
Registros Encadenados ..................................................................................................................... 31
Estimación del PCTFREE .................................................................................................................... 36
Consultas recomendaciones del ADDM ............................................................................................ 39
Aplicar Estadísticas Tablas e índices.................................................................................................. 41
Mover objetos a Memoria ................................................................................................................ 44
Asignar a memoria KEEP ............................................................................................................... 44
Almacenar en Flash cache ............................................................................................................. 46
Identificar tablas grandes que raramente son utilizadas, asignarlas a la memoria RECYCLE. ...... 49
Identificar procedimientos grandes, trigger a menudo ejecutados y usados por las tablas, y las
secuencias, asignarlos a la memoria KEEP. ................................................................................... 46
Usar otros espacios de memoria. Para minimizar el uso de la buffer cache. ............................... 49
Diagnóstico de Recuperación de espacio con scripts ....................................................................... 52
Coordinación Nacional del Programa Inclusión 5 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Mover objetos (índices y tablas) de tablespaces de acuerdo a su


tamaño.

Objetivo: Identificar y Reorganizar los objetos de acuerdo a su tamaño y tipo de objeto en el


tablespace correspondiente.

Justificación: La administración de tablespace en la Institución indica que los objetos deben estar
organizados de acuerdo a su tamaño en varios tablespace dedicados diferentes al system Y/o
sysaux.

Condiciones:

a) La identificación de objetos no tiene ningún impacto.


b) Mover objetos puede tener impacto en la operación, por lo cual debe realizarse en horario
no operativo.
c) Reconstruir índices posteriores a la acción de mover las tablas, ya que inválida y los deja
en estatus unusables.
d) Aplica en cualquier versión de oracle.
e) Crear script de ejecución.
f) Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad


Coordinación Nacional del Programa Inclusión 6 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

1. Identificar tablas e índices de esquemas de sistema que no se encuentren en el tablespace


correcto, mediante las siguientes consultas.

Descripción Tamaño Tablespace Correcto


Tablas que aun particionadas SUM(BYTES)/1024/1024 SIZE_MB >1024 MB TAB_MAYOR1GB

en su tamaño total ocupan


más de 1024G.
Tablas que ocupan más de 120MB > SUM(BYTES)/1024/1024 SIZE_MB TAB_MAYOR120MB
<=1024MB
120MB pero menor o igual 1G.
Tablas que ocupan más de 12MB > SUM(BYTES)/1024/1024 SIZE_MB TAB_MENOR120MB
<=120MB
12MB pero menor o igual a
120MB.
Tablas que ocupan menos de SUM(BYTES)/1024/1024 SIZE_MB <=12MB TAB_MENOR12MB

12MB.
Índices que aun particionadas SUM(BYTES)/1024/1024 SIZE_MB >1024 MB IXN_MAYOR1GB

en su tamaño total ocupan


1024G o más.
Índices que ocupan más de 120MB > SUM(BYTES)/1024/1024 SIZE_MB IXN_MAYOR120MB
<=1024MB
120MB pero menor o igual 1G.
Índices que ocupan más de 12MB > SUM(BYTES)/1024/1024 SIZE_MB IXN_MENOR120MB
<=120MB
12MB pero menor o igual a
120MB.
Índices que ocupan menos de SUM(BYTES)/1024/1024 SIZE_MB <=12MB IXN_MENOR12MB

12MB.
Objetos de tipo Vista Todos los tamaños VM_SIIOP

Materializadas que
pertenecen a SIIOP
Índices de Vista Materializadas Todos los tamaños IXN_VM_SIIOP

que pertenecen a SIIOP


Objetos de tipo Vista Todos los tamaños VM_INFO

Materializadas que
pertenecen a INFO
Índices de Vista Materializadas Todos los tamaños IXN_VM_INFO

que pertenecen a INFO


Objetos de tipo Vista Todos los tamaños VM_GENERICA

Materializadas y sus índices


que pertenecen a GENERICA
Objetos de tipo Vista Todos los tamaños VM_DGAO

Materializadas y sus índices


que pertenecen a DGAO
Coordinación Nacional del Programa Inclusión 7 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Objetos de tipo Vista Todos los tamaños IXN_VM_SIOPHIST

Materializadas que
pertenecen a SIOPHIST
Índices de Vista Materializadas Todos los tamaños IXN_VM_SIOPHIST

que pertenecen a SIOPHIST


Objetos que sólo Todos los tamaños TAB_AUDITORIA

corresponden a la Auditoria
generada por Oracle
Casos especiales en el cual los Todos los tamaños Ejemplo: TAB_SEDECI_V2

objetos deben estar ubicados


en tablespace que tienen el
mismo nombre que el
esquema.
Todos os objetos que Todos los tamaños USUARIOS

pertenecen a esquemas
personales.

set timing on
set time on
set linesize 300
SET PAGESIZE 300
COL segment_name FORMAT A30
COL OWNER FORMAT A30
COL tablespace_name FORMAT A30

-----tablas que exceden 12Mb y se encuentran en el tablespace TAB_MENOR12MB


select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
where (segment_TYPE like '%INDEX%' OR segment_TYPE like '%TABLE%') AND segment_name NOT LIKE 'BIN$%'
HAVING tablespace_name='TAB_MENOR12MB' AND SUM(BYTES)/1027/1024>12
GROUP BY OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name
/*--order by OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name;*/
UNION
Coordinación Nacional del Programa Inclusión 8 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

-----tablas que son menores a 12Mb o exceden 120Mb y se encuentran en el tablespace TAB_MENOR120MB
select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)<12 THEN 'IXN_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
where (segment_TYPE like '%INDEX%' OR segment_TYPE like '%TABLE%') AND segment_name NOT LIKE 'BIN$%'
HAVING tablespace_name='TAB_MENOR120MB' and (sum(bytes)/1024/1024<12 OR sum(bytes)/1024/1024>120 )
GROUP BY OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name
/*--order by OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name;*/
UNION
-----tablas que son menores a 120Mb o exceden 1024Mb y se encuentran en el tablespace TAB_MAYOR120MB
select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)<12 THEN 'IXN_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
where (segment_TYPE like '%INDEX%' OR segment_name like '%TABLE%') AND segment_name NOT LIKE 'BIN$%'
HAVING tablespace_name='TAB_MAYOR120MB' AND (sum(bytes)/1024/1024<120 OR sum(bytes)/1024/1024>1024)
GROUP BY OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name
/*--order by OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name;*/
UNION
-----tablas que son menores a 1024Mb y se encuentran en el tablespace TAB_MAYOR1GB
select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)<12 THEN 'IXN_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
Coordinación Nacional del Programa Inclusión 9 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
WHERE (segment_TYPE like '%INDEX%' OR segment_TYPE like '%TABLE%') AND segment_name NOT LIKE 'BIN$%'
HAVING tablespace_name='TAB_MAYOR1GB' and sum(bytes)/1024/1024<1024
GROUP BY OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name
--order by OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name
UNION
-----tablas que NO ESTAN EN en el tablespace TAB_MAYOR1GB
select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)<12 THEN 'IXN_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
where segment_type<>'INDEX'
group by owner, segment_name, segment_type,tablespace_name
having (SUM(BYTES)/1024/1024 )>1024
order by owner;

-----Indices que exceden 12Mb y se encuentran en el tablespace IXN_MENOR12MB


Select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)<12 THEN 'IXN_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
WHERE (segment_TYPE like '%INDEX%' OR segment_TYPE like '%TABLE%') AND segment_name NOT LIKE 'BIN$%'
HAVING tablespace_name='IXN_MENOR12MB' and sum((bytes)/1024/1024)>12
Coordinación Nacional del Programa Inclusión 10 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

GROUP BY OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name


/*--order by OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name;*/
UNION
-----indices que son menores a 12Mb o exceden 120Mb y se encuentran en el tablespace IXN_MENOR120MB
select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)<12 THEN 'IXN_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
WHERE (segment_TYPE like '%INDEX%' OR segment_TYPE like '%TABLE%') AND segment_name NOT LIKE 'BIN$%'
HAVING tablespace_name='IXN_MENOR120MB' and (SUM(bytes)/1024/1024<12 OR SUM(bytes)/1024/1024>120)
GROUP BY OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name
/*--order by OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name;*/
UNION
-----Indices que son menores a 120Mb o exceden 1024Mb y se encuentran en el tablespace IXN_MAYOR120MB
select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)<12 THEN 'IXN_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
WHERE (segment_TYPE like '%INDEX%' OR segment_TYPE like '%TABLE%') AND segment_name NOT LIKE 'BIN$%'
HAVING tablespace_name='IXN_MAYOR120MB' and (SUM(bytes)/1024/1024<120 OR SUM(bytes)/1024/1024>1024)
GROUP BY OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name
/*--order by OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name;*/
UNION
-----indices que son menores a 1024Mb y se encuentran en el tablespace IXN_MAYOR1GB
select owner, segment_name, SEGMENT_TYPE, tablespace_name, SUM(BYTES)/1024/1024 SIZE_MB,
(CASE
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)<12 THEN 'TAB_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'TAB_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'TAB_MAYOR120MB'
Coordinación Nacional del Programa Inclusión 11 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

WHEN SEGMENT_TYPE LIKE '%TABLE%' AND SUM((BYTES)/1024/1024)>1024 THEN 'TAB_MAYOR1GB'


WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)<12 THEN 'IXN_MENOR12MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>12 AND SUM((BYTES)/1024/1024)<=120 THEN
'IXN_MENOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>120 AND SUM((BYTES)/1024/1024)<=1024 THEN
'IXN_MAYOR120MB'
WHEN SEGMENT_TYPE LIKE '%INDEX%' AND SUM((BYTES)/1024/1024)>1024 THEN 'IXN_MAYOR1GB'
ELSE 'N/A'
END ) MOVER_A_TAB
from dba_segments
WHERE (segment_TYPE like '%INDEX%' OR segment_TYPE like '%TABLE%') AND segment_name NOT LIKE 'BIN$%'
HAVING tablespace_name='TAB_MAYOR1GB' and SUM(bytes)/1024/1024<1024
GROUP BY OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name
order by OWNER,SEGMENT_NAME, SEGMENT_TYPE, tablespace_name;

-----indices y/o Tablas DE ESQUEMAS OPERATIVOS que se encuentran en el tablespace USER o


USUARIOS
select OWNER,SEGMENT_NAME, SEGMENT_TYPE,(bytes)/1024/1024 M , Tablespace_name from
dba_segments where tablespace_name in ('USERS’,’USUARIOS’) ;

----Indices que se encuentran en tablespace de Tablas.


select owner, segment_name, segment_type, (bytes)/1024/1024 , tablespace_name
from dba_segments where tablespace_name like '%TAB%' and segment_name like 'INDEX';

2. Crear tablas con los objetos identificados, indicando a donde se moverá el objeto.

TS Mover
Owner segment_name segment_type MB Actual a TS

3. Es posible que en la lista se obtengan tablas o índices particionados y subparticionados. El


proceso de mover particiones o subparticiones es diferente a un objeto no particionado,
por lo que se obtienen las particiones y subparticiones de las tablas identificadas:

SELECT s.owner, s.segment_name, s.segment_type, p.PARTITION_NAME


FROM dba_segments s, dba_TAB_PARTITIONS p
WHERE s.segment_name= table_name
AND s.owner=p.TABLE_OWNER
AND segment_type like '%PARTITION%' AND segment_name NOT LIKE 'BIN$%'
AND s.owner='ESQUEMA'
AND s.segment_name IN (‘TABLA1','TABLA2')
GROUP BY s.owner, s.segment_name, s.segment_type,p.PARTITION_NAME
ORDER BY s.owner, s.segment_name, s.segment_type, p.PARTITION_NAME;

4. Verificar que se cuenta con espacio suficiente para mover tablas al tablespace correcto.
Coordinación Nacional del Programa Inclusión 12 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Acciones durante la actividad:

5. Identificar el estatus (valido e invalido o unusables) de los objetos tales como índices,
constraint.
6. Generar y ejecutar script con las sentencias a ejecutar.
Generar script :
@Mov_obj_[BD]_[TICKET]_[INCIALES_NOMBRE_DBA].SQL
Las sentencias para mover una tabla es:

 ALTER TABLE esquema.tabla MOVE TABLESPACE tablespace_a_mover;


Mueve tablas a un nuevo tablespace.
 ALTER TABLE esquema.tabla MOVE PARTITION "nombre_particion" TABLESPACE
tablespace_a_mover;
Mueve particiones a un Nuevo tablespace.
 ALTER TABLE esquema.tabla MOVE SUBPARTITION "nombre_suparticion"
TABLESPACE tablespace_a_mover;
Mueve subparticiones a un nuevo tablespace.

Las sentencias para mover índices es:

Reconstruir índices locales utilizando ALTER INDEX o ALTER TABLE de la siguiente manera :

 ALTER INDEX esquema.indices rebuild tablespace new_tablespace;


Reconstruye índices en un nuevo tablepsace.

 ALTER INDEX ... REBUILD PARTITION / SUBPARTITION


Esta declaración reconstruye una partición de índice o subpartición incondicionalmente.

 ALTER TABLE ... MODIFY PARTITION/SUBPARTITION ... REBUILD UNUSABLE LOCAL INDE
XES
Esta afirmación encuentra todos los índices no utilizables para la partición de la tabla dada o
subpartición y los reconstruye. Sólo se reconstruye una partición de índice si se ha marcado
inutilizable.

 ALTER INDEX scuba REBUILD SUBPARTITION bcd_types TABLESPACE tbs23


PARALLEL (DEGREE 2);
Puede mover el subpartición a otro espacio de tabla o especificar una cláusula paralela. La siguiente
declaración reconstruye un subpartición de un índice local sobre una tabla y mueve el subpartición
índice es otro espacio de tabla.

7. Compilar nuevamente objetos.


Coordinación Nacional del Programa Inclusión 13 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

8. Identificar el estatus (valido e invalido o unusables) posterior a la ejecución, comparar y


verificar que los objetos posterior a la actividad cuenten con el mismo estatus. En caso de
presentarse índices unusables o inválidos reconstruirlos.
9. Aplicar estadísticas.

Constraint desactivados.

Objetivo: Identificar los constraint que se encuentran desactivados, para una posible depuración
de objetos sin uso.

Justificación: Se han encontrado constraint desactivados que pueden ser activados o eliminados
según el área de desarrollo lo indique.

Condiciones:

a) La actividad puede realizarse durante horario Operativo no tiene impacto en la operación.


b) Reportar objetos identificados al área de desarrollo correspondiente mediante correo y
esperar indicaciones.
c) Aplica en cualquier versión de oracle.
d) Crear script de ejecución.
e) Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad.

1. Identificar los constraint desactivados mediante la siguiente consulta:


select owner,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS
from dba_constraints
where status='DISABLED';

2. Crear tablas con los objetos identificados.


Coordinación Nacional del Programa Inclusión 14 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

ACCIONES Responsable Fecha de Indicaciones


OWNER CONSTRAINT TABLE TYPE STATUS RECOMENDADAS del objeto Notificación

3. Reportar por correo al área de desarrollo correspondiente.


4. Esperar indicaciones.

Acciones durante la actividad:


5. Identificar el estatus (valido e invalido o unusables) de los objetos tales como índices,
costraint.
6. Generar y ejecutar script con las sentencias a ejecutar indicadas por el área de desarrollo.
En caso de habilitar los constraint usar la siguiente sentencia:

---Cambiar el estatus del constraint a ENABLED con la siguiente instrucción:


ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

7. Identificar el estatus (valido e invalido o unusables) posterior a la ejecución, comparar y


verificar que los objetos posterior a las actividades cuenten con el mismo estatus.

Reconstrucción de tablespace undotbs1

Objetivo: Reconstruir tablespace para liberar el espacio ocupado y quede al 100% libre.

Justificación: Para limpiar el tablespace UNDO y dejar al 100% libre se requiere reconstruir.

Condiciones:

a) Verificar el espacio.
b) Reconstruir el UNDO tiene impacto en la operación, por lo cual debe realizarse en horario
no operativo.
c) Aplica en cualquier versión de oracle.
d) Crear script de ejecución.
e) Generar log de salida con la evidencia de las acciones.
Coordinación Nacional del Programa Inclusión 15 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Proceso:

Acciones previas a la actividad.

1. Consultar el espacio libre, si la disponibilidad es menor al 20%.

@_ts_inf

Acciones durante la actividad:

2. En caso de haber disponibilidad menor al 20% iniciar con la reconstrucción o cambiar el


tiempo de retención del UNDO.

Liberar tablespace SYSAUX

Objetivo: Eliminar información innecesaria en el tablespace SYSAUX.

Justificación: Si el tablespace sysaux llega a saturarse puede provocar perdida de disponibilidad de


la base de datos, por lo que se debe depurar en caso que la disponibilidad de espacio sea menor
del 20%.

Condiciones:

a) Verificar el espacio.
b) Liberar el espacio de AWR no tiene impacto en la operación por lo que puede realizarse en
horario operativo.
c) Aplica en cualquier versión de oracle.
d) Crear script de ejecución.
e) Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad.

1. Consultar el espacio libre, si la disponibilidad es menor al 20% iniciar con la depuración de


la información.
Coordinación Nacional del Programa Inclusión 16 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

@_ts_inf

BD TABLESPACE TOTAL ASIGNADO TOTAL LIBRE TOTAL USADO % LIBRE

Acciones durante la actividad:

2. Leer el documento: PROC_Depuración_SYSAUX.docx

Mover objetos de Auditoria a tablespace de TAB_AUDITORIA


Objetivo: Mover la auditoria a un tablespace dedicado evitando que se sature el tablespace
SYSTEM.

Justificación: Verificar en las bases de datos que aun contengan la auditoria en el tablespace de
SYSTEM, si es necesario mover los objetos al tablespace de uso específico para la auditoria. La
auditoría puede consumir espacio importante en el tablespace SYSTEM, si no es separada puede
tener un impacto negativo en la base de datos.

Condiciones:

a) Verificar el espacio.
b) Mover la auditoria tiene impacto en la operación, por lo cual debe realizarse en horario no
operativo.
c) Aplica en cualquier versión de oracle.
d) Crear script de ejecución.
e) Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad.


Coordinación Nacional del Programa Inclusión 17 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

1. Consultar el espacio ocupado por la auditoria y donde se localiza. En caso de localizarse en


SYSTEM hacer el cambio al tablespace TAB_AUDITORIA.

SELECT SEGMENT_NAME, TABLESPACE_NAME,BYTES/1024/1024


SIZE_IN_MEGABYTES FROM DBA_SEGMENTS WHERE SEGMENT_NAME IN
('AUD$');

Acciones durante la actividad:

2. Generar script con las sentencias para crear tablespace TAB_AUDITORIA con suficiente
espacio para almacenar la auditoria.
3. Generar script con las sentencias para mover la auditoria. Leer el documento:
Administración de auditoria.docx

Revisar en general espacios en TB.

Objetivo: Asignar espacio suficiente para no interrumpir la operación en tablespace operativo y


transaccionales.

Justificación: Revisar en general que los tablespace operacionales tengan espacio suficiente. En
caso de ser necesario agregar espacio de forma que se encuentre con espacio disponible no menor
al 20%.

Condiciones:

a) Verificar el espacio.
b) Asignar espacio en tablespace no afecta la operación.
c) Aplica en cualquier versión de oracle.
d) Generar log de salida con la evidencia de las acciones.

Proceso:
Coordinación Nacional del Programa Inclusión 18 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Acciones previas a la actividad.

1. Consultar el espacio libre.


@_ts_inf

BD TABLESPACE TOTAL ASIGNADO TOTAL LIBRE TOTAL USADO % LIBRE

2. si la disponibilidad es menor al 20% iniciar con la depuración de la información vieja o


asignar es espacio necesario.

Compilación y reporte de Objetos inválidos

Objetivo: Identificación de objetos inválidos, como la razón de cuál es su error.

Justificación: Oracle invalida objetos en la base de datos si sus dependencias han sufrido
modificaciones en su estructura.

Si uno vuelve a reconstruir una tabla, los índices de esa tabla se invalidan porque utilizan ROWIDs
de la tabla y de la reconstrucción de la tabla cambia rowid de una fila. Es lo mismo con los objetos
como paquetes, procedimientos y funciones.

Condiciones:

a) Identificar objetos inválidos y el error no afecta la operación


b) Aplica en cualquier versión de oracle.
c) Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad.


Coordinación Nacional del Programa Inclusión 19 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

1. Para compilar los objetos inválidos es necesario ejecutar el siguiente script directamente
desde el servidor donde se localiza la base de datos:

@$ORACLE_HOME/rdbms/admin/utlrp.sql;

2. Identificar los objetos que aún se encuentran inválidos y obtener su error:


select owner, object_name, object_type, created, status
from dba_objects
where status ='INVALID'
ORDER BY 1,2;

SELECT OWNER, NAME, LINE,TEXT, POSITION FROM DBA_ERRORS


WHERE OWNER = '[NOMBRE_ESQUEMA]';

3. Generar tabla de control con la información obtenida.

BD ERROR CAUSA ACCIONES Responsable Fecha de Indicaciones Estado


INVALIDO RECOMENDADAS del objeto Notificación final del
ESQUEMA OBJETO TIPO ESTADO objeto
PLDOT_SGP ESCUELA SYNONYM INVALID
PLDOT_SGP INSCRIPCION SYNONYM INVALID
PLDOT_SGP INTEGRANTE SYNONYM INVALID
PLDOT_SGP ORGANISMO SYNONYM INVALID

Acciones durante la actividad:

4. Reportar a las áreas de desarrollo correspondiente y esperar sus indicaciones. Ver


documento PROC_MEJORAR_RENDIMIENTO_DB_v1.docx

Regeneración de índices, Desfragmentar y reorganizar Índices


(Rebuild Indices)

Objetivo: Reconstruir índices para su mejor rendimiento al momento de consultarlos.

Justificación: Identificar índices que requieran ser desfragmentados o reconstruidos para:


Coordinación Nacional del Programa Inclusión 20 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

-Aquellos que requieran liberar espacio.

-Aquellos que requieran ser reorganizados porque la estructura se ha degradado.

-Reorganizar más globalmente el almacenamiento del índice: cambiar de tablespace, reducción del
número de extensiones, cambio de PCTFREE.

-Bajo ritmo de ocupación medio de los bloques y/o profundidad importante del índice:

El almacenamiento interno de un índice puede considerarse degradado si se cumplen una o varias


de las condiciones siguientes:

i) La relación entre DEL_LF_ROWS/LF_ROWS es elevada (superior a entre 10% y 20%)


ii) El porcentaje de ocupación (PCT_USED) es bajo (inferior a 70%)
iii) La profundidad del árbol del índice (HEIGHT) es elevada (estrictamente superior a 5)

Un incorrecto llenado de los bloques puede estar ligado a un valor inadecuado de PCTFREE en el
momento de la creación del índice y/o a un índice muy cambiante (numerosas actualizaciones).
Éste segundo tiene un impacto en el rendimiento y sobre la utilización de espacio en Database
Buffer cache. Cuanto menos llenos están los bloques, más voluminoso y profundo es el índice, lo
que aumenta el número de entradas/salidas para el recorrido del árbol.

También es posible eliminar el índice y después crearlo, aunque una reconstrucción (ALTER
INDEX… REBUILD) es más interesante.

La tabla siguiente resumen las técnicas posibles (Y) y aquellas que mejor se adaptan (ó) a una u
otra necesidad.

DEALLOCATE COALESCE SHRINK REBUILD


Liberar espacio ó Y Y
por encima de
HWM
Mejorar el ritmo ó ó ó
de llenado de los
bloques
Reorganizar ó
globalmente
Coordinación Nacional del Programa Inclusión 21 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

El ALTER INDEX…COALESCE permite fusionar el contenido de los bloques hojas adyacentes que
contienen espacio libre. Podemos decir que dos bloques hijas adyacentes que tienen 50% de
espacio libre, se puede fusionar en un solo bloque, lo que libera un bloque.

La Sentencia ALTER INDEX … SHRINK SPACE es, permite compactar las líneas de un índice,
aunque únicamente para un índice almacenado en un tablespace gestionado localmente de
forma automática del espacio en los segmentos. Se compactan segmentos, ajusta la HWM y
libera el espacio.

La sentencia ALTER INDEX… REBUILD permite reconstruir totalmente un índice (bloques ramas y
bloques hojas) y reorganiza su almacenamiento.

Condiciones:

a) La identificación de objetos no tienen ningún impacto.


b) Regenerar índices tiene impacto en la operación, por lo cual debe realizarse en horario no
operativo.
c) Aplicar estadísticas.
d) Aplica en cualquier versión de oracle.
e) Crear script de ejecución.
f) Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad.

1. Identificar los índices que requieran ser reconstruidos mediante las siguientes consultas.
Los índices los cuales requieren reconstrucción por las veces que los procesos de Oracle a
tenido que reconstruir la búsqueda, se recomienda realizar la reconstrucción de índices
con los valores 3 y 4 o mayor. También se recomienda identificar los índices UNUSABLES
que pueden ser reconstruidos.

/*******************************************************************************
************/
/*******Indices que requieren ser regenerados *********************************/
/*******************************************************************************
Coordinación Nacional del Programa Inclusión 22 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

************/

set linesize 300


set pagesize 300

SELECT OWNER,index_name, blevel,


DECODE(blevel,0,'OK BLEVEL',1,'OK BLEVEL',2,
'OK BLEVEL',3,'OK BLEVEL',4,'OK BLEVEL','BLEVEL HIGH') OK
FROM dba_indexes where
DECODE(blevel,0,'OK BLEVEL',1,'OK BLEVEL',2,
'OK BLEVEL',3,'OK BLEVEL',4,'OK BLEVEL','BLEVEL HIGH')='BLEVEL HIGH'
and (index_name NOT LIKE 'SYS%' and index_name NOT LIKE 'AQ$%');

/********Indices inservibles = Unusables


SELECT 'alter index '||index_name||' rebuild tablespace '||tablespace_name ||';'
FROM dba_indexes
WHERE status = 'UNUSABLE';

2. Crear la tabla siguiente con la información obtenida:

OWNER INDEX_NAME INDEX_TYPE BLEVEL OK

3. Para la siguiente opción se recomienda ejecutar fuera de horario operativo la siguiente


instrucción sobre los índices y consultar el paso 4:
analyze index esquema.index_name validate structure;

4. Identificar los índices degradados donde la relación DEL_LF_ROWS/LF_ROWS es elevada


(superior a entre 10% y el 20%), el porcentaje de PCT_USED es bajo (inferior al 70%) y
HEIGHT es elevada superior a 5, con la siguiente consulta.

SELECT height,pct_used, ROUND(del_lf_rows/lf_rows*100) PCT_DEL


FROM index_stats WHERE name=’[index_name]’

5. Generar la siguiente tabla :


Coordinación Nacional del Programa Inclusión 23 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

OWNER INDEX_NAME HEIGHT PCT_USED PCT_DEL

Acciones durante la actividad:

6. Identificar el estatus (valido e invalido o unusables) de los objetos tales como índices,
costraint.
7. Generar y ejecutar script con las sentencias a ejecutar.

Regenerar Índices con la siguiente sentencia:


alter index ESQUEMA.INDICE rebuild tablespace NOMBRE_TABLESPACE;

Aplicar shrink en los Índices con la siguiente sentencia:


Alter index ESQUEMA.INDICE shrink space compact;

8. Compilar nuevamente objetos.


9. Identificar el estatus (valido e invalido o unusables) posterior a la ejecución, comparar y
verificar que los objetos posterior a las actividades cuenten con el mismo estatus.
10. Aplicar estadísticas.

Reorganizar el almacenamiento de una tabla.

Objetivo: Corregir tablas fragmentadas para liberar espacio, mejorar el rendimiento en las
consultas, corregir problemas de migración.

Justificación: Esta situación se da en sistemas OLTP donde con el tiempo, y con las
inserciones/borrados de registros en determinadas tablas, se van generando espacio no
reutilizables por las nuevas inserciones por falta de espacio en los bloques incompletos, y a la
larga caídas de rendimiento en los sistemas.
Coordinación Nacional del Programa Inclusión 24 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Identificar tablas que requieran para:

-Liberar espacio libre por encima de la HWM.

-Mejorar el ritmo de llenado de los bloques.

-Cambio de tablespace, reducción del número de extensiones, cambiar el PCTFREE.

-Cuando se compacta un índice, se requieren menos operaciones de I/O para obtener un ROWID
en el índice.

-La tabla ha crecido muchos bloques y el espacio antiguo no ha sido reutilizado

Varias técnicas están a nuestra disposición cómo:

-Sentencias SQL ALTER TABLE ... DEALLOCATE UNUSED;

- Recrear la tabla / las líneas de la tabla.

- exportación/importación.

-Sentencias SQL ALTER TABLE ... SHRINK SPACE

-Sentencia SQL ALTER TABLE ... MOVE

La tabla siguiente resume las técnicas posibles (Y) y aquellas que mejor se adapten (ó) a una u otra
necesidad.

DEALLOCATE Recrear Export/Import SHRINK MOVE


Liberar espacio por encima de ó Y Y Y Y
HWM
Mejor el ritmo de llenado de los Y Y ó ó
bloques.
Corregir un problema de Ó Y Ó
migración.
Reorganizar más global. Y Y ó

El Export/Import es la técnica base para reorganización masiva, fundamentalmente en caso de


cambio del tamaño del bloque.
Coordinación Nacional del Programa Inclusión 25 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Las sentencias ALTER TABLE… MOVE y ALTER TABLE… SHRINK SPACE son buenas herramientas
para “”reconstruir” una tabla.

La sentencia ALTER TABLE… DEADLLOCTAE UNUSED permite liberar el espacio de una tabla situada
por encima de la HWM.

La vista DBA_SEGMENTS y DBA_EXTENTS permite ver el espacio global asignado a la tabla, aunque
no dan información sobre el número de bloques realmente utilizados.

Para cada tabla (y más generalmente, para cada segmento), Oracle conoce el último bloque
utilizado por la tabla: es la high wáter mark (HWM –“marca de agua”).

La HWM aumenta a causa de las inserciones aunque disminuye cuando se producen


eliminaciones:

El HWM permite conocer el número total máximo de bloques utilizados por la tabla en toda su
existencia, aunque no el número de bloques actualmente utilizados ni su llenado.

Eliminar la tabla y después crearla de nuevo permite evidentemente reorganizar el


almacenamiento. Éste método presenta un inconveniente mayor, los objetos dependientes se
eliminan o invalidan, es necesario por lo tanto, pensar en crear todo de nuevo junto con la tabla.
Una variante posible consiste en no eliminar la tabla sino truncarla (sentencia SQL TRUNCATE
TABLE); en este caso, los objetos dependientes se preservan. Ésta variante ofrece menos
posibilidades para reorganización ya que la tabla no ha sido recreada; no obstante permite
mejorar el ritmo de llenado de los bloques (liberar espacio por debajo de la HWM) y resolver
problemas de migarción. No es posible truncar una tabla que tenga una restricción de clave
primaria referenciada; es necesario desactivar las restricciones de clave foráneas implicadas, así
también los trigger ya que se activan al insertar verificando las restricciones de integridad.

En la práctica ninguna de ésas diferentes variantes es verdaderamente sencilla. Además la tabla no


está disponible durante la reorganización.
Coordinación Nacional del Programa Inclusión 26 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

En Oracle 10g surge la funcionalidad shrink table, que no sólo permite la recuperación de
este espacio y recuperación del acceso óptimo a la misma, sino que permite realizarlo en 2
fases diferenciadas disminuyendo el tiempo de afectación a los usuarios.

La sentencia ALTER TABLE … SHRINK SPACE permite compactar las líneas de una tabla, aunque
únicamente para una tabla almacenada en un tablespace gestionado localmente con una gestión
automática del espacio de los segmentos. Por defecto, Oracle compacta también el segmento,
ajusta la HWM y libera el espacio recuperado. La opción COMPACT, compacta las líneas, aunque
sin ajustar la HWM ni liberar espacio. La ejecución posterior de otra sentencia ALTER TABLE …
SHRINK SPACE permite terminar la operación. La opción CASCADE permite realizar la misma
operación en los segmentos dependientes de la tabla, fundamentalmente índices.

Esta operación necesita un desplazamiento de las líneas y, por tanto, una modificación del ROWID
de las líneas desplazadas. Por defecto, un desplazamiento como éste no está autorizado. Para
autorizar el desplazamiento de las líneas de la tabla, puede ejecutar la sentencia ALTER TABLE
nombre_tabla ENABLE ROW MOVEMENT. En el momento del desplazamiento de las líneas y de la
modificación del ROWID, Oracle actualiza los índices.

Condiciones:

a) Para tener la diferencia exacta del tamaño actual (dba_segments) y el tamaño de las stats
(dba_tables). La diferencia entre estos valores reportara la verdadera fragmentación al
DBA. Así que para tener actualizadas las stats en dba_tables. Revisar el valor de
LAST_ANALYZED de la tabla en dba_tables por lo tanto debemos contar con estadísticas
actualizadas.
b) Identificar objetos tablas que requieran ser corregir su desfragmentación no tiene impacto
en la operación.
c) Los siguientes objetos son candidatos para aplicar segment shrink:
- Tablas.
- Indices normales e índices de tablas organizadas por índice.
- Tablas particionadas y sub-particionadas.
- Vistas materializadas y materialized view logs.
- Solo es aplicable a las tablas que tengan activado “auto segment space
management.
d) Existen algunas restricciones para realizar operaciones de compactación. Primero, el
tablespace que contiene los objetos a compactarse debe ser administrado con Automatic
Coordinación Nacional del Programa Inclusión 27 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Segment Space Management (ASSM). Asimismo, existen algunos objetos que no pueden
ser compactados:
Tablas en cluster.
Tablas con columnas de tipo LONG.
Tablas con vistas materializadas con on-commit o basadas en ROWID.
Tablas que contienen índices basados en funciones.
Tablas organizadas por índice de tipo IOT (mapping tables).
e) Aplica en cualquier versión de Oracle 10G en adelante.
f) Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad.

1. Identificar objetos que el tamaño total de la fragmentación esperada y cuanto porcentaje


del tamaño se puede reclamar después de remover la fragmentación. Este query obtiene
datos de dba_tables, así que la precisión del resultado depende de los stats del dba_table.
Si hay espacio reclamable mayor al 20%, entonces podemos esperar que exista
fragmentación en esta tabla, el 50% puede proceder a remover la fragmentación.

column owner for a30


column table_name for a30
COLUMN Tamanio_fragmentado for a30
COLUMN Tamanio_Actual for a30
COLUMN TAMANO for a30
COLUMN espacio_reclamable for a30
set pages 50000 lines 32767
select owner,table_name,
round((blocks*8),2)||’kb’ “Tamanio_fragmentado”,
round((num_rows*avg_row_len/1024),2)||’kb’ “Tamanio_Actual”,
round((blocks*8),2)-round((num_rows*avg_row_len/1024),2)||’kb’ "TAMANO",
((round((blocks*8),2)-round((num_rows*avg_row_len/1024),2))/
round((blocks*8),2))*100 -10 “espacio_reclamable % ”
from dba_tables
where OWNER = ‘[esquema]’
and blocks>0
and
Coordinación Nacional del Programa Inclusión 28 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

(((round((blocks*8),2)-round((num_rows*avg_row_len/1024),2))/
round((blocks*8),2))*100 -10) >20 ;

2. Identificar tablas con high water mark:

set verify off


column owner format a10
column alcblks heading 'Allocated|Blocks' just c
column usdblks heading 'Used|Blocks' just c
column hgwtr heading 'High|Water' just c
break on owner skip page

select
a.owner,
a.table_name,
b.blocks alcblks,
a.blockS usdblks,
(b.blocks-a.empty_blocks-1) hgwtr
from dba_tables a, dba_segments b
where
a.table_name=b.segment_name
and a.owner=b.owner
and a.owner not in('SYS','SYSTEM')
and a.blocks <> (b.blocks-a.empty_blocks-1)
order by 1,2;

Nota: El remedio para una high water mark demasiado alta (por ejemplo,
una tabla fragmentada tendrá muchos bloques vacíos) es reorganizar la
tabla con Data Pump (expdp e impdp), la utilidad dbms_redefinition o con
shrink o coalesce sobre la tabla.

Acciones durante la actividad:

3. Identificar el estatus (valido e invalido o unusables) de los objetos tales como índices,
costraint.
4. Generar y ejecutar script con las sentencias a ejecutar. Ejecute cualquiera de las dos
opciones siguientes:
Coordinación Nacional del Programa Inclusión 29 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

A) Alter table move (mover la tabla a otro tablespace o dentro del mismo tablespace) y
reconstruir índices.

B) Comando Shrink (de Oracle 10g para arriba) (el comando shrink solo es aplicable a las
tablas que tengan activado “auto segment space management).

A.1) En este paso moveremos la tabla fragmentada a otro espacio (o al mismo) para recuperar
el espacio fragmentado, encuentra el tamaño actual de la tabla de los segmentos de
dba_segments y revisa si continua con el mismo espacio libre.

Mover las tablas a un nuevo tablespace o en el mismo


ALTER TABLE <table_name> MOVE; <—mueve la tabla al mismo tablespace
Ó

ALTER TABLE <table_name> ENABLE ROW MOVEMENT;


ALTER TABLE <table_name> MOVE TABLESPACE <nuevo_tablespace>;

Regresarlo al tablespace antiguo usando el siguiente comando:

ALTER TABLE table_name MOVE TABLESPACE tablespace_viejo;

Reconstruir los índices:

ALTER INDEX <INDEX_NAME> REBUILD ONLINE;

B.1) Para que el DBA lleve a cabo esta recuperación de espacio puede seguir los
siguientes pasos:

Habilitación de movimiento de filas


ALTER TABLE tabla_nombre ENABLE ROW MOVEMENT;

Movimiento de las filas


Coordinación Nacional del Programa Inclusión 30 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

ALTER TABLE tabla_nombre SHRINK SPACE COMPACT;

Reseteo HWM
ALTER TABLE tabla_nombre SHRINK SPACE;

5. Revisar nuevamente el tamaño de las tablas identificadas:

column owner for a30


column table_name for a30
COLUMN Tamanio_fragmentado for a30
COLUMN Tamanio_Actual for a30
COLUMN TAMANO for a30
COLUMN espacio_reclamable for a30
set pages 50000 lines 32767
select owner,table_name,
round((blocks*8),2)||’kb’ “Tamanio_fragmentado”,
round((num_rows*avg_row_len/1024),2)||’kb’ “Tamanio_Actual”,
round((blocks*8),2)-round((num_rows*avg_row_len/1024),2)||’kb’ "TAMANO",
((round((blocks*8),2)-round((num_rows*avg_row_len/1024),2))/
round((blocks*8),2))*100 -10 “espacio_reclamable % ”
from dba_tables
where OWNER = ‘UNIVERSO’
and blocks>0
and
(((round((blocks*8),2)-round((num_rows*avg_row_len/1024),2))/
round((blocks*8),2))*100 -10) >20 ;

6. Identificar el estatus (valido e invalido o unusables) posterior a la ejecución, comparar y


verificar que los objetos posterior a las actividades cuenten con el mismo estatus.
7. Aplicar estadísticas.
Coordinación Nacional del Programa Inclusión 31 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Registros Encadenados

Objetivo: Identificar y rectificar las situaciones que implican filas migrados o encadenados.

Justificación: El encadenamiento de filas se produce por que las filas se encuentran en más de un
bloque. Es decir, si se almacenan filas cuya longitud es mayor que el tamaño del bloque de Oracle,
se produce un encadenamiento de manera automática. Las tablas que contienen más de 255
columnas siempre presentarán encadenamiento.

Condiciones:

a) La identificación de objetos no tienen ningún impacto.


b) Liberar filas encadenas tiene un impacto, por lo que se sugiere realizar fuera de horario
operativo.
c) Aplica en cualquier versión de oracle.
d) Crear script de ejecución.
e) Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad.

1. Ejecutamos la siguiente consulta:


SELECT owner, table_name, chain_cnt FROM all_tables WHERE chain_cnt > 0;

SELECT TABLE_owner, table_name,PARTITION_NAME, chain_cnt FROM


DBA_TAB_PARTITIONS WHERE chain_cnt > 0;

2. Crea la tabla donde se almacenara el análisis. En caso de existir truncarla para dejarla
vacia.
Coordinación Nacional del Programa Inclusión 32 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

create table DBD_MONITOREO.CHAINED_ROWS (


owner_name varchar2(30),
table_name varchar2(30),
cluster_name varchar2(30),
partition_name varchar2(30),
subpartition_name varchar2(30),
head_rowid rowid,
analyze_timestamp date
);

3. Seleccionar la opción que mejor le convenga:


a) Ejecute la sentencia de forma individual por tabla identificada, la cual almacenará en la
tabla creada.

SELECT 'ANALYZE TABLE ' || OWNER||'.'||TABLE_NAME ||' LIST CHAINED


ROWS INTO DBD_MONITOREO.CHAINED_ROWS;'
FROM DBA_TABLES
WHERE OWNER NOT IN
('ANONYMOUS',
'APEX_030200',
'APEX_PUBLIC_USER',
'APPQOSSYS',
'ASF',
'CTXSYS',
'DBL_WEB_ENCA',
'DBSNMP',
'DIP',
'EXFSYS',
'FLOWS_030000',
'FLOWS_FILES',
'MDDATA',
'MDSYS',
'MGMT_VIEW',
'OAS_PUBLIC',
'ODM',
'ODM_MTR',
'OLAPSYS',
'ORACLE_OCM',
'ORAEG',
'ORDDATA',
'ORDPLUGINS',
Coordinación Nacional del Programa Inclusión 33 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

'ORDSYS',
'OUTLN',
'OWBSYS',
'OWBSYS_AUDIT',
'PERFSTAT',
'SI_INFORMTN_SCHEMA',
'SPATIAL_CSW_ADMIN_USR',
'SPATIAL_WFS_ADMIN_USR',
'SPOTLIGHT',
'SYS',
'SYSMAN',
'SYSTEM',
'TEST',
'TOAD',
'TSMSYS',
'WK_TEST',
'WKPROXY',
'WKSYS',
'WMSYS',
'XDB',
'XS$NULL')
ORDER BY OWNER,TABLE_NAME;

Ejecutar las sentencias y consultar la table DBD_MONITOREO.CHAINED_ROWS:

Select table_name, count(*)


from dbd_monitoreo.chained_rows
group by table_name
order by 2
/

b) Considerar todos los esquemas excepto los esquemas del motor de oracle.
Ejecutar el paquete programado
DBD_MONITOREO.pg_revision_tablas.inicio_proceso, el cual tarda
aproximadamente 2 horas, obtienen información importante de las registros
encadenas entre otros datos descartando esquema del motor de oracle.

---script para análisis de Tablas e índices


Coordinación Nacional del Programa Inclusión 34 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

----------------------------- Detalle de objetos (pegar en hoja


BD_Objetos_DETALLE)

SET SERVEROUTPUT ON
SET FEEDBACK ON
SET LINESIZE 1000
BEGIN
FOR r
IN (SELECT username
FROM dba_users
WHERE username NOT IN
('ANONYMOUS',
'APEX_030200',
'APEX_PUBLIC_USER',
'APPQOSSYS',
'ASF',
'CTXSYS',
'DBL_WEB_ENCA',
'DBSNMP',
'DIP',
'EXFSYS',
'FLOWS_030000',
'FLOWS_FILES',
'MDDATA',
'MDSYS',
'MGMT_VIEW',
'OAS_PUBLIC',
'ODM',
'ODM_MTR',
'OLAPSYS',
'ORACLE_OCM',
'ORAEG',
'ORDDATA',
'ORDPLUGINS',
'ORDSYS',
'OUTLN',
'OWBSYS',
'OWBSYS_AUDIT',
'PERFSTAT',
'SI_INFORMTN_SCHEMA',
'SPATIAL_CSW_ADMIN_USR',
Coordinación Nacional del Programa Inclusión 35 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

'SPATIAL_WFS_ADMIN_USR',
'SPOTLIGHT',
'SYS',
'SYSMAN',
'SYSTEM',
'TEST',
'TOAD',
'TSMSYS',
'WK_TEST',
'WKPROXY',
'WKSYS',
'WMSYS',
'XDB',
'XS$NULL')
order by 1)
LOOP
DBD_MONITOREO.pg_revision_tablas.inicio_proceso (r.username,
1);
END LOOP;
END;
/

4. Identificar los objetos con la columna de encadenados mayor a 0.

Acciones durante la actividad:

5. Compilar objetos. Identificar el estatus (valido e invalido o unusables) de los objetos tales
como índices, constraint, etc.

6. Reparar estas filas ejecutamos la siguiente sentencia por cada tabla:

Mover las tablas a un nuevo tablespace o en el mismo


6.a)
ALTER TABLE <table_name> MOVE; <—mueve la tabla al mismo tablespace
Ó

6.b)
Coordinación Nacional del Programa Inclusión 36 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

ALTER TABLE <table_name> ENABLE ROW MOVEMENT;


ALTER TABLE <table_name> MOVE TABLESPACE <nuevo_tablespace>;

Regresarlo al tablespace antiguo usando el siguiente comando:

ALTER TABLE table_name MOVE TABLESPACE tablespace_viejo;

7. Compilar nuevamente objetos.


8. Identificar el estatus (valido e invalido o unusables) posterior a la ejecución, comparar y
verificar que los objetos posterior a las actividades cuenten con el mismo estatus.
9. Aplicar estadísticas.
10. Truncar la tabla DBD_MONITOREO.CHAINED_ROWS y ejecutar las sentencias nuevamente
o paquete. Verificar que objetos aún tiene encadenados.

Estimación del PCTFREE

Objetivo: Ajustar PCTFREE adecuado y mejorar el uso de espacio libre.

Justificación: Recomendación para el almacenamiento de las tablas, al menos para las más
importantes de la aplicación. El espacio libre en el interior del segmento puede gestionarse
automáticamente o manualmente. La disponibilidad o la no disponibilidad de un bloque para la
inserción está controlada por dos parámetros de la definición de la tabla: PCTFREE y PCTUSED. Por
definición PCTFREE+PCTUSED debe ser estrictamente inferior a 100.

Para reducir la posibilidad de encadenamientos por modificaciones de filas en el bloque es


interesante dejar un porcentaje libre en cada bloque. Las tuplas se almacenan en Oracle como
registros de tamaño variable, es decir, no se reserva espacio fijo para cada tupla. Cuando se
producen modificaciones sobre atributos que amplían su tamaño, puede ocurrir que una tupla no
quepa en un bloque, y haya que repartirla entre dos bloques (row chaining, filas encadenadas). En
este caso el recuperar esta fila supondrá realizar muchos más accesos al disco. La sugerencia es
aumentar el PCTFREE.
Coordinación Nacional del Programa Inclusión 37 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Para que varias inserciones se puedan hacer sobre un mismo bloque y así evitar muchos accesos al
disco, se puede establecer un espacio mínimo para poder insertar filas en ese bloque, este
porcentaje se establece mediante el parámetro PCTUSED.

El valor óptimo del PCTFREE puede estimarse mediante la fórmula siguiente:

PCTFREE = 100 X (1- Ti / Tf)

Ti= Es el tamaño medio inicial de la línea de bytes (En el momento de la inserción)

Tf = Es el tamaño final de la línea de en bytes (después de las actualizaciones).

Los valores Ti y Tf pueden estimarse a partir de las estadísticas de la tabla (AVG_ROW_LEN). Esta
fórmula está destinada sobretodo, al cálculo del valor de PCTFREE con respecto a las tablas para
las que el tamaño de las líneas insertadas inicialmente no es representativo del tamaño final de las
líneas después de una o varias modificaciones.

Sin calculo: Para una tabla “estática” o que únicamente es objeto de inserciones, es mejor poner
un PCTFREE pequeño para obtener un buen llenado de bloques (0 a 5). Para una tabla que es
objeto de inserciones y modificaciones se aconseja, poner un PCTFREE más grande para evitar los
fenómenos de migración (10 a 50 en función del riesgo de que las actualizaciones hagan crecer
más o menos líneas).

PCTFREE: valor entre 0 y 99. Si no existen actualizaciones, asignar 0.

Si es una tabla log, histórica que solo se aplican transacciones Insert debería tener un PCTFREE
de 0%.
Si es una tabla que sirve como data warehouse el PCTFREE deberá configurarse con 0%.
Si es una tabla transaccional que sufre de inserts, update y delete deberá configurarse un
PCTFREE superior a 0%.

El PCTUSED toma valores entre 1 y 99. Se especifica si se eliminan filas. No es


configurable para tablas organizadas por índices.

PCTUSED=100-PCTFREE-(100*tam_prom_tuplas/blocksize)

Tam_prom_tuplas. Tamaño promedio de una fila

Tam_inic_tuplas: tamaño promedio de una fila al insertarse.


Coordinación Nacional del Programa Inclusión 38 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

El mecanismo de vigilancia puede utilizarse para analizar la actividad en las tablas e identificar las
tablas más solicitadas en cuanto a actualización; éstas son las tablas en las que se debe poner
atención por lo que respecta al almacenamiento (ajuste de PCTFREE fundamentalmente).

La información sobre las tablas monitorizadas puede consultarse en la vista


DBA_TAB_MODIFICACIONES, entre otras. SI hay necesidad el procedimiento
FLUSH_DATABASE_MONITORING_INFO del paquete DBMS_STATS puede utilizarse para formar la
actualización inmediata del diccionario. Para un buen análisis es necesario realizar controles
periódicos con el fin de ver la evolución de las actividades e identificar períodos de picos.

Condiciones:

1. Del proceso de Registros encadenados, identificar el tamaño de las tablas pude ser en
horario operativo.
2. El cambio del parámetro puede tener impacto por lo que es recomendable realizarlo en
horario No operativo.
3. Generar log de salida con la evidencia de las acciones.

Proceso:

Acciones previas a la actividad.

1. Identificar las tablas de mayor tamaño que tengan registros encadenados.


2. Generar tabla de control:

OWNER OBJECT_NAME INDEX_TYPE COUNT_REG ENCADENADO (Y/n) PCTFREE PCTFREE CALCULADO

Acciones durante la actividad:

3. Compilar objetos. Identificar el estatus (valido e invalido o unusables) de los objetos tales
como índices, constraint, etc.
4. Aplicar cambios de PCTFREE:
ALTER TABLE table PCTFREE 10;
ALTER TABLE table PCTUSED 40;
Coordinación Nacional del Programa Inclusión 39 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

5. Compilar objetos. Identificar el estatus (valido e invalido o unusables) posterior a la


ejecución, comparar y verificar que los objetos posterior a las actividades cuenten con el
mismo estatus.

Consultas recomendaciones del ADDM

Objetivo: Consultar las recomendaciones hechas por Oracle a través del ADDM.

Justificación: La base de datos de control de diagnóstico automático ( ADDM ) analiza los datos de
la carga de trabajo de repositorio automático ( AWR ) para identificar posibles cuellos de botella
de rendimiento. Para cada uno de los problemas identificados se localiza la causa raíz y
proporciona recomendaciones para corregir el problema. Una tarea de análisis ADDM se lleva a
cabo y sus resultados y recomendaciones que almacena en la base de datos cada vez que se toma
un snapshot AWR.

El análisis ADDM incluye lo siguiente:

 CPU load
 Memory usage
 I/O usage
 Resource intensive SQL
 Resource intensive PL/SQL and Java
 RAC issues
 Application issues
 Database configuration issues
 Concurrency issues
 Object contention

Las recomendaciones pueden incluir:

 cambios de hardware
 Los cambios de configuración de base de datos
 Los cambios de esquema
Coordinación Nacional del Programa Inclusión 40 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

 cambios en las aplicaciones


 Uso de otros asesores

Acciones previas a la actividad.

1. Ejecutar la siguiente consulta o revisar desde el OEM.

Set pages 3000


Set lines 75
Select a.execution_end, b.type, b.impact, d.rank, d.type,
'Message : '||b.message MESSAGE,
'Command To correct: '||c.command COMMAND,
'Action Message : '||c.message ACTION_MESSAGE
From DBA_ADVISOR_TASKS a, DBA_ADVISOR_FINDINGS b,
Dba_advisor_actions c, dba_advisor_recommendations d
Where a.owner=b.owner and a.task_id=b.task_id
And b.task_id=d.task_id and b.finding_id=d.finding_id
And a.task_id=c.task_id and d.rec_id=c.rec_Id
And a.task_name like 'ADDM%' and a.status='COMPLETED'
--And TO_CHAR(a.execution_end)=TO_CHAR(SYSDATE)
Order by a.EXECUTION_END Asc,b.impact, d.rank;

2. Consultar la siguiente sentencia, y revisar las recomendaciones sobre los objetos.

select segment_owner||'|'
||segment_name||'|'
||round(allocated_space/1024/1024,1)||'|'
||round( used_space/1024/1024, 1 ) ||'|'
||round( reclaimable_space/1024/1024)||'|'
||round(reclaimable_space/allocated_space*100,0)||'|'
||recommendations
from table(dbms_space.asa_recommendations());

3. Revisar y analizar las recomendaciones realizadas.


Coordinación Nacional del Programa Inclusión 41 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Aplicar Estadísticas Tablas e índices

Objetivo: Mejorar el rendimiento de la base de datos y disminuir tiempos en las consultas.

exec dbms_stats.gather_table_stats(ownname=> 'SYSMAN', tabname=>


'MGMT_POLICY_RULE_DEF_COLUMNS', partname=> NULL, DEGREE=> 1,
ESTIMATE_PERCENT=>100);

exec dbms_stats.gather_index_stats(ownname=> 'SYSMAN', indname=> 'MRDC_UK', partname=>


NULL, DEGREE=> 1, ESTIMATE_PERCENT=>100);

--Tablas no partiionadas

SELECT 'EXEC DBMS_STATS.GATHER_INDEX_STATS ('||CHR(39) || owner


||CHR(39)||','||CHR(39)|| index_name||CHR(39) ||' ,degree=>16, estimate_percent=>100 );'

FROM DBA_INDEXES

order by owner,index_name;

select 'exec dbms_stats.gather_table_stats(' || CHR(39)|| owner || CHR(39) || ',' || CHR(39)


||table_name || CHR(39) || ',' || 'cascade=>TRUE, estimate_percent=>100 ,degree=>16 )' || ';'

from dba_tables

order by owner,table_name;

----------- TABLAS PARTICIONADAS


Coordinación Nacional del Programa Inclusión 42 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

--select 'exec
dbms_stats.gather_table_stats('||chr(39)||table_owner||chr(39)||','||chr(39)||table_name||chr(39)||',
GRANULARITY => ''PARTITION'', PARTNAME => '||chr(39)||PARTITION_NAME||chr(39)||',
ESTIMATE_PERCENT=>100);'
--from DBA_TAB_PARTITIONS
--where table_name IN ('TRANSFERENCIA') AND table_OWNER IN ('PADRON')
--order by table_owner,table_name,partition_name;
--
-------- TABLAS SUBPARTICIONADAS
--select 'exec
dbms_stats.gather_table_stats('||chr(39)||table_owner||chr(39)||','||chr(39)||table_name||chr(39)||',
GRANULARITY => ''SUBPARTITION'', PARTNAME => '||chr(39)||SUBPARTITION_NAME||chr(39)||',
ESTIMATE_PERCENT=>100);'
--from DBA_TAB_SUBPARTITIONS
--where table_name IN ('TRANSFERENCIA') AND table_OWNER IN ('PADRON')
--order by table_owner,table_name,partition_name;

Para identificar y modificar el stale_procent, que es umbral de estancamiento para aplicar


estadísticas, usra la sigientes sentencias, por default es de 10%.

/******************** IDENTIFICA EL STALE_PERCENT DE LAS TABLAS


/********ES DECIR ES EL UMBRAL DE PORCENTAJE (EL PORCENTAJE DE ESTANCACAMIENTO)
PARA PODER APLICAR ESTADÍSTICAS, SI ESTA EN ESTE PORCENTAJE APLICA ESTADÍTICAS
/******* Y EL CAMPO STALE_STATS ESTAN LAS ESTADISTICAS DESACTUALIZADAS EN
dba_tab_statistics Y EN dba_ind_statistics SI ES si= DESACTUALIZADA NO=NO DESACTUALIZADA.

SET LINESIZE 250

COLUMN autostats_target FORMAT A20


COLUMN cascade FORMAT A25
COLUMN degree FORMAT A10
COLUMN estimate_percent FORMAT A30
COLUMN method_opt FORMAT A25
COLUMN no_invalidate FORMAT A30
COLUMN granularity FORMAT A15
Coordinación Nacional del Programa Inclusión 43 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

COLUMN publish FORMAT A10


COLUMN incremental FORMAT A15
COLUMN stale_percent FORMAT A15

SELECT DBMS_STATS.GET_PREFS('AUTOSTATS_TARGET') AS autostats_target,


DBMS_STATS.GET_PREFS('CASCADE') AS cascade,
DBMS_STATS.GET_PREFS('DEGREE') AS degree,
DBMS_STATS.GET_PREFS('ESTIMATE_PERCENT') AS estimate_percent,
DBMS_STATS.GET_PREFS('METHOD_OPT') AS method_opt,
DBMS_STATS.GET_PREFS('NO_INVALIDATE') AS no_invalidate,
DBMS_STATS.GET_PREFS('GRANULARITY') AS granularity,
DBMS_STATS.GET_PREFS('PUBLISH') AS publish,
DBMS_STATS.GET_PREFS('INCREMENTAL') AS incremental,
DBMS_STATS.GET_PREFS('STALE_PERCENT') AS stale_percent
FROM dual;

----Consultamos el valor para todas las tablas del esquema donde queremos modificar
STALE_PERCENT
SELECT owner, table_name,
DBMS_STATS.GET_PREFS(ownname=>'DBD_MONITOREO',tabname=>table_name,pname=>'STALE
_PERCENT')
FROM DBA_TABLES
WHERE owner = 'DBD_MONITOREO';

----.-Modificamos el STALE_PERCENT a 5% para algunas tablas, aquelas que tienen más de


1,000,000 de registros.

BEGIN
FOR c IN (SELECT TABLE_NAME, T.NUM_ROWS FROM DBA_TABLES T WHERE T.OWNER =
'DBD_MONITOREO' and T.NUM_ROWS > 1000000)
LOOP
DBMS_STATS.SET_TABLE_PREFS('DBD_MONITOREO', c.TABLE_NAME, 'STALE_PERCENT',
'5');
END LOOP;
Coordinación Nacional del Programa Inclusión 44 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

END;
/

Mover objetos a Memoria

Estás asignaciones, a la memoria KEEP y a la memoria RECYCLE evitan las lecturas físicas que son
más tardadas que las lecturas lógicas, para aumentar el rendimiento al reducir el número total de
E/S físicas. Esta asignación mejora el rendimiento de la base de datos.

La asignación de los objetos a estas memorias se hace en el STORAGE, al alterar o crear el objeto.

Los procedimientos de tamaño grande, los trigger a menudo ejecutados y usados por las tablas y
las secuencias, no han sido asignados a la memoria KEEP. Los objetos de gran tamaño son la
primera fuente de la fragmentación de la memoria shared pool.

Asignar a memoria KEEP

Requerimiento:

Contar con privilegios de DBA.


Activar la auditoria de DML para las acciones de “select” en todas las tablas.
Contar con espacio en el tablespace SYSTEM para el incremento de la tabla
DBA_AUDIT_OBJECT durante la auditoria.
Aplica para tablas pequeñas que sólo han sido consultadas.

Mediante la siguiente consulta podemos obtener las tablas que más han sido consultadas, previo
debe ser activada la auditoria:

set linesize 300


col owner format a10
col obj_name format a50
col action_name format a10
--obtiene las tablas que sólo son consultadas
Coordinación Nacional del Programa Inclusión 45 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

select owner,obj_name, action_name, count(*)


from DBA_AUDIT_OBJECT
where obj_name not in( select dao.obj_name
from DBA_AUDIT_OBJECT dao
where dao.action_name in
('insert','update','delete')
)
and owner <> 'sys'
group by owner,obj_name, action_name
having count(*) > 900;

La sentencia tiene el fin de contabilizar el número de veces que el objeto ha sido frecuentado

usando la acción “select”, sin que hayan tenido acciones de “insert”, “update” o “delete”.

La siguiente consulta obtiene la lista de tablas menores a 100,000 registros, considerado como un
criterio de tablas pequeñas.

--obtiene numero de filas


-+-de aquellas tablas
-- menores a 100,000 registros
SET LINESIZE 300
undef bd
Select '&bd' BD, t.owner, t.owner||'.'||t.table_name
Objeto,num_rows,(s.BYTES/1024) kB,
(select count(*) from dba_tab_columns tc
where tc.table_name= t.table_name and tc.owner=t.owner)
Tot_columns
from DBA_TABLES t, DBA_SEGMENTS s
where s.segment_name=t.table_name
and s.owner=t.owner
and t.num_rows<100000
and t.num_rows>0
and t.partitioned='no'
and t.owner in ('siscco')
AND s.buffer_pool NOT IN ('KEEP')
order by table_name;

Se compara y completa la lista de tablas de la primera lista con la segunda consulta, así obtener las
tablas pequeñas consultadas frecuentemente, dónde count(*) es el número de veces que se
Coordinación Nacional del Programa Inclusión 46 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

realizó la acción “select” en la tabla, num_rows es el número de registros contenidos en la tabla y


kbytes es el tamaño en Kbytes.

BD OWNER OBJ_NAME ACTION_NAM COUNT(*) NUM_ROWS kbytes

SIIOP PADRON CURP_PREPOSICIONES SELECT 14213884 19 64

SIIOP PADRON GRADO_ESCOLAR SELECT 4889223 18 64

SIIOP PADRON CONCEPTO_APOYO SELECT 3194206 57 64

SIIOP PADRON PERIODO_INCORPORACION SELECT 1752431 66 64

SIIOP PADRON PARAMETRO_SISTEMA SELECT 1716241 1 64

SIIOP PADRON ESTADO SELECT 1103337 37 64

Se considera el tamaño de la KEEP, por lo tanto, depende de los objetos que se desean mantener
en la caché del búfer. Se puede calcular un tamaño aproximado de la agrupación de Keep con la
suma de los bloques utilizados por todos los objetos asignados a este grupo. Si se recopila
estadísticas sobre los segmentos, se puede consultar DBA_TABLES.BLOCKS y
DBA_TABLES.EMPTY_BLOCKS para determinar el número de bloques utilizados

Se asigna el valor al parámetro db_keep_cache_size de la siguiente forma y se reinicia la instancia


de BD:

Alter system set db_keep_cache_size = 128M scope=spfile;

Posterior al cambio y si es necesario reiniciar la instancia, utilizar la cláusula siguiente para asignar
cada objeto seleccionado a la memoria Keep:

ALTER TABLE PADRON.MES STORAGE (BUFFER_POOL KEEP);

Identificar procedimientos grandes, trigger a menudo ejecutados y usados por las tablas, y
las secuencias, asignarlos a la memoria KEEP.
Coordinación Nacional del Programa Inclusión 47 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Mediante la siguiente consulta se identifican los procesos, funciones y trigger grandes y a menudo
utilizados. La columna Shared_mem > 10000 obtiene los objetos que es requerido enviar a la
memoria keep siempre y cuando tengan muchas ejecuciones.

column name format a30


column owner format a30

Select owner, name,kept, sharable_mem, executions, type


from v$db_object_cache
Where sharable_mem >10000
And (type=’PACKAAGE’ or type=’PACKAGE BODY’ or
Type=’FUNCTION’ or type=’PROCEDURE’ or TYPE=‘TRIGGER’)
AND KEPT=’NO’
AND OWNER not in (‘SYS’)
Order by 1,4;

Se identifica en el diccionario de datos las secuencias existentes.

select sequence_owner, sequence_name from dba_sequences;

Se asignan los objetos identificados a la memoria Keep mediante la siguiente sentencia.

EXECUTE SYS.DBMS_SHARED_POOL.KEEP(‘package_name’,’P’);

Dónde P corresponde a los tipos de objetos package, function y procedure.

R es para identificar un objeto de tipo trigger y Q para sequences.


Coordinación Nacional del Programa Inclusión 48 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Será necesario monitorear la memoria mediante la siguiente consulta, en la cual podremos


observar si el ratio de las memorias es menor a 98%, esto nos indicará que el tamaño actual no es
suficiente y requere de asignarse más memoria.

SELECT name,
100*(1-(physical_reads / (consistent_gets + db_block_gets)))
HIT_RATIO
FROM V$BUFFER_POOL_STATISTICS
WHERE ( consistent_gets + db_block_gets ) !=0;

Almacenar en Flash cache

/*********Para almacenar en flah cache


select owner||'.'||object_name
from v$bh, dba_objects
where v$bh.status like ('flash%');

The flash_cache is a new storage clause argument, very similar to the KEEP pool:

alter|create table|index
objectname
storage
(
buffer_pool { keep | recycle | default }
flash_cache { keep | none | default }
);

One confusing aspect of the flash_cache is that Oracle is treating the onboard flash memory as if
it were RAM, and not disk! For example, note that the flash_cache syntax also include a KEEP
argument, just like the buffer_pool assignment:
alter table
fred
storage (flash_cache keep);
alter table
fred
storage (flash_cache none);
Coordinación Nacional del Programa Inclusión 49 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

alter table
fred
storage (flash_cache default);

Identificar tablas grandes que raramente son utilizadas, asignarlas a la memoria RECYCLE.

Requerimiento:

Contar con privilegios de DBA.


Activar la auditoria de DML para las acciones de “select” en todas las tablas.
Contar con espacio en el tablespace SYSTEM para el incremento de la tabla
DBA_AUDIT_OBJECT durante la auditoria.
Se obtienen las tablas que con poca frecuencia han sido consultadas.
Se obtiene la lista de tablas (de acuerdo al criterio tablas mayores a 1,000,000 de registros)
consideradas como tablas grandes.

Se asigna el valor a la memoria RECYCLE:

Alter system set db_recycle_cache_size = 128M scope=spfile;

Posterior al cambio reiniciando la instancia, utilizar la cláusula siguiente para asignar los objetos a
la memoria Recycle:

ALTER TABLE PADRON.A_CAPTURA_CRUS STORAGE (BUFFER_POOL RECYCLE);

Usar otros espacios de memoria. Para minimizar el uso de la buffer cache.


Coordinación Nacional del Programa Inclusión 50 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Identificar que tablas estarán asignadas a estos bloques de memoria.

DEFAULT 2K buffer cache

DEFAULT 4K buffer cache

DEFAULT 8K buffer cache

DEFAULT 16K buffer cache

DEFAULT 32K buffer cache

- Asignar el tamaño correspondiente a cada espacio de memoria. (Suma de los espacios que
ocupan las tablas)

Alter system set db_nk_cache_size = Tamaño[M]

Dónde n es el valor de los diferentes tamaños de memoria:

db_2k_cache_size
db_4k_cache_size
db_8k_cache_size
db_16k_cache_size
db_32k_cache_size

Creamos tablespace con bloques del tamaño 2,4,8,16 y32 k de acuerdo a los tamaños de memoria
configurados. Se puede utilizar los bloques de caché de datos grandes (16-32K) para contener los
datos de los índices o tablas que son objeto de repetidas exploraciones de gran tamaño para
mejorar el rendimiento.

Asignar los objetos a los tablespace correspondientes:


Coordinación Nacional del Programa Inclusión 51 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Alter index Tabla rebuild nologging noreverse tablespace Tablespace_16k;


Coordinación Nacional del Programa Inclusión 52 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Diagnóstico de Recuperación de espacio con scripts


Por Victor Hernandez

Buenas tardes compañer@s,

Les informo que elaboré cuatro scripts que obtiene datos relevantes para identificar posibles
actividades de mantenimiento para tablas o índices normales o particionados o subparticionados.
También lo hace para objetos de tipo LOBINDEX o LOBSEGMENT. Estos scripts ya se encuentran en
la ruta de scripts de CRONOS.

Los datos se generan separados por pipes para que puedan pasarse fácilmente a Excel.

Los scripts pueden ocuparse de acuerdo a la necesidad especifica que se tenga, pero todos
contienen prácticamente el mismo código y devuelven los datos con la misma estructura:

 cur_espacio_ocupado_mtto_todo_.sql
o Obtiene datos de todos los esquemas de la base, excluyendo los que se tienen
identificados del manejador Oracle y los que corresponden a personal del área de
base de datos.
o Solo se le pasa un parámetro que sería el tablespace de paso, que se ocupa sólo
para imprimir las sentencias de mantenimiento sugeridas a ejecutar.

 cur_espacio_ocupado_mtto_x_esquemas_.sql
o Obtiene datos de los esquemas que se le pasan como parámetro.
o Se le pasan 2 parámetros, el primero es una cadena de texto con los esquemas
que van sin espacios separados por comas, y el segundo sería el tablespace de
paso que se ocuparía para imprimir las sentencias de mantenimiento sugeridas a
ejecutar.
Coordinación Nacional del Programa Inclusión 53 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

 cur_espacio_ocupado_mtto_x_tablas_.sql
o Obtiene datos de las tablas de los esquemas que se le pasan como parámetro.
o Se le pasan 3 parámetros, el primero es una cadena de texto con los esquemas
que van sin espacios separados por comas, el segundo es una cadena de texto con
las tablas que van sin espacios separadas por comas, y el tercero sería el
tablespace de paso que se ocuparía para imprimir las sentencias de
mantenimiento sugeridas a ejecutar.

 cur_espacio_ocupado_mtto_x_tablespaces_.sql
o Obtiene datos de los objetos que se encuentran en los tablespaces que se le pasan
como parámetro.
o Se le pasan 2 parámetros, el primero es una cadena de texto con los tablespaces a
revisar que van sin espacios separados por comas, y el segundo sería el tablespace
de paso que se ocuparía para imprimir las sentencias de mantenimiento sugeridas
a ejecutar.

Los datos de los objetos que imprime cualquiera de los scripts son:

 Base de datos, object_type, owner, object_name, tablespace donde se encuentra y


tablespace donde debería estar de acuerdo al espacio que ocupa, esto último solo aplica
cuando el objeto está ubicado en alguno de los tablespaces estandarizados
(TAB_MENOR12MB, IXN_MENOR12MB, etc.) de lo contrario se considera que el
tablespace donde se encuentra el objeto es el correcto.

 Espacio definido, ocupado, libre y porcentaje de espacio libre del objeto, estos datos se
obtienen utilizando el paquete DBMS_SPACE.UNUSED_SPACE.

 Datos generales del objeto que pueden servir para determinar actividades de
mantenimiento (initial definido en MB, extents, blocks, empty_blocks, free_blocks,
registros, pct_free, last_analyzed, logging, degree, instances, compression y status)

 Nombre de la partición, nombre de la tabla a la que pertenece el índice, nombre de la


columna del objeto LOB, cuando correspondan.
Coordinación Nacional del Programa Inclusión 54 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

 En las últimas columnas, el script imprime sentencias que pueden utilizarse para darle
mantenimiento al objeto, las cuales contienen lo siguiente:

o Columna MTTO_PREV.
 Para los casos en que solo es posible o necesario mover el objeto, esta
columna incluye sentencias shrink y move/rebuild del objeto a un
tablespace de paso.
 Para el caso de índices que desperdician “mucho” espacio debido a que se
les definió un initial demasiado grande, esta columna contiene sentencias
para eliminar el índice, y de ser necesario también para eliminar la llave
primaria.
 Al pasar estas sentencias a un editor de texto, se “llevan” comillas dobles
no deseadas por lo que estas deben ser removidas para poder ejecutar las
sentencias correctamente.

o Columna MTTO_POST.
 Para los casos en que solo es posible o necesario mover el objeto, esta
columna incluye sentencias shrink y move/rebuild del objeto al tablespace
donde debe quedar ubicado.
 Para el caso de índices que desperdician “mucho” espacio debido a que se
les definió un initial demasiado grande, esta columna contiene sentencias
para crear el índice, y de ser necesario también para crear la llave
primaria.
 Al pasar estas sentencias a un editor de texto, se “llevan” comillas dobles
no deseadas por lo que estas deben ser removidas para poder ejecutar las
sentencias correctamente.

o Columna MOVE_REBUILD.
 Contiene la sentencia para ejecutar move/rebuild del objeto al tablespace
donde debe quedar ubicado el objeto.
 Si se considera que no es conveniente ejecutar juntas las sentencias de las
columnas previas, se puede ejecutar esta sentencia de forma
independiente.

o Columna SHRINK.
 Contiene la sentencia para ejecutar shrink del objeto para recuperar
espacio desperdiciado.
 Si se considera que no es conveniente ejecutar juntas las sentencias de las
columnas previas, se puede ejecutar esta sentencia de forma
independiente.
Coordinación Nacional del Programa Inclusión 55 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

o Columna DIAGNOSTICO. El código del script considera tres situaciones en las que
el objeto requiere mantenimiento, lo cual se indica en esta columna:

 DESPERDICIO DE ESPACIO. El objeto tiene definido un espacio “muy


grande” en relación al espacio que realmente ocupa, por lo que puede ser
conveniente ejecutarle actividades como shrink, move/rebuild o hasta
recrear el objeto.
 OBJETO FRAGMENTADO. Los datos del objeto están dispersos en el
tablespace donde se ubica, lo cual provoca que existan FREE_BLOCKS en el
tablespace y el consecuente desperdicio de espacio. Para resolver esta
situación lo ideal es mover el objeto a un tablespace de paso y regresarlo
al tablespace donde debe quedar ubicado.
 TABLESPACE INCORRECTO. El objeto se encuentra ubicado en un
tablespace estandarizado que no corresponde al espacio que realmente
ocupa, por lo que debe ser reubicado a otro tablespace estandarizado de
acuerdo al espacio que ocupa.

Es importante tomar en cuenta las siguientes observaciones al ocupar estos scripts:

 Al pasar estas sentencias a un editor de texto, se “llevan” comillas dobles


no deseadas por lo que estas deben ser removidas para poder ejecutar las
sentencias correctamente.
 Antes de ejecutar las sentencias contenidas en las columnas MTTO_PREV
y MTTO_POST, se recomienda revisarlas cuidadosamente cuando
contengan drop de índices o primary keys, o previamente obtener
respaldo del ddl de estos objetos.

Sin más por el momento quedo atento a sus comentarios.


Coordinación Nacional del Programa Inclusión 56 de 10
Social Prospera Fecha de elaboración
Dirección General de Padrón y Liquidación
Dirección General Adjunta de Informática y Desarrollo Tecnológico 25/agosto/2014

Documento

--

Proceso Manual de Procedimientos de Dirección General de Padrón y Liquidación


Nombre del Producto CONSIDERACIONES MÍNIMAS PARA LA DOCUMENTACIÓN DEL MANTENIMIENTO DE BASE DE DATOS ORACLE

Referencia:

https://books.google.com.mx/books?id=y0cwa9hWGIwC&pg=PT391&lpg=PT391&dq=Mejorar+el+
ritmo+de+llenado+de+los+bloques.+oracle&source=bl&ots=XUAjS0nJBR&sig=DPkHkdjJfiZM_Y-
XlIZzQFtZwSw&hl=es&sa=X&ved=0CBsQ6AEwAGoVChMImuyUhsWYyQIVTEUmCh15TA6_#v=onep
age&q=Mejorar%20el%20ritmo%20de%20llenado%20de%20los%20bloques.%20oracle&f=false