ORA-30013: undo tablespace ‘UNDOTBS1’ is currently in use

Realizando una tarea de mantenimiento en un ambiente de testing de un cliente (Aplicación de un Patch), me toca reiniciar ambas instancias , de manera ordenada, una a una y moviendo el servicio para que no haya perdída de servicio. (Utilize el modelo rolling upgrade).

Cuando la quiero levantar la instancia del primer nodo me ocurre un error en una de las instancias.

[oracle@appdat01lx bin]$ srvctl start instance -d APPTST -i APPTST1
PRKP-1001 : Error starting instance appdat01 on node appdat01lx
CRS-0215: Could not start resource ‘ora.APPTST.apptst1.inst’.

Al revisar el alert de la instancia me encuentro con que no puede levantar por problemas con el tablespace UNDO.

ALTER DATABASE OPEN
Picked broadcast on commit scheme to generate SCNs
Tue Apr 3 18:32:28 2012
Thread 1 opened at log sequence 20
Current log# 2 seq# 20 mem# 0: +DATA/APPTST/onlinelog/group_2.364.775219571
Current log# 2 seq# 20 mem# 1: +DATA/APPTST/onlinelog/group_2.363.775219573
Successful open of redo thread 1
Tue Apr 3 18:32:28 2012
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Tue Apr 3 18:32:28 2012
SMON: enabling cache recovery
Tue Apr 3 18:32:28 2012
Errors in file /u01/app/oracle/admin/APPTST/udump/appdat01_ora_13956.trc:
ORA-30013: undo tablespace ‘UNDOTBS1′ is currently in use
Tue Apr 3 18:32:28 2012
Error 30013 happened during db open, shutting down database
USER: terminating instance due to error 30013
Instance terminated by USER, pid = 13956
ORA-1092 signalled during: ALTER DATABASE OPEN…

Reviso el trace generado por la instancia para asegurarme realmente que es lo que esta sucediendo.

[oracle@appdat01lx bin]$ cat /u01/app/oracle/admin/APPTST/udump/appdat01_ora_13436.trc
/u01/app/oracle/admin/APPTST/udump/appdat01_ora_13436.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_APPTST
System name: Linux
Node name: appdat01lx.bancocredicoop.coop
Release: 2.6.18-194.32.1.el5
Version: #1 SMP Mon Dec 20 10:52:42 EST 2010
Machine: x86_64
Instance name: appdat01
Redo thread mounted by this instance: 1
Oracle process number: 21
Unix process pid: 13436, image: oracle@appdat01lx.bancocredicoop.coop (TNS V1-V)

*** ACTION NAME:() 2012-04-03 18:30:18.998
*** MODULE NAME:(sqlplus@appdat01lx.bancocredicoop.coop (TNS V1-V) 2012-04-03 18:30:18.998
*** SERVICE NAME:(SYS$USERS) 2012-04-03 18:30:18.998
*** SESSION ID:(151.3) 2012-04-03 18:30:18.998
ORA-30013: undo tablespace ‘UNDOTBS1′ is currently in use
[oracle@appdat01lx bin]$

Entonces me logueo en la base para ver que estaba ocurriendo en el nodo activo.

Ya que el primer nodo se encontraba caído.

[oracle@appdat01lx bin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 – Production on Tue Apr 3 18:35:27 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to an idle instance.

Reviso en el segundo nodo y ejecuto una query para ver si tengo algún tipo de actividad o que haya quedado algo sin rollbakear.

[oracle@appdat02lx bin]$ sqlplus / as sysdba
....
SQL> column username format a6
SELECT a.name,b.status , d.username , d.sid , d.serial#
FROM v$rollnameSQL> SQL> a,v$rollstat b, v$transaction c , v$session d
WHERE a.usn = b.usn
AND a.usn = c.xidusn
AND c 2 3 4 5 .ses_addr = d.saddr
AND a.name IN (
SELECT segment_name
FROM dba_segments
WHERE tab 6 7 8 9 lespace_name = ‘UNDOTBS1′
);
10
no rows selected

SQL>

No había nada corriendo, entonces reviso el parametro de undo_tablespace.

Y me encuentro con la novedad que estaba incorrecto.

SQL> sho parameter undo
NAME              TYPE     VALUE
———————————————   ———————  ————————
undo_management   string   AUTO
undo_retention    integer  900
undo_tablespace   string   UNDOTBS1

Seguramente el DBA debía rearmado el ambiente con un pfile modificado y haya borrado el parametro , o al momento de levantar la base se haya encontrado con algún problema y haya realizado algún seteo a modo de workaround para salir del paso.

SQL> alter system set undo_tablespace=UNDOTBS2 sid='APPTST2';
System altered.
SQL> alter system set undo_tablespace=UNDOTBS1 sid='APPTST1';
System altered.

Solicito reiniciar la base para asegurame que todo haya quedado absolutamente en orden y asi lo hago.

SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 536870912 bytes
Fixed Size 2085288 bytes
Variable Size 226496088 bytes
Database Buffers 301989888 bytes
Redo Buffers 6299648 bytes
Database mounted.
Database opened.
SQL>

Ahora intento levantar la instancia que no funcionaba y levanta correctamente.

[oracle@appdat01lx bin]$ srvctl start instance -d APPTST -i APPTST1