Procedimiento para recrear el tablespace de UNDO en Oracle 10g.
Resumen: En el proceso crearemos un tablespace temporal de UNDO, activaremos el tablespace de UNDO temporal, verificaremos el estado de los segmentos, borraremos, crearemos y activaremos el tablespace de UNDO original con el tamaño deseado, finalmente borraremos el tablespace de UNDO temporal.
BBDD: La base de datos tenemos que tenerla arrancada en modo exclusive.
Herramientas: SQLPLUS
1) Creación del tablespace comodín o temporal de UNDO.
CREATE UNDO TABLESPACE UNDO_TMP DATAFILE '/Oracle/oradata/prueba/undo_tmp.dbf' SIZE 100M;
2) Activar el tablespace que hemos creado.
ALTER SYSTEM SET UNDO_TABLESPACE='UNDO_TMP' SID='PRUEBA';
El parámetro UNDO_TABLESPACE es dinámico por lo que no necesitamos rearrancar la BBDD para que tome efecto el cambio.
Vamos a verificar que todo va bien
show parameter undo
NAME TYPE VALUE
--------------- ------- --------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDO_TMP
Bien, ya tenemos nuestro UNDO_TMP como UNDO tablespace activo.
3) Comprobación de segmentos en tablespace UNDO original.
SELECT SEGMENT_NAME,TABLESPACE_NAME,STATUS
FROM DBA_ROLLBACK_SEGS
WHERE TABLESPACE_NAME='UNDOTBS1';
SEGMENT_NAME TABLESPACE_NAME STATUS
——————– ————————- —————-
_SYSSMU3$ UNDOTBS1 OFFLINE
_SYSSMU4$ UNDOTBS1 OFFLINE
_SYSSMU15$ UNDOTBS1 OFFLINE
_SYSSMU6$ UNDOTBS1 OFFLINE
_SYSSMU7$ UNDOTBS1 OFFLINE
_SYSSMU2$ UNDOTBS1 OFFLINE
_SYSSMU9$ UNDOTBS1 OFFLINE
_SYSSMU0$ UNDOTBS1 OFFLINE
Ya podemos eliminar el tablespace de UNDO original.
4) Eliminar el tablespace UNDO original.
DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
5) Creación del tablespace UNDO original con su tamaño adecuado.
Para datafile en modo filesystem:
CREATE SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE '/Oracle/oradata/prueba/prueba_undotbs01.dbf' SIZE 1024M;
Para datafile en modo raw tendremos que recrearlo al tamaño que deseemos previamente:
CREATE SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE '/Oracle/oradata/prueba/prueba_undotbs01A.dbf' REUSE;
6) Cambio del tablaspace UNDO al original.
ALTER SYSTEM SET UNDO_TABLESPACE='UNDOTBS1' SID='PRUEBA';
7) Borrado del tablespace de UNDO comodín o temporal.
DROP TABLESPACE UNDO_TMP INCLUDING CONTENTS AND DATAFILES;
Compatibilidad: Oracle 10g y Oracle 11g