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