domingo, 22 de julio de 2012

RMAN : Corriendo un respaldo incremental y el error ORA-19764

El otro día estaba corriendo un respaldo de una base de datos que recientemente acababa ser clonada de otra base de datos. Y me aparece el siguiente error:

DBGRPC:        EXITED krmqgns with status 1
DBGRPC:        krmxpoq - returning rpc_number: 77 with status: FINISHED16 for channel CH10
DBGRPC:        krmxr - channel CH10 calling peicnt
DBGRPC:        krmxrpc - channel CH10 kpurpc2 err=19583 db=target proc=SYS.DBMS_BACKUP_RESTORE.BACKUPPIECECREATE excl: 187
DBGRPC:        krmxrpc - caloing krmxtrim: with message of length 187: @@@ORA-19583: conversation terminated due to error
DBGRPC:        ORA-19764: database id 8573487567 does not match database id 3024984012 in control file
DBGRPC:        ORA-06512: at "SYS.DBMS_BACKUP_RESTORE", line 1381

Y lo primero que hice fue verificar precisamente que el DBID de la base de datos fuera el correcto, ya que si haces una clonacion sin RMAN, el DBID se mantiene de la base de datos de origen y en el catalogo se crean conflictos, el cual no fue el caso.

TESTDB21 >select dbid,name from v$database;

      DBID NAME
---------- --------
3024984012 TESTDB2

La verdad me quebré un poco la cabeza, ya que la información que tenia el diccionario de datos, apuntaba a que el DBID era el correcto (3024984012) . Como tenia un poco el tiempo encima , no tuve mas tiempo para investigar el porque, ya que en el archivo trace que genere con RMAN, no aparece que esta información erronea viene del archivo de cambios de bloques (block change tracking file).

TESTDB21 >select FHDBI,FHDBN from X$KRCFH
  2  /

     FHDBI FHDBN
---------- --------
8573487567 TESTDB2

Una vez que vi que era este archivo era el que estaba causando la falla, lo único que hice fue recrearlo y con esto se resolvió mi problema.

TESTDB21 >alter database disable block change tracking;

Database altered.

TESTDB21 >select FHDBI,FHDBN from X$KRCFH;

no rows selected

TESTDB21 >alter database enable block change tracking using FILE '/copy01/TESTDB2/oracle/TESTDB2/ctf/TESTDB2.ctf';

Database altered.

TESTDB21 >select FHDBI,FHDBN from X$KRCFH;

     FHDBI FHDBN
---------- --------
3024984012 TESTDB2

Espero que te sirva este tip si te llegas a enfrentar a este problema, de igual manera te anexo un enlace de un muy buen articulo de Alex Gorbachev del grupo Pythian describiendo el archivo BCT, te puede ayudar como me ayudo a mi :)

Oracle 10G Block Change Tracking Inside Out (INGLES)