Activando el modo de archivado de la base de datos nos permite tener el historico completo y esto es muy importante a la hora de recuperar la información.
Cuando activamos el modo de archivado en una BD lo que sucede es que la BD pone un control interno que evitaría que LGWR nunca escribiria en un grupo al cual no haya sido archivado, es decir, cada vez que hubiera un switch se almacenaría toda la informacion en un archivelog y con esto nos aseguraría que nunca habría un Redolog Online que no se haya archivado, por lo tanto nos garantiza que el histórico es contínuo.
Desde el sqlplus:
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 29
Current log sequence 32
Verificar si la instancia de base de datos esta iniciada desde el pfile o spfile
SQL> Show parameter spfile;
NAME TYPE VALUE
———————— ———————- ————
spfile string
Como no figura nada en el valor spfile, significa que la instancia inicio desde el pfile, y necesitamos crear el spfile como sigue:
SQL> Create SPFILE From PFILE;
File created.
Es necesario reiniciar la instancia para que levante desde el spfile y podamos realizar los cambios necesarios:
SQL> shutdown immediate;
SQL> startup;
Verificamos el valor de spfile:
SQL> show parameter spfile
NAME TYPE VALUE
—— —– —————————————————
Spfile string /oracle/app/oracle/product/10.2/dbs/spfileTEST.ora
Para cambiar el modo de archivado de la BD debemos modificar ciertos parametros:
Como podemos ver la ruta del destino del archivado está guardada en el parametro: USE_DB_RECOVERY_FILE_DEST
SQL> show parameter db_recovery
NAME TYPE VALUE
——————— ———– ————————————
db_recovery_file_dest string C:oracleproduct10.2flash_recovery_area
db_recovery_file_dest_size big integer 2G
Si éste parámetro está informado, todos los Archived Redolog File, irán a parar a ese repositorio.
Para determinar nosotros el destino al cual queremos guardar el archivado debemos modificar éste parámetro:
El parametro que informaremos la ubicación de guardado de los archivos es: LOG_ARCHIVE_DEST
SQL> show parameter log_archive_dest
NAME TYPE VALUE
—————– ———– —————-
log_archive_dest string
Como vemos el valor del parametro está en blanco, si queremos modificar éste parametro debemos primero modificar el parámetro USE_DB_RECOVERY_FILE_DEST, sino lo hacemos se produce un error.
SQL> alter system set log_archive_dest = ‘ c:prueba ‘
*
ORA-02097: no se puede modificar el parametro porque el valor especificado no es válido
ORA-16018: no se puede utilizar LOG_ARCHIVE_DEST con LOG_ARCHIVE_DEST_n ni con DB_RECOVERY_FILE_DEST
Entonces modificamos primero el parametro DB_RECOVERY_FILE_DEST y le asignamos una cadena vacia:
SQL> alter system set db_recovery_file_dest = ‘ ‘ scope=both;
System altered.
Modificar el parametro LOG_ARCHIVE_DEST
SQL> alter system set log_archive_dest = ‘/TEST/archivados’ scope=both;
System altered.
Modificar el parametro LOG_ARCHIVE_FORMAT
En Oracle 10g se debe utilizar las tres variables de sustitución para que sea considerado un nombre aceptado:
Variables de sustitucion:
%t –à Nro de thread
%s –à Nro de secuencia del log
%r –à Resetlogs ID
SQL> show parameter log_archive_format
NAME TYPE VALUE
—————— ————— —————-
log_archive_format string arch%s_%R.%T
Modificamos el formato como deseamos:
SQL> alter system set log_archive_dest =’arc_%s_%r_%t.arc’ scope=spfile;
System altered.
Nota: sino especificamos scope, en Oracle 10g el valor por defecto es both, y como éste parametro no es dinamico nos daria error, para ello debemos espcificar scope=spfile.
Una vez que tenemos modificados todos los parametros podemos cambiar el modo de archivado de la base de datos:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
Verificamos el cambio:
SQL> Archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination C:TESTarchivados
Oldest online log sequence 29
Next log sequence to archive 32
Current log sequence 32
Provocamos un cambio en el Redolog:
SQL> alter system switch logfile;
Sistema modificado
SQL> Archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination C:TESTarchivados
Oldest online log sequence 30
Next log sequence to archive 33
Current log sequence 33
De éste modo ya tenemos nuestra base de datos en modo de archivado automatico.
Cambiar el modo de archivado de una base de datos por Clarisa Maman Orfali se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported.
Hola buen tuto, y me surge solo una duda como de cuanto espacio estamos hablando en cuanto a storage, digamos de una base de datos geoespacial con el uso de archivado automatico
Hola Anonimo, el tema del dimensionamiento, es muy particular del negocio, no hay una regla a aplicar, pero si se trata solo del espacio destinado para archives, puedes analizar con qué frecuencia hacen switch los redologs online, que tamaño tienen, y tomar estas medidas durante una hora, y dimensionar el destino de archives, para que sea capaz de almacenar un dia de archives, en el caso de que la base sea chica, o dos horas de archives, si la base es grande y muy transaccionable.
Caso de ejemplo A:
Base xxA 4 redologs de 100Mb cada uno, en una hora cambian una vez solo los dos redologs, como sigue:
–Hora 0
Redo01
Redo02
Redo03
Redo04
–1°cambio
Redo01
Redo02
–Hora 1
Podemos deducir que esta base, transacciona 600Mb por hora, por lo cual sería adecuado un destino de archive de por lo menos 15Gb, y un backup de archives una vez por día.
Caso de ejemplo B:
Base xxB 4 redologs de 1024Mb cada uno, en una hora cambian dos veces cada uno como sigue:
–Hora 0
Redo01
Redo02
Redo03
Redo04
–1°cambio
Redo01
Redo02
Redo03
Redo04
–2°cambio
Redo01
Redo02
Redo03
Redo04
–Hora 1
Podemos deducir que esta base, transacciona 12Gb por hora, por lo cual sería adecuado un destino de archive de por lo menos 24Gb para contener 2hs, y un backup de archives cada hora.
Saludos
Clarisa
Hola Clarisa
Tengo una duda si digamos uno sigue durante meses almancenando los archivelogs, pero hago siempre copias de seguridad es estos archivos.
Puedo depurarlos? si esto es una decision que debo tomar, como lo harias? que tanto tiempo guardarias esos archives en el espacio asignado en el disco
Hola Anónimo, gracias por escribir antes que nada.
Para contestar tu duda, te recomiendo depurarlos estableciendo una política de retención de 120 días como máximo (RMAN> CONFIGURE RETENTION POLICY TO REcovery window of 120 days), dependiendo del negocio afectado.
Si no es tan critico, puede ser 60 días, ademas debes considerar la frecuencia en la toma de los backups, y algo muy importante a tener en cuenta, es cada tanto realizar una restauración programada, de manera tal que puedas confiar en tus backups.
Cualquier duda quedamos a tu disposición.
Saludos y gracias por escribirnos!
Hola! Soy Eugenia y he implementado esto hoy para comenzar a hacer una prueba sobre un motor. Yo quisiera saber si ya al activar esto, me manda todo el log al nuevo destino o si solo me manda los logs de lo que yo empece a modificar a partir que configure el modo archivelog. Esto lo consulto, por si en caso de que necesite restaurar los logs, puedo hacerlo con los que se alojan en la nueva carpeta de destino.
Otra de las preguntas que quería hacerte, es sobre cómo restauro los logs.
Espero tu respuesta!!
Muchas gracias!
Saludos,
María Eugenia Chielli
Estudiante de Ingeniería en Sistemas (UTN-FRLP)
Hola Eugenia, un gusto contestarte.
Según entendí, modificaste el destino para tus redologs archivados (archives en la jerga).
A partir de que la modificación se hace efectiva en el startup, el proceso ARC comienza a escribir los archives en ese nuevo destino.
Si luego quieres restaurar archives del destino anterior y el destino nuevo, lo puedes hacer tranquilamente especificando las secuencias de los mismos, RMAN los restaurará en el nuevo destino, a menos que le indiques uno nuevo en el comando RUN. Pero debes tener cuidado con especificar aquí un destino nuevo, ya que el proceso ARC, comenzara a escribir tambien aqui, los nuevos archives generados por la base de datos.
Te dejo un ejemplo que yo he utilizado en alguna oportunidad para restaurar archives desde la cinta:
run
{
allocate CHANNEL t1 type 'SBT_TAPE'
parms 'ENV=(TDPO_OPTFILE=/opt/tivoli/tsm/client/oracle/bin64/tdpo.opt)';
SET ARCHIVELOG DESTINATION TO '/REDO_NEW/ARCHIVE';
RESTORE ARCHIVELOG FROM LOGSEQ 273549 UNTIL LOGSEQ 274233;
}
Espero te sea de utilidad, y si tienes otra duda me comentas.
Saludos!
Gisela
Nola Clarisa
He seguido muy de cerca tus posts y videotutoriales. Te felicito por el aporte que le das a la comunidad Oracle Hispana.
En cuanto a este post, tienes una secuencia para recuperar una base de datos en modo archivelog.
Muchas gracias.