RMAN 12cR1 : Dile adios a tu respaldo cuando haces un DROP de tu PDB – Parte II

RMAN 12cR1 : Dile adios a tu respaldo cuando haces un DROP de tu PDB – Parte II

En mi última entrada en mi blog de Pythian (aquí en español) antes de unirme a Oracle, hable de lo que ocurre si intentas recuperar una BASE DE DATOS “PLUGGABLE” si haces un DROP PLUGGABLE DATABASE en 12cR1, para no hacer la historia larga , no vas a ser capaz de restaurar / recuperar tu base de datos. Ahora voy a profundizar un poco más en qué en lo que sucede en el archivo de control (controlfile), y por qué es necesario restaurar el archivo de control para que puedas recuperar tu base de datos “PLUGGABLE”.

Primero creo una base de datos llamada TESTDB

SQL> CREATE PLUGGABLE DATABASE testdb ADMIN USER testadm IDENTIFIED BY oracle ROLES=(DBA);

Pluggable database created.

Si hago un volcado del archivo de control tipo 4 , que incluye, la cabecera del archivo (datafile), la información de registro de base de datos y registros de progresos de checkpoint, los registros más antiguos y más recientes para los registros circulares reutilizables y los 4 registros más recientes de registros circulares reutilizables.

Puedo ver en el volcado del archivo de control que la base de datos “pluggable” tiene un “id” de 4 y un “Record id” de 4, que no son lo mismo, una es el PDB_ID y el otro es el registro de identificación del archivo de control , como se puede ver a continuación:

SQL> oradebug setmypid
Statement processed.
SQL> oradebug dump controlf 4;
Statement processed.
...
***************************************************************************
PLUGGABLE DATABASE RECORDS
***************************************************************************
(size = 684, compat size = 684, section max = 10, section in-use = 4,
last-recid= 13, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 540, numrecs = 10)
Pluggable DataBase record=1
id=1
dbid=2835408111
name=CDB$ROOT
first datafile link=1
pdbinc=0, pdbrdi=0, status=0x00000000, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.00000000, crescn scn: 0x0000.00000000
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=2
id=2
dbid=4092965150
name=PDB$SEED
first datafile link=7
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001dd3e3, crescn scn: 0x0000.001a4224
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=3
id=3
dbid=1554252633
name=PDBEM
first datafile link=10
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e0a9c, crescn scn: 0x0000.001dd76b
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=4
id=4
dbid=2633748847
name=TESTDB
first datafile link=12
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000001
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e066d, crescn scn: 0x0000.001e061c
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0

Ahora bien, si vemos un poco más abajo en el archivo, que voy a recortar para este ejercicio sólo mostrar el datafile 12, se puede observar que existe una relación entre este identificador, y los archivos de datos de esta base de datos “pluggable”.

