MENU

terça-feira, 12 de junho de 2012

Habilitando o archivelog mode no Oracle 11g


Para efetuar backups online (hot backup), isto é, fazer backup do banco de dados com ele UP, não havendo necessidade de parar o banco para fazer (cold backup). Você precisa ativar o modo archivelog, desta maneira, os redo logs online são arquivados, criando arquivos de log de todas as transações do banco de dados.
O Oracle grava nos arquivos de redo log online de maneira cíclica: após preencher o primeiro arquivo de log, ele começa a gravar no segundo, até que ele esteja cheio, e em seguida, começa a gravar no terceiro. uma vez que o último arquivo de redo log online esteja cheio, o processo em segundo plano LGWR (log write) começa a sobrescrever o conteúdo do primeiro arquivo.
Por default o modo NOARCHIVELOG vem como padrão, ele protege a integridade do banco de dados no caso de falha de uma instância ou uma queda de sistema, porque todas as transações encerradas com commit, mas que ainda não foram gravadas nos arquivos de dados estarão disponíveis nos arquivos de redo log online.
Quando o Oracle está executando no modo ARCHIVELOG, o processo em background ARCn (archiver process) faz uma cópia de cada arquivo de redo log antes de sobrescrevê-lo. Exemplo: se o disco que esta os data files der algum problema, com os archives logs podemos reconstruir o banco de dados até o momento anterior ao problema, devido a um backup recente dos data files e aos arquivos de redo log que foram gerados desde que ele ocorreu. Abaixo, uma imagem para ilustrar o processo ARC, copiando os arquivos do redo log e passando para a localização do archive log.


Chega de teoria e vamos para a pratica; verificando se esta ativado o archivelog:
SQL> select log_mode from v$database;
LOG_MODE
————
NOARCHIVELOG

Com esta seleção, percebemos que a resposta é que não esta com o archive log mode ativado, outra forma de verificar se esta em archive log mode é:
SQL> archive log list
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     61
Current log sequence           63

Caso queira mudar a localidade dos archives logs, você pode mudar com o seguinte comando:
alter system set LOG_ARCHIVE_DEST_1=’LOCATION=/u01/app/oracle/flash_recovery_area/ mandatory’ scope=both;

Ok, vimos que o modo archivelog esta desabilitado, para habilitar precisamos parar o banco:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

Subindo a base no estado mount:
SQL> startup mount;
ORACLE instance started.
Total System Global Area  535662592 bytes
Fixed Size                  1337720 bytes
Variable Size             327157384 bytes
Database Buffers          201326592 bytes
Redo Buffers                5840896 bytes
Database mounted.
SQL>

Alterado o banco para o modo archivelog:
SQL> alter database archivelog;
Database altered.

Abrindo o banco:
SQL> alter database open;
Database altered.

Verificando o estado do archive log:
SQL> archive log file;
SP2-0718: illegal ARCHIVE LOG option
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     78
Next log sequence to archive   80
Current log sequence           80

Forçando a troca do archive log, com isso, podemos ver se já foi gerado o arquivo de archive log:
SQL> alter system switch logfile;
System altered.

Descobrindo a onde estão sendo salvos os archives logs:
SQL> show parameter DB_RECOVERY_FILE_DEST
NAME                                 TYPE        VALUE
———————————— ———– ——————————
db_recovery_file_dest                string      $ORACLE_BASE/flash_recovery_area
db_recovery_file_dest_size           big integer 2G

Agora podemos verificar se foi gerado o archivelog, com o comando pwd mostro o diretório corrente e com o ls eu listo os arquivos da pasta:
[oracle@oracle11g 2011_07_13]$ pwd
/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_07_13
[oracle@oracle11g 2011_07_13]$ ls -lah
total 22M
drwxr-x— 2 oracle oinstall 4.0K Jul 13 10:08 .
drwxr-x— 3 oracle oinstall 4.0K Jul 13 09:59 ..
-rw-r—– 1 oracle oinstall 21M Jul 13 09:59 o1_mf_1_80_71v96hr3_.arc
-rw-r—– 1 oracle oinstall 978K Jul 13 10:08 o1_mf_1_81_71v9pr0h_.arc

Algumas views importantes para informações do archive log:
ViewsDescrição
V$DATABASEMostra se a base de dados esta em ARCHIVELOG ou NOARCHIVELOG
V$ARCHIVED_LOGExibe historico dos ARCHIVELOGS do CONTROL FILES. Se você usar um catálogo de recuperação, a view RC_ARCHIVED_LOG contém informações semelhantes.
V$ARCHIVE_DESTDescreve o estado atual da instância, todos os destinos dos archives e o tamanho atual.
V$ARCHIVE_PROCESSESExibe informações sobre o estado dos processos de arquivo diferentes para uma instância.
V$BACKUP_REDOLOGContém informações sobre todos os backups dos archived logs. Se você usa o recovery catalog, o RC_BACKUP_REDOLOG contém informações similares.
V$LOGExibe todos os grupos de redo log para o banco de dados e indica que precisam ser arquivados.
V$LOG_HISTORYContém informações de logs registros, que marca os archives com o range de SCN, para cada archive log.

Nenhum comentário:

Postar um comentário