miércoles, 17 de marzo de 2010

ORACLE: Error ORA-00313

Hoy amanecimos con un disco menos en el servidor, y la base de datos (un 9.2 en RAC) nos avisó que no podía acceder a un logfile de determinado thread y grupo.

Cómo los logfiles están cruzados en diferentes unidades de disco (justamente para prevenir estas fallas físicas de disco) tuve que eliminar los logfiles que figuraban como inválidos en la vista V$LOGFILE y a su vez reconstruirlos en otro FS, como se ejemplifica a continuación:

alter database drop logfile member '<ruta>/<logfile>';
alter database add logfile member '<ruta nueva>/<logfile>' reuse to group <grupo>

Cuidado, si algún drop falla, probablemente es porque ese logfile esté siendo utilizado por la base, en ese preciso momento, con lo cual podemos esperar o forzar el switch a otro redo, con alter system switch logfile; tal vez tengamos que ejecutar esta sentencia más de una vez, para que finalmente se pueda hacer el drop.

Si todo esto fué bien y consultamos la V$LOGFILE y nos figura alguno de los nuevos logfile como invalido, puede ser porque la instancia ya esté utilizando ese grupo de redo, con lo cual devuelta ejecutamos una o más veces el alter system switch logfile y con esto se debería solucionar, salvo que haya otro problema de fondo, por lo que no pueda ser utilizado el nuevo archivo, por ejemplo la nueva ubicación también tiene sectores inválidos.

1 comentario:

Unknown dijo...

Hola! Con un RAID 5E (con disco en Hot Spare ) en la configuracion de los HDD no hubieras tenido problemas de perdida de datos! Un abrazo.