martes, 9 de septiembre de 2008

ORA-01092: ORACLE instance terminated. Disconnection forced

Hace poco tuve un inconveniente algo extraño con mi base de datos Oracle 10g. El error se presentó luego de poner a mi base de datos en modo ARCHIVELOG, al pasar del estado MOUNT al OPEN saltó el siguiente error:

ORA-01092 ORACLE instance terminated. Disconnection forced


Intenté quitarle el modo ARCHIVELOG e intentar volver a subir la base, pero esto no funcionó.

Cada que vez que la intentaba subir de cualquier forma me daba el mismo error. Revisando respecto a este error solo encontré que puede suceder por una bajada no limpia de la base (por ejemplo un SHUTDOWN ABORT) y que la solución es esperar un tiempo e intentar volver a subir la base, pero inclusive re-inicié el equipo donde reside la base y esto no funcionó. Al consultar el alert_log para tener algún tipo de información adicional encontré el siguiente error:

ORA-30012: undo tablespace ‘UNDOTBS1′ does not exist or of wrong type

Lo cual claramente me indica que existe algún tipo de problema con mi tablespace de UNDO. Entonces, partiendo de esto realicé los siguientes pasos para poder levantar mi base:


1) Subir a la base en estaus NO MOUNT:

SQL> startup nomount;


2) Cambiar el parámetro UNDO_TABLESPACE para que no apunte al TBS de undo con problemas y así permitir que la base sea abierta:

SQL> alter system set UNDO_TABLESPACE=”;

3) Subir a la base de datos:

SQL> alter database mount;SQL> alter database open;


4) Con la base abierta creamos un nuevo tablespace de UNDO:

SQL> create undo tablespace UNDOTBS2 datafile ‘/home/oracle/admin/oradata/db10g/datafiles /undotbs2.dbf’ size 200M autoextend on maxsize 1024M;


5)Modificamos nuevamente al parámetro UNDO_TABLESPACE para que apunte al nuevo tablespace de UNDO (luego de esto podemos borrar al tablespace que estaba dando problemas):

SQL> alter system set UNDO_TABLESPACE=’UNDOTBS2′;SQL> drop tablespace UNDOTBS1 including contents and datafiles;

6)Bajamos limpiamente la base y la volvemos a subir:

SQL> shutdown immediate;SQL> startup;

Y listo!! Con esto la base de datos se encuentra arriba nuevamente. Luego logré ponerla a trabajar en modo ARCHIVELOG sin problemas.

1 comentarios:

Facundo dijo...

Hola Rodolfo, quisiera colaborar con tu muy buen blog en este artículo.

Me ocurrió exactamente el mismo error, en mi caso el alert log informó lo siguiente:

ORA-00704: bootstrap process failure
ORA-39700: database must be opened with UPGRADE option

Además pude observar que el tablespace TEMP no tenía asignado ningún datafile (a pesar de que éste existía físicamente).

Investigando un poco llegué a la solución siguiendo estos pasos:

1) Abrir la base con el parámetro UPGRADE.
SQL>startup UPGRADE

2) Una vez abierta ejecutar el script /u01/app/oracle/product/10.2.0/db_1/rdbms/admin/catupgrd.sql que actualiza el catálogo.
SQL>@/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/catupgrd.sql

3) Reiniciar la base normalmente.
SQL>shutdown immediate
SQL>startup

4) En este paso se debe ejecutar el script /u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utlrp.sql el cual identifica los objetos que quedaron inválidos y los compila.
SQL>@/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utlrp.sql

Eso es todo, luego de esto la base debe funcionar normalmente.

Muchas gracias por el espacio y saludos!!!