Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 
Oracle

ORA-10631: SHRINK clause should not be specified for this object

 

Cause: It is incorrect to issue shrink on the object.

 

Action: Verify the object name and type and reissue the command.

 

La cláusula SHRINK te permite reducir de forma manual espacios en una tabla, tabla organizada por índices o desbordamiento de su segmento, el índice de partición, subpartición y vista materializada. Esta cláusula sólo es válida para los segmentos en los tablespaces con gestión automática. De manera predeterminada, la base de datos Oracle compacta los segmentos, se ajusta la marca de agua, y libera el espacio recuperado de inmediato.

Compactar el segmento requiere el movimiento de la fila. Por lo tanto, debes activar el movimiento de la fila para el objeto que deseas reducir antes de especificar la  cláusula SHRINK. Además, si tu aplicación tiene triggers basados en ROWID, debes desactivarlos antes de realizar el SHRINK.

 

En este enlace podrás encontrar infomación adicional.

 

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_3001.htm#CJA

 

Utiliza la siguiente query para chequear que objetos pueden ser compactados con SHRINK


SELECT dt.owner, dt.table_name,
(CASE
WHEN NVL(ind.cnt, 0) < 1 THEN 'S'
ELSE 'N'
END) AS shrink_sn
FROM dba_tables dt,
(SELECT table_name, COUNT(*) cnt
FROM dba_indexes di
WHERE index_type LIKE 'FUNCTION-BASED%'
GROUP BY table_name) ind
WHERE dt.table_name = ind.table_name(+)
AND dt.table_name NOT LIKE 'AQ$%'
AND dt.table_name NOT LIKE 'BIN$%'
AND dt.owner = 'TUOWNER'
ORDER BY 1, 2;


 

Obtendrás una salida similar a está: 


OWNER TABLE_NAME S
------------------------------ ------------------------------ -
TUOWNER TABLA1 Y
TUOWNER TABLA2 Y
TUOWNER TABLA3 Y
TUOWNER TABLA4 Y
TUOWNER TABLA5 Y