ORA-00600: internal error code, arguments: [4137], [], [], [], [], [], [], []
How To Repair UNDO log corruption
ROLLBACK SEGMENT CORRUPTION
Rollback Segment Needs Recovery (undo)
El error ORA-00600 [4137] se presenta cuando un segmento del
RollBack está corrupto.
El problema está en el TableSpace APPS_UNDOTS1 ahí es donde
está el segmento corructo.
Metalik te recomienda lo siguiente según la nota ORA-600
[4137] "XID in Undo and Redo Does Not Match" [ID 43914.1]:
If in
archivelog mode, restore the file & roll forward.
If in
Noarchivelog mode, restore from a cold backup taken before the error was
reported.
A continuación otra forma solucionar el error sería crear
un nuevo TBS UNDO y remplazar al actual:
1.- Buscamos el segmento que tiene problemas:
select
segment_name,
status
,tablespace_name
from dba_rollback_segs
where status = 'NEEDS RECOVERY';
2.- Creamos un nuevo Tablespace UNDO con el nombre undotbs2.
create undo tablespace undotbs2 datafile
'/u01/oracle/PROD/db/apps_st/data/undotbs2.dbf' size 1024m;
3.- Asignamos el nuevo tablespace undo a la base datos en la
variable undo_tablespace, el cambio se lo puede hacer sin reiniciar la BD.
alter system set undo_tablespace=undotbs2
4.- Ponemos fuera de linea al tablespace que tiene
problemas.
alter tablespace APPS_UNDOTS1 offline;
5.- En el archivo de configuración init.ora debemos
adicionar la variable _OFFLINE_ROLLBACK_SEGMENTS con el valor recuperado de la
consulta del paso 1 y asignar el nuevo tablespace a la BD.
ANTES:
undo_tablespace= APPS_UNDOTS1
AHORA:
undo_tablespace=undotbs2
_OFFLINE_ROLLBACK_SEGMENTS=(_SYSSMU5$)
6.- Para que aplique los cambios debemos reiniciar la base
de datos.
SQL>shutdown immediate;
SQL>startup;
SQL>shutdown immediate;
SQL>startup;
7.- Ahora debemos eliminar el segmento con problemas y el
tablespace.
SQL> drop rollback segment
"_SYSSMU5$";
SQL> drop tablespace APPS_UNDOTS1;
Hasta este punto ya tenemos solucionado el problema del
segmento con error, los siguientes pasos será para cambiar el nombre del TBS
UNDO como estaba antes:
8.- Cambiamos el nombre del nuevo tablespace al nombre del
anterior:
SQL> alter tablespace undotbs2 rename to APPS_UNDOTS1;
9.- Verificamos que cambio correctamente.
SQL> show parameters undo
10.- Configuramos el archivo init.ora volviendo a su estado
anterior.
undo_tablespace= APPS_UNDOTS1
Quitamos o comentamos la línea de abajo.
#_OFFLINE_ROLLBACK_SEGMENTS=(_SYSSMU5$)
Páginas de
referencia:
No hay comentarios:
Publicar un comentario