Recientemente una amiga se comunicó conmigo pues tenía una emergencia: su base de datos standby había dejado de sincronizar. Revisando el archivo alert.log se encontró el error ORA-01274, llegándose a la conclusión que se había agregado un datafile en la base de datos primaria y al tratar de replicar el cambio en el standby, este datafile no se había creado por falta de espacio en disco.
Ayer por la noche, en el foro de Oracle Technet, alguien reportaba una situación similar, pero en este caso el origen del error era menos claro, el resultado el mismo: no se replicó la creación de uno o más datafiles. ¿Qué hacer en una situación como esta?
Ya antes me había tocado ayudar a otros DBAs en la resolución de este problema, la clave está en seguir los pasos indicados en la nota 221130.1 Recovery failed with error 1274 ORA-19502 ORA-27063 skgfospo SVR4 Error 28.
En escenarios como este, en los que no se logra crear un datafile en la base de datos standby, el datafile es registrado en el controlfile con un nombre similar a UNNAMED0000 y la sincronización se suspende con el error ORA-1274: cannot add datafile.
Los pasos a seguir para superar el impasse son:
1. Desactivar el manejo automático de archivos
SQL> alter system set standby_file_management = manual scope=memory;
SQL> select name from v$datafile where name like '%UNNAMED%';
NAME
--------------------------------------------------------
e:\oracle\product\10.2.0\database\UNNAMED00033
SQL> alter database create datafile
'e:\oracle\product\10.2.0\database\UNNAMED00033' as 'e:\oradata\orcl\dat04.dbf';
SQL> alter system set standby_file_management = auto scope=memory;