Database Incarnation – Reset Logs

Cuando tenemos un proceso de restore de una base de datos que se encuentra registrada en un catalogo de rman, y al abrirla utilzamos :

alter database open resetlogs

Asistimos a una nueva versión de la base que tenemos registrada, por que estamos reseteando los ON LINE REDO LOGS.

Que ocurre cuando usamos la clausula resetlogs ?

Lo que ocurre es que estamos flusheando el contenidos de nuestros REDOLOGS , reiniciando nuestro(s) controlfile(s) para que pueda leer toda la nueva metadata y todos los cambios que puedieren haber afectado a los datafiles actuales.
También actualiza todos los archivos de datos de la base con el nuevo numero de SCN. De esta manera estamos seguros que siempre estamos sincronizados.

Un primer ejemplo podría ser cuando realizamos el cambio de nombre de nuestra base, modificando el nombre de la misma por medio del comando nid.

Control Files in database:
    +DATV1N_DG2/datv1n/controlfile/current.269.691155755

Change database ID and database name DATTST to DATV1N? (Y/[N]) => YProceeding with operation
Changing database ID from 703574560 to 2378044342
Changing database name from DATTST to DATV1N
    Control File +DATV1N_DG2/datv1n/controlfile/current.269.691155755 - modified
    Datafile +DATV1N_DG1/datv1n/datafile/system.258.691155957 - dbid changed, wrote new name

Cambia el database id y registra los cambios en el controlfile.

Cuando finaliza el proceso, baja la base.
Nosotros la ponemos en modo nomount , cambiamos el parametro db_name con el nombre correspondiente, la bajamos, la montamos y la abrimos mediante la opcion:

 OPEN RESETLOGS;

Un segundo ejemplo es cuando realizamos un recovery , retornado a un determinado punto en el tiempo antes de haber realizado la operación RESETLOGS.

También, cuando queremos deshacer los cambios producto de un RESETLOGS, mediante la aplicación de copias de seguridad tomadas previo al momento RESETLOGS en cuestión.

Una vista util es la v$database_incarnation

SQL> desc v$database_incarnation
 Name										     Null?    Type
 ----------------------------------------------------------------------------------- -------- --------------------------------------------------------
 INCARNATION#										      NUMBER
 RESETLOGS_CHANGE#									      NUMBER
 RESETLOGS_TIME 									      DATE
 PRIOR_RESETLOGS_CHANGE#								      NUMBER
 PRIOR_RESETLOGS_TIME									      DATE
 STATUS 										      VARCHAR2(7)
 RESETLOGS_ID										      NUMBER
 PRIOR_INCARNATION#									      NUMBER
 FLASHBACK_DATABASE_ALLOWED								      VARCHAR2(26)

Ahora podemos consultar para ver en que modo nos encontramos actualmente.

SQL> set line 150
SQL> select * from v$database_incarnation;INCARNATION# RESETLOGS_CHANGE# RESETLOGS PRIOR_RESETLOGS_CHANGE# PRIOR_RES STATUS  RESETLOGS_ID PRIOR_INCARNATION# FLASHBACK_DATABASE_ALLOWED
------------ ----------------- --------- ----------------------- --------- ------- ------------ ------------------ --------------------------
	   1	    1.7311E+10 07-APR-11	       518426845 20-JUN-08 PARENT     747841091 		 0 NO
	   2	    1.7311E+10 07-APR-11	      1.7311E+10 07-APR-11 PARENT     747849747 		 1 NO
	   3	    1.7315E+10 17-MAY-11	      1.7311E+10 07-APR-11 PARENT     751381256 		 2 NO
	   4	    1.7315E+10 20-MAY-11	      1.7315E+10 17-MAY-11 CURRENT    751636021 		 3 NO

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

Comments are closed.

%d bloggers like this: