jueves, 16 de febrero de 2012

Elaborando un mapa de uso de tablespace en Oracle


Digamos que necesitas reducir el tamaño de un datafile para recuperar algo de espacio (como en una urgencia), entonces después de revisar el tamaño y uso de un datafile ejecutas un ALTER DATABASE DATAFILE RESIZE sólo para obtener este error:

ORA-03297: file contains used data beyond requested RESIZE value

Quizás te preguntes por qué no puedes reducir el tamaño de ese datafile si hay suficiente espacio libre, y muy probablemente no puedes hacerlo porque algún segmento (tabla, índice, etc.) está ubicado más allá del valor de RESIZE. Tienes que mover ese segmento con técnicas tales como reconstruir índices y mover tablas, pero antes de intentar redimensionar un datafile podrías preferir hacer un mapa del uso del tablespace con este script: Tablespace_map2.sql

Aviso: YO NO ESCRIBI ESTE SCRIPT, sólo lo modifiqué para dividir los mapas por datafile como está escrito en los comentarios al inicio del script. No pude encontrar al autor original por lo que no puedo citarlo apropiadamente.

Después de correr este script obtendrás un archivo HTML con un mapa de uso por datafile del tablespace seleccionado; este script es muy útil si sólo puedes ejecutar scripts en una línea de comandos SQL. Si colocas el apuntador del ratón sobre un bloque obtendrás información sobre el propietario, tipo de segmento y nombre del segmento que corresponde a ese bloque, o si es un bloque libre.

Más información:

ORA-03297 Tips

No hay comentarios.:

Publicar un comentario