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
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario