A veces conforme el tiempo avanza, nuestra base de datos va teniendo tiempos de respuesta más altos. Entre otras razones, una muy importante de ellas es la fragmentación.

Para atacar este problema, les proponemos lo siguiente:

- Para versiones igual o superiores a Oracle 8i, utilicen tablespaces administrados localmente (Locally-Managed tablespaces).
  Nota: Recuerda que si tienes tablespaces "dictionary-managed" y versión mayor o igual a 8.1.6, puedes migrarlos a locally-managed con el paquete  "dbms_space_admin".
    Ejemplo para convertir el tablespace USERS_TBS a locally-managed:
    exec dbms_space_admin.tablespace_migrate_to_local('USERS_TBS');

    O si deseas hacer lo inverso (de local a diccionario)

    exec dbms_space_admin.tablespace_migrate_from_local('USERS_TBS');
    
- Configura tu tablespaces para que el tamaño de los extents sea uniforme (Initial y Next).

- Emplea el comando COALESCE:  alter tablespace USERS_TBS coalesce;
Este comando tratará de juntar los espacios libres de los segmentos en uno solo.

Y una de las más importantes:

- Revisa constantemente la fragmentación manualmente (puedes crear un script para que lo haga automático cada fin de semana).

Supongamos que tienes un índice de una tabla grande, que sabes que es constantemente modificada. Haz lo siguiente para eliminar finalmente la fragmentación de ésta:

Recuerda tomar tus precauciones, ya que las siguientes operaciones pueden afectar severamente el performance de tu BD.

    SQL> analyze index Mi_SCHEMA.INDICE_IX validate structure;

    Índice analizado.

    SQL> select NAME, DEL_LF_ROWS from index_stats;

    NAME                           DEL_LF_ROWS
    ------------------------------ -----------
    INDICE_IX                      205

Notas:
*Index_stats tendrá la información solamente del último índice que analizaste.
*El segundo campo (DEL_LF_ROWS) nos indica qué tan fragmentado está. Ese número velo como la cantidad de espacios no usados ni usables, en tu índice.

    SQL> alter index Mi_SCHEMA.INDICE_IX rebuild nologging tablespace INDEX_TBS;

    Índice modificado.
Notas:
*Reconstrucción del índice totalmente en línea
*Recuerda que si tienes un ambiente configurado con replicación avanzada, evita el uso de operaciones NOLOGGING.

    SQL> analyze index Mi_SCHEMA.INDICE_IX  validate structure;

    Índice analizado.

    SQL> select NAME, PARTITION_NAME, DEL_LF_ROWS from index_stats;

    NAME                           DEL_LF_ROWS
    ------------------------------ -----------
    INDICE_IX                      0


Como puedes ver en el último query, ya no tenemos esos "huecos", por lo que el rendimiento será beneficiado increíblemente.

También puedes ahora revisar el espacio libre y el recuperable, con el siguiente query:

Nota: El SMALLEST te indicará la menor cantidad de MB a la cual podrás reducir tu data file. Obtendrás un "ORA-03297", si intentas reducirlo a un número menor que esos.

    select value from v$parameter where name = 'db_block_size'
    /

    col FILE_NAME format a75
    set linesi 220
    select file_name,
    ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
    ceil( blocks*&&blksize/1024/1024) currsize,
    ceil( blocks*&&blksize/1024/1024) -
    ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
    from dba_data_files a,
    ( select file_id, max(block_id+blocks-1) hwm
    from dba_extents
    group by file_id ) b
    where a.file_id = b.file_id(+)
    /

Saludos

{mosimage}

Carlos Contreras
Oracle Certified DBA

 

 

You are not authorised to post comments.

Comments powered by CComment

DBASupport - Foro

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • one year ago.
  • one year ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
URGE AYUDA
  • Topic started by
  • in General
  • 13 years ago.
  • 13 years ago.
  • 30 replies
HOLA ESPERO ME PUEDAN AYUDAR. TEN GO UNA TABLA CON una estructura similar a la siguiente: id_mov cargo subtotal total...

Duada de Memoria de SQL Server 2005
  • Topic started by Erzengel
  • in General
  • 9 years ago.
  • 9 years ago.
  • 30 replies
Buen Día Recurro nuevamente a su sabiduría. Quiero saber el porque tiene un tope SQL Serever de 2GB en Windows server 2003 de 32 bit y si alguien...

SqlDateTime overflow
  • Topic started by
  • in General
  • 13 years ago.
  • 13 years ago.
  • 11 replies
Alguno de ustedes ha tenido este problema: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.' Les...

problemas para iniciar el agente sql
  • Topic started by acgch
  • in General
  • 12 years ago.
  • 12 years ago.
  • 11 replies
Recientemente para asegurar el sql server 2005, cree una cuenta sql con derechos de sysadmin y borre el grupo BUILTIN\Administradores para evitar...

Problemas para levantar mirror
  • Topic started by acgch
  • in General
  • 12 years ago.
  • 12 years ago.
  • 16 replies
Hola amigos, tengan un buen día, les comento que estoy configurando mirror siguiendo los pasos a través del wizard del managment studio y también...
Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • one year ago.
  • one year ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
Deshabilitar todos los jobs
  • Topic started by agamez
  • in Jobs
  • one year ago.
  • one year ago.
  • 1 reply
Buenos días, alguien sabe como puedo deshabilitar rapidamente todos los jobs de SQL Server, gracias.

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • one year ago.
  • one year ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Necesitas Soporte

Proveemos soporte de base de datos SQL Server, Sybase, Oracle y MySQL. Nuestro servicio, le permite contar con un experto las 24 horas al día los 365 días del año.

Nuestros servicios están diseñados para que solo pague por el soporte que necesita. El pago se realiza de manera mensual basado en el nivel de cobertura que requiera. En promedio este costo va de un 30% a un 60% menos, de lo que le pagaría a un DBA en sitio.

Contactanos