Oracle RAC 11gR2 | ORA-00245: control file backup operation failed

 ORA-00245: Conociendo como ocurre el error

Oracle RAC

Oracle RAC (Photo credit: Fenng(dbanotes))

Desde la version de bases de datos oracle 11gR2 la copia de seguridad del controlfile sucede sin tener que holdear las colas de actualizacion del controlfile.

Cuando tenemos una base en single mode o mejor dicho standalone, esta situacion no cambia para nada.

Ahora si nosotros estamos trabajando en RAC (y debido a la cambios que se realizaron para las versiones de bases de datos 11gR2) provocan que cualquier instancia del cluster pueda escribir en el controlfile de manera instantanea.

Es asi que este snapshot del controlfile debe estar disponible (visible) para todas las instancias.

Por que ocurre el error ?

El snapshot del controlfile debe ser accesible para todos los nodos de una base de datos en RAC y si el snapshot no esta, o hay un error en el dispositivo compartido ocurrira que al momento de la copia de seguridad que realiza el RMAN mostrara un error.

Estos siempre ocurriran cuando tomemos un backup usando sqlplus, tengamos configurado un backup del controlfile como AUTOBACKUP o no poseamos una ubicacion compartida.

Ahora veamos unos ejemplos de errores comunes.

Ejemplo 1:

En un ambiente RAC, el controlfile autobackup falla con el error ORA-0245

Autobackup of controlfile in RMAN is failing with error:
RMAN-571: ===========================================================
RMAN-569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-571: ===========================================================
RMAN-3009: failure of Control File and SPFILE Autobackup command on
ORA_DISK_1 channel at 10/27/2010 15:08:59
ORA-245: control file backup operation failed

Ejemplo 2:

En un ambiente RAC, el backup controlfile al no estar en un filesystem compartido falla.

SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/u01/app/oracle/product/11.2.0/db_alca/dbs/snapcf_ALCA1.f' REUSE
*
ERROR at line 1:
ORA-245: control file backup operation failed

Ejemplo 3:

En un ambiente RAC, tomando un backup de un standby controlfile en un filesystem no compartido.

SQL> alter database create standby controlfile as '/home/oracle/dataguard/STDBYcfile.ctl';alter database create standby controlfile as
'/home/oracle/dataguard/STDBYcfile.ctl'
*
ERROR at line 1:
ORA-245: control file backup operation failed

Ejemplo 4:

En un ambiente RAC, cuando realizamos una copia de nuestro actual controlfile en caliente.

channel ch1: starting datafile copy
copying current control file
RMAN-571: ===========================================================
RMAN-569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-571: ===========================================================
RMAN-3009: failure of backup command on 12/07/2011 11:36:42 channel at ch1
ORA-245: control file backup operation failed

Mirando el alertlog me muestra lo siguiente.

Archived Log entry 6354 added for thread 1 sequence 1746 ID 0xbc014bc7 dest 1:
Thu Jul 12 15:07:37 2012
Errors in file /u01/app/oracle/diag/rdbms/alca/ALCA1/trace/ALCA1_ora_10816.trc:
ORA-00245: control file backup operation failed
Thu Jul 12 15:08:59 2012
Thread 1 advanced to log sequen

Mirando en los traces de la base me muestran:

Trace file /u01/app/oracle/diag/rdbms/alca/ALCA1/trace/ALCA1_ora_10816.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_alca
System name: Linux
Node name: sdat3100lx.somedomain.com
Release: 2.6.18-274.17.1.el5
Version: #1 SMP Wed Jan 4 22:45:44 EST 2012
Machine: x86_64
Instance name: ALCA1
Redo thread mounted by this instance: 1
Oracle process number: 99
Unix process pid: 10816, image: oracle@sdat3100lx.somedomain.com (TNS V1-V)
*** 2012-07-12 15:07:37.324
*** SESSION ID:(177.51347) 2012-07-12 15:07:37.324
*** CLIENT ID:() 2012-07-12 15:07:37.324
*** SERVICE NAME:(SYS$USERS) 2012-07-12 15:07:37.324
*** MODULE NAME:(backup full datafile) 2012-07-12 15:07:37.324
*** ACTION NAME:(0000012 STARTED68) 2012-07-12 15:07:37.324ORA-00245: control file backup operation failed

Ejemplo 5:

En un ambiente RAC, el backup de RMAN falla si el snapshot controlfile no se realiza en un filesystem compartido.

RMAN-00571: ========================================================
RMAN-00569: ============ ERROR MESSAGE STACK FOLLOWS =============
RMAN-00571: =========================================================
RMAN-03009: failure of resync command on default channel at 03/13/2012 10:19:41
ORA-00245: control file backup operation failed

Como lo solucionamos ?

La solucion es un simple workaround :

Nos logueamos en el RMAN y ejecutamos el comando SHOW ALL y revisamos la linea que dice:

CONFIGURE SNAPSHOT CONTROLFILE NAME TO

Veamos el ejemplo a continuacion:

RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 4;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/db_alca/dbs/snapcf_ALCA.f'; # default

Bien, ahora es importante decir:

Si tengo en filesystem los objetos de la base, busco un path compartido.

RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/<SHARE FS>/<PATH>/snapcf_<SID>.f';

Ejemplo

RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u10/share/alca/snapcf/snapcf_alca.f';

Si tengo en ASM los objetos de la base, entonces creo un path nemotecnico y lo guardo ahi.

RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+<DISKGROUP>/<PATH>/snapcf_<SID>.f';

Ejemplo

RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+OCR/ALCA/SNAPCF/snapcf_alca.f';

Me logueo al ASM y lo busco:

ASMCMD> ls
OCR/
SAN_ALCA_DG1/
SAN_ALCA_DG2/
SAN_ALCA_DG3/
ASMCMD> cd +OCR/ALCA/SNAPCF
ASMCMD> ls
snapcf_alca1.f

Espero les sea de utilidad.

Best Regards Latinoamerica & the Wolrd !!

About Juan Andres
Consultant | Oracle DBA & IT Specialist | LinuxUnix Administrator | Father | Musician | Farmer | Environmentalist | Writer | Builder | Buenos Aires · burzaco.wordpress.com

6 Responses to Oracle RAC 11gR2 | ORA-00245: control file backup operation failed

  1. Pingback: Oracle RAC 11gR2 | ORA-00245: control file backup operation failed « DbRunas – Noticias y Recursos sobre Bases de Datos

  2. Juan: Gracias por tomarte el tiempo de compartir , la secuencia logica de las instrucciones impecable , un aporte invaluable en nuestro idioma natal.

  3. Juan Andres says:

    Gracias a vos por el reconocimiento Anibal, estamos de paso por este mundo, que mejor que compartir lo que uno saber para ayudar a otros !

  4. Johan Bürk says:

    Muchas gracias por la infirmación…

  5. ariel says:

    Hola:
    Solo una consulta para saber cual es lo correcto pues veo una discrepancia, o quizas entendi mal.
    En un momento , pones el comando:

    CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘+OCR/ALCA/SNAPCF/snapcf_alca.f’;

    Luego, cuando pones el chequeo en ASM, se ve:

    ASMCMD> ls
    OCR/
    SAN_ALCA_DG1/
    SAN_ALCA_DG2/
    SAN_ALCA_DG3/
    ASMCMD> cd +OCR/ALCA/SNAPCF
    ASMCMD> ls
    snapcf_alca1.f

    Es decir, en el comando pones el SID del RAC (alca) , pero en ASM se ve el de la instancia 1 (alca1)…esto es asi ?…se pone el nombre del RAC en el CONFIGURE y despues se indica solo el SID cuando se hace el snapshot?..si no es asi, cual seria o correcto en RAC y ASM?.

  6. Juan Andres says:

    Estimado, lo que hice es lo siguiente:
    1) Siempre se pone las variables para que aparezca el SID del que queres tomar un snapshot.
    2) Use el path de OCR en el ejemplo para el que usa ASM y no OCFS o NFS.
    3) Dentro de ASM puede ser cualquier path existente o no (Creas uno de tu agrado),
    4) Yo use ese como modelo en analogia al OCFS.

    Saludos !
    Best Regards !

%d bloggers like this: