Habilitando o archive log mode no Oracle 10G ou 11G

E ai galera aqui eu vou abordar como podemos habilitar o archive log no Oracle 10G ou 11G.

Primeiro vamos listar como que está o estado do archive log no oracle

Vamos conectar na instancia que queremos verificar da seguinte forma

. oraenv
ORACLE_SID = [orcl] ? orcl
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle

Vamos logar no Oracle

sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri May 24 17:17:27 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> 

Agora verificar como esta o estado do archive log

SQL> archive log list;
Modo log de banco de dados   Modo Sem Arquivamento
Arquivamento automatico       Desativado
Destino de arquivamento      USE_DB_RECOVERY_FILE_DEST
A sequencia de log on-line mais antiga     5
Sequencia de log atual     7
SQL> 

Como podemos notar o archive log está desabilitado e quando ativarmos ele ele vai ficar por padrão em USE_DB_RECOVERY_FILE_DEST que é a FRA este é o padrão porem podemos mudar isso

Agora vamos listar aonde está variável USE_DB_RECOVERY_FILE_DEST vai armazenar os archives log

SQL> show parameter recovery_file_dest;

NAME             TYPE  VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest        string  +FRA
db_recovery_file_dest_size       big integer 3882M

No meu caso ele vai armazenar em uma partição do +ASM que é a +FRA caso precise alterar podemos fazer da seguinte forma

Vamos criar o diretório no sistema de arquivos

mkdir -p /u01/app/oracle/oradata/orcl/arch

Caso tenha criado o diretório com um usuário diferente do oracle precisa ajustar as permissões do diretório

chown -R oracle:dba /u01/app/oracle/oradata/orcl/arch

Agora vamos alterar o caminho de armazenamento dos archives

SQL> alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/orcl/arch' scope = both;

Sistema alterado.

SQL> 

OBS: O caminho tem que existir no sistema de arquivos e tem que ter permissão de escrita para o usuário oracle e o seu grupo ex o dba

Agora os archives logs não vão ser armazenados na +FRA agora eles vão ser armazenados em /u01/app/oracle/oradata/orcl/arch

Agora se mandarmos listar as configurações do archive log vamos ter algo como abaixo

SQL> archive log list;
Modo log de banco de dados   Modo Sem Arquivamento
Arquivamento automatico       Desativado
Destino de arquivamento      /u01/app/oracle/oradata/orcl/arch
A sequencia de log on-line mais antiga     5
Sequencia de log atual     7
SQL> 

Agora para podermos habilitar o archive log precisamos baixar o banco

SQL> shutdown immediate;
Banco de dados fechado.
Banco de dados desmontado.
Instancia ORACLE desativada.
SQL>

Agora vamos subir o banco em modo mount

SQL> startup mount;
Instancia ORACLE iniciada.

Total System Global Area 1269366784 bytes
Fixed Size        2212976 bytes
Variable Size     889195408 bytes
Database Buffers    369098752 bytes
Redo Buffers        8859648 bytes
Banco de dados montado.
SQL> 

Agora podemos habilitar o archive log o comando é muito dificil como diria meu professor Zandona

SQL> alter database archivelog;

Banco de dados alterado.

SQL> 

Agora já podemos dar um open no banco para liberar ele para os usuários

SQL> alter database open;

Banco de dados alterado.

SQL> 

Agora vamos listar a opção de archive log

SQL> archive log list;
Modo log de banco de dados     Modo de Arquivamento
Arquivamento automatico       Ativado
Destino de arquivamento      /u01/app/oracle/oradata/orcl/arch
A sequencia de log on-line mais antiga     5
Proxima sequencia de log a arquivar   7
Sequencia de log atual     7
SQL> 

Note que agora o arquivamento automático está ativo :D

Agora vamos dar um switch o logfile para verificar a criação do archive log

SQL> alter system switch logfile;

Sistema alterado.

SQL>

Agora vamos verificar o nosso archive log

[oracle@oracle11 oradata]$ ls -l /u01/app/oracle/oradata/orcl/arch/
total 24804
-rw-r----- 1 oracle dba 25364992 Mai 24 17:38 1_7_816275674.dbf

Como podemos notar o nosso arquivo foi criado com sucesso :D

Desabilitando o Archive log mode

Vamos listar o archive log mode

SQL> archive log list;
Modo log de banco de dados     Modo de Arquivamento
Arquivamento automatico       Ativado
Destino de arquivamento      /u01/app/oracle/oradata/orcl/arch
A sequencia de log on-line mais antiga     6
Proxima sequencia de log a arquivar   8
Sequencia de log atual     8
SQL> 

Como podemos notar o archive log está ativo

Agora vamos baixar o banco

SQL> shutdown immediate;
Banco de dados fechado.
Banco de dados desmontado.
Instancia ORACLE desativada.
SQL> 

Agora vamos subir o banco em mount

SQL> startup mount;
Instancia ORACLE iniciada.

Total System Global Area 1269366784 bytes
Fixed Size        2212976 bytes
Variable Size     889195408 bytes
Database Buffers    369098752 bytes
Redo Buffers        8859648 bytes
Banco de dados montado.
SQL> 

Agora vamos desabilitar o archive log mode

SQL> alter database noarchivelog;

Banco de dados alterado.

SQL> 

Agora vamos liberar o banco

SQL> alter database open;

Banco de dados alterado.

SQL> 

Agora vamos listar as configurações do archive log

SQL> archive log list;
Modo log de banco de dados   Modo Sem Arquivamento
Arquivamento automatico       Desativado
Destino de arquivamento      /u01/app/oracle/oradata/orcl/arch
A sequencia de log on-line mais antiga     6
Sequencia de log atual     8
SQL> 

Como podemos notar agora ele está desabilitado.

Referências