viernes, 6 de julio de 2012

Un Tip cuando te topas el Error ORA-00600: [2662] cuando haces flashback database

Aquí un tip rápido para cuando te topas con el error ORA-00600: [2662], este error significa que el SCN de un bloque tiene un numero mayor al del SCN de la base de datos , esto puede significar que existe una corrupción física en tu base de datos , aquí no te voy a decir como solventarlo, ya que es mas bien para un SR con Oracle dependiendo del caso y versión de RDBMS que tienes.

Pero algo que te puede ayudar a ver donde estas teniendo el error es lo siguiente, cuando te aparece el error, el quinto argumento te puede dar esta información

ORA-00600: internal error code, arguments: [2662], [2910], [829087674], [2910], [829528307], [1451708231], [], [], [], [], [], []

Si en el error tienes el quinto argumento, ya que hay casos en el que no lo vas a tener, puedes usar la siguiente función para localizar el datafile al que se esta refiriendo

TESTDB> select dbms_utility.data_block_address_file(1451708231) "fileno",dbms_utility.data_block_address_block(1451708231) from dual ;

fileno     DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(1451708231)
---------- -------------------------------------------
138              3

Con este puedes identificar que archivo es el que te esta causando el problema

TESTDB> Select name ,file#,ts# from v$datafile where rfile#=138 ;

Y con la utileria dbverify puedes identificar si es que realmente esta corrupto o no

dbv file=<NOMBRE_DEL_DATAFILE_OBTENIDO_ARRIBA> blocksize=<db_block_size>

Como te decía al principio, lo que te recomiendo es abrir un SR con Oracle y poder llegar al fondo del problema, pero esto te da armas para poder localizar donde esta el error.