...
***************************************************************************
DATA FILE RECORDS
***************************************************************************
...
DATA FILE #12:
name #17: /u01/app/oracle/oradata/cdborcl/pdbs/sysaux01.dbf
creation size=87040 block size=8192 status=0x80 flg=0x5 head=17 tail=17 dup=1
pdb_id 4, tablespace 1, index=14 krfil=4 prev_file_in_ts=0 prev_file_in_pdb=11
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:2 scn: 0x0000.001e066d 06/16/2014 16:09:37
Stop scn: 0x0000.001e066d 06/16/2014 16:09:37
Creation Checkpointed at scn: 0x0000.001e0620 06/16/2014 16:09:13
thread:1 rba:(0xf.54b4.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Offline scn: 0x0000.00000000 prev_range: 0
Online Checkpointed at scn: 0x0000.00000000
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
Plugged readony: NO
Plugin scnscn: 0x0000.00000000
Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Online move state: 0

Lo que procedo a hacer ahora, es borrar la base de datos “pluggable”

SQL> DROP PLUGGABLE DATABASE TESTDB INCLUDING DATAFILES;

Pluggable database dropped.

Y ahora hago otra volcado de mi archivo de control, puedo ver que el ID del volcado del controlfile es 0 y el “Record ID” sigue siendo 4, y ahora la relación entre los archivos de datos, que no se pierde, sigue siendo el número 4, que significa que no está relacionado con el “id” número 0, así que básicamente no hay archivos de datos relacionados con estaPDB, que mi lógica me dice que es lo que quiero, ya que acabo de borrar mi PDB.

…
***************************************************************************
PLUGGABLE DATABASE RECORDS
***************************************************************************
(size = 684, compat size = 684, section max = 10, section in-use = 4,
last-recid= 14, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 540, numrecs = 10)
Pluggable DataBase record=1
id=1
dbid=2835408111
name=CDB$ROOT
first datafile link=1
pdbinc=0, pdbrdi=0, status=0x00000000, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.00000000, crescn scn: 0x0000.00000000
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=2
id=2
dbid=4092965150
name=PDB$SEED
first datafile link=7
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001dd3e3, crescn scn: 0x0000.001a4224
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=3
id=3
dbid=1554252633
name=PDBEM
first datafile link=10
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e0a9c, crescn scn: 0x0000.001dd76b
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=4
id=0
dbid=2633748847
name=TESTDB
first datafile link=0
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000001
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e066d, crescn scn: 0x0000.001e061c
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0

...

***************************************************************************
DATA FILE RECORDS
***************************************************************************
...
DATA FILE #12:
creation size=87040 block size=8192 status=0x88c flg=0x1 head=0 tail=0 dup=0
pdb_id 4, tablespace 1, index=14 krfil=4 prev_file_in_ts=0 prev_file_in_pdb=11
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:2 scn: 0x0000.001e066d 06/16/2014 16:09:37
Stop scn: 0x0000.001e066d 06/16/2014 16:09:37
Creation Checkpointed at scn: 0x0000.001e0620 06/16/2014 16:09:13
thread:1 rba:(0xf.54b4.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Offline scn: 0x0000.00000000 prev_range: 0
Online Checkpointed at scn: 0x0000.00000000
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
Plugged readony: NO
Plugin scnscn: 0x0000.00000000
Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Online move state: 0

Ahora, yo no sé lo que se necesita para que el PDB_ID = 0 se retire del controlfile, pero si sigo y creo otra base de datos “pluggable”, puedo ver en el volcado del controlfile que el registro para la BD (TESTDB) se ha borrado, la nueva BD agarra el “PDB record ID” de 4 y el registro de controlfile 4, y ahora en realidad no hay registro de que alguna vez existio, haciendo imposible que RMAN pueda recuperar / restaurar su base de datos con el registro siendo 0 o si la base de datos “pluggable” no existe en la sección de “PLUGGABLE DATABASE RECORDS “.

SQL> CREATE PLUGGABLE DATABASE testdb1 ADMIN USER testadm IDENTIFIED BY oracle ROLES=(DBA);

Pluggable database created.
...
***************************************************************************
PLUGGABLE DATABASE RECORDS
***************************************************************************
(size = 684, compat size = 684, section max = 10, section in-use = 4,
last-recid= 18, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 540, numrecs = 10)
Pluggable DataBase record=1
id=1
dbid=2835408111
name=CDB$ROOT
first datafile link=1
pdbinc=0, pdbrdi=0, status=0x00000000, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.00000000, crescn scn: 0x0000.00000000
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=2
id=2
dbid=4092965150
name=PDB$SEED
first datafile link=7
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001dd3e3, crescn scn: 0x0000.001a4224
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=3
id=3
dbid=1554252633
name=PDBEM
first datafile link=10
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000000
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e0a9c, crescn scn: 0x0000.001dd76b
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0
Pluggable DataBase record=4
id=4
dbid=602641775
name=TESTDB1
first datafile link=14
pdbinc=0, pdbrdi=0, status=0x00000001, flags=0x00000001
incrcv scn scn: 0x0000.00000000, clnscn scn: 0x0000.001e7a44, crescn scn: 0x0000.001e79d6
dbrls scn: 0x0000.00000000, dbrlc=0
iscn scn: 0x0000.00000000, itime=0
bscn scn: 0x0000.00000000, btime=0
escn scn: 0x0000.00000000, etime=0

Conclusión

Esto es sólo para ti y que te des una idea de lo que sucede en el archivo de control cuando se emite DROP PLUGGABLE DATABASE, que es donde se guardan el registro de sus PDBs / Datafiles y respaldos, que es por qué al emitir ese comando, la única manera de restaurar / recuperar tu PDB es restaurar el archivo de control, la base de datos root y la PDB, esto se puede hacer en una base de datos auxiliar, si necesitas hacerlo.

Rene Antunez
[email protected]
No Comments

Sorry, the comment form is closed at this time.