É necessário habilitar o arquivamento de logs ao criar um banco de dados ORACLE?
O banco de dados Oracle pode ser executado em dois modos: modo de arquivamento (archivelog) e modo sem arquivamento (noarchivelog).
O modo de arquivamento pode melhorar a capacidade de recuperação do banco de dados Oracle.
Todos os bancos de dados de produção devem operar neste modo, e o modo de arquivamento deve ser combinado com a respectiva estratégia de backup. Apenas o modo de arquivamento, sem uma estratégia de backup correspondente, causará apenas problemas.
Por padrão, o banco de dados Oracle é criado no modo de arquivo de log sem registro,
No modo de log não arquivado, o log de reexecução será reescrito diretamente quando o log for alternado. Se o arquivo de dados for danificado devido a uma falha de mídia nesse momento, os dados reescritos serão perdidos durante a restauração do banco de dados;
No modo de log de arquivamento, o banco de dados pode utilizar todos os arquivos de log de arquivamento gerados a partir do backup mais recente do banco de dados para garantir que nenhum dado seja perdido; a maioria dos bancos de dados de produção opera no modo archivelog.
Após o banco de dados Oracle ativar o modo de log de arquivamento, ele iniciará automaticamente um novo processo: o arquivador ARCn. Por padrão, são iniciados 4 processos. Em aplicações reais, é possível iniciar até 30 processos de arquivamento.
[oracle@dbserver1 archivelog]$ ps -ef | grep -i ora_oracle 26567 1 0 08:48 ? 00:00:00 ora_arc0_orcloracle 26573 1 0 08:48 ? 00:00:00 ora_arc1_orcloracle 26575 1 0 08:48 ? 00:00:00 ora_arc2_orcloracle 26577 1 0 08:48 ? 00:00:00 ora_arc3_orcl
O Archive Log é um backup inativo do redo log. Ao utilizar os archive logs, todos os registros históricos do redo podem ser mantidos. Quando o banco de dados está no modo ARCHIVELOG e ocorre a alternância de logs,
O processo em segundo plano ARCH salvará o conteúdo do log de redefinição no log de arquivamento. Quando ocorrer uma falha de mídia no banco de dados, o backup dos arquivos de dados, o log de arquivamento e o log de redefinição poderão ser utilizados para restaurar completamente o banco de dados.
#########################
Alteração do modo não arquivado para o modo arquivado
Antes da modificação:
Confirme o ambiente. Verifique o banco de dados, se deseja ativar o modo de arquivamento: — As informações exibidas abaixo pressupõem que, ao instalar o banco de dados, você não optou por ativar o flashback nem optou por ativar o arquivamento.
SQL> archive log listDatabase log mode Modo de arquivamento desativadoAutomatic archival DesativadoArchive destination /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/archSequência mais antiga de log online 4Sequência atual de log 6
SQL> select name,log_mode from v$database;
NAME LOG_MODE
–------- ------------
ORCL NOARCHIVELOG
SQL> show parameter db_recovery
NOME TIPO VALOR
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size inteiro grande 0
######### O seguinte testa a operação de alternar o banco de dados do modo sem arquivamento para o modo com arquivamento quando o flashback não está ativado ############
SQL> desligar imediatamente
Banco de dados fechado.
SQL> iniciar montagem
Instância ORACLE iniciada.
SQL> alterar banco de dados para modo archivelog;
Banco de dados alterado.
SQL> alterar banco de dados para aberto;
Banco de dados alterado.
SQL> archive log list
Modo de log do banco de dados Modo de Arquivamento
Arquivamento automático Habilitado
Destino do arquivamento /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequência mais antiga de log online 4
Próxima sequência de log a ser arquivada 6
Sequência atual de log 6
SQL> select name from v$archived_log;
nenhuma linha selecionada
SQL> alter system archive log current;
Sistema alterado.
SQL> select name from v$archived_log;
NAME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf
SQL> show parameter recover;
NOME TIPO VALOR
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size inteiro grande 0
db_unrecoverable_scn_tracking booleano TRUE
recovery_parallelism inteiro 0
SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
nenhuma linha selecionada
Quando log_archive_log é definido com o valor padrão, o diretório de arquivamento torna-se ?/dbs/arch.
SQL> alter system set log_archive_dest_1='';
Sistema alterado.
SQL> archive log list
Modo de log do banco de dados: Modo de arquivamento
Arquivamento automático: Habilitado
Destino de arquivamento: ?/dbs/arch
Sequência mais antiga de log online: 5
Próxima sequência de log a ser arquivada: 7
Sequência atual de log: 7
SQL> desligar imediatamente
Banco de dados fechado.
Banco de dados desmontado.
Instância ORACLE desligada.
SQL> startup mount
Instância do ORACLE iniciada.
Após reiniciar o banco de dados para montagem, o diretório de arquivamento volta ao diretório padrão original.
SQL> archive log listModo de log do banco de dados Modo de arquivamentoArquivamento automático HabilitadoDestino de arquivamento /home/oracle/u01/app/oracle/product/11.2.2.0/dbhome_1/dbs/archOldest sequência de log online mais antiga 5
Próxima sequência de log a ser arquivada 7
Sequência de log atual 7
--- Defina o número máximo de processos abertos para arquivamento
SQL> alter system set log_archive_max_processes = 5;
Sistema alterado.---Modificar o formato de armazenamento de logs SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile; Sistema alterado.SQL> desligamento imediato
Banco de dados desmontado.
Instância ORACLE desligada.
SQL> startup
Instância ORACLE iniciada.
SQL> desligamento imediato
Base de dados desmontada.
Área Global Total do Sistema 939495424 bytes
Tamanho Fixo 2258840 bytes
Tamanho Variável 637536360 bytes
Buffers do Banco de Dados 293601280 bytes
Buffers de Redo 6098944 bytes
Banco de dados montado.
Banco de dados aberto.
SQL> archive log list
Modo de log do banco de dados Modo de arquivamento
Arquivamento automático Habilitado
Destino de arquivamento /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequência mais antiga de log online 5
Próxima sequência de log a ser arquivada 7
Sequência atual de log 7
SQL> show parameter db_recovery
NOME TIPO VALOR
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest string
db_recovery_file_dest_size inteiro grande 0
SQL> select name from v$archived_log;
NAME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf
SQL> alter system switch logfile;
Sistema alterado.
SQL> select recid, nome, first_time de v$archived_log;
NOME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/archarchive_1_7_94709105
4.log
SQL> SELECT NAME, SPACE_LIMIT/1024/1024/1024, SPACE_USED/1024/1024/1024, NUMBER_OF_FILES FROM V$RECOVERY_FILE_DEST;
nenhuma linha selecionada
SQL> select flashback_on from v$database;
FLASHBACK_ON
–----------------
NÃO
#############################
Ativar o recurso de retrocesso (flashback) do banco de dados. Definir o caminho e o tamanho da área de recuperação rápida para teste. Primeiro, desative o modo de arquivamento e, em seguida, ative o caminho padrão após o arquivamento, que corresponde ao caminho de retrocesso (flashback) do banco de dados.
Verifique o banco de dados para saber se o recurso de retrocesso (flashback) está ativado
Observação: Se você ativar a função de retrocesso, é necessário estar no modo de arquivamento; caso contrário, não faz sentido usar o retrocesso! ! ! !
No entanto, se você abrir o arquivo, não é necessário, necessariamente, ativar a função de retrocesso! ! !
Se o recurso de flashback estiver ativado e, em seguida, o modo de arquivamento for ativado, caso o log de arquivamento não especifique um novo caminho, ele será salvo, por padrão, na área de flashback do banco de dados e exibido como: USE_DB_RECOVERY_FILE_DEST, que, na verdade, corresponde ao caminho da área de flashback.
Além disso, a localização e o tamanho da área de flashback e do caminho do arquivo podem ser definidos manualmente.
SQL> select flashback_on from v$database;FLASHBACK_ON------------------NO SQL> shutdown immediateSQL> startup mount
SQL> alter database flashback on; Ao instalar o banco de dados, não optei por ativar o recurso flashback e ocorreu o seguinte erro
alter database flashback on
*
ERRO na linha 1:
ORA-38706: Não é possível ativar o registro de FLASHBACK DATABASE.
ORA-38709: A Área de Recuperação não está habilitada.
Configurar a área de recuperação flash:
Definir o tamanho da área de recuperação de flash: a área de recuperação de flash padrão do Oracle é de 2 GB
SQL> alter system set db_recovery_file_dest_size=5g scope=spfile;
Visualizar o tamanho do espaço do caminho especificado na área de retrocesso:
SQL> show parameter db_recovery_file_dest_size
NOME TIPO VALOR
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest_size inteiro grande 30G
Definir o local da área de flashback:
SQL> alter system set db_recovery_file_dest='/home/oracle/u01/app/oracle/account_flashback_area' scope=spfile;
Defina o período de flashback como 5 dias, em minutos (o Oracle usa por padrão 1440 minutos, ou seja, um dia)
SQL> alter system set db_flashback_retention_target=7200 scope=spfile;
Crie diretórios relacionados ao flashback no nível do sistema operacional:
[oracle@dbserver oracle]$ mkdir -p /home/oracle/u01/app/oracle/account_flashback_area
SQL> alter database flashback on;
Banco de dados alterado.
SQL> alter database open;
Banco de dados alterado.
SQL> select flashback_on from v$database;
FLASHBACK_ON
–----------------
SIM
SQL> archive log list
Modo de log do banco de dados Modo de arquivamento
Arquivamento automático Habilitado
Destino de arquivamento USE_DB_RECOVERY_FILE_DEST
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
Conclusão: Se o flashback estiver ativado e o modo de arquivamento for novamente ativado, e nenhum novo caminho for especificado para os logs de arquivamento, esses logs serão salvos, por padrão, na área de flashback do banco de dados e exibidos como: USE_DB_RECOVERY_FILE_DEST, o que corresponde, na verdade, ao caminho da área de flashback.
Atualmente, testaremos o desligamento do flashback e reiniciaremos o banco de dados para visualizar o caminho do log de arquivamento.
SQL> select open_mode from v$database;OPEN_MODE--------------------LEITURA E GRAVAÇÃO
SQL> shutdown immediate
Banco de dados fechado.
SQL> startup mount
Instância ORACLE iniciada.

Fechar o modo de arquivamento — lembra-nos de que o banco de dados está executando no modo de arquivamento. Quando o flashback estiver ativado, o arquivamento não poderá ser desativado diretamente.
SQL> alter database noarchivelog;alter database noarchivelog*ERRO na linha 1:ORA-38774: não é possível desabilitar a recuperação de mídia – o flashback do banco de dados está habilitado
Em seguida, desabilitamos primeiro o flashback
SQL> alter database flashback off;Banco de dados alterado.
SQL> alter database noarchivelog;
Banco de dados alterado.
SQL> alterar banco de dados para aberto;
Banco de dados alterado.
SQL> archive log list
Modo de log do banco de dados Modo de Arquivamento Desativado
Arquivamento automático Desativado
Destino do arquivamento USE_DB_RECOVERY_FILE_DEST
Sequência mais antiga de log online 6
Sequência atual de log 8
SQL> select flashback_on from v$database;
FLASHBACK_ON
–----------------
NÃO
Reinicie, abra a visualização de arquivos e verifique o caminho do arquivo
SQL> shutdown immediate
Banco de dados fechado.
SQL> startup mount
Instância ORACLE iniciada.
SQL> alter database archivelog;
Banco de dados alterado.
SQL> alter database open;
Banco de dados alterado.
SQL> archive log list
Modo de log do banco de dados Modo Arquivamento
Arquivamento automático Habilitado
Destino de arquivamento USE_DB_RECOVERY_FILE_DEST
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
SQL> select flashback_on,open_mode from v$database;
FLASHBACK_ON OPEN_MODE
–---------------- --------------------
NO READ WRITE
Conclusão: Se você abrir o arquivo, não é necessário ativar necessariamente a função de retrocesso; você não precisa ativar o retrocesso!!!
Teste 3: Modificar o caminho padrão de arquivamento
SQL> desligar imediatoSQL> iniciar montagemINSTÂNCIA ORACLE iniciada.
SQL> lista de arquivos de log de arquivamento
Modo de log do banco de dados Modo de arquivamento
Arquivamento automático Habilitado
Destino do arquivamento USE_DB_RECOVERY_FILE_DEST
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
SQL> alter system set log_archive_dest_1=‘location=/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch’;
Sistema alterado.
SQL> archive log list
Modo de log do banco de dados Modo de Arquivamento
Arquivamento automático Habilitado
Destino do arquivamento /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
SQL> select flashback_on,open_mode from v$database;
RETROCESSÃO_ATIVADA MODO_ABERTO
–---------------- --------------------
NÃO MONTADO
Teste 4: Fechamos o arquivo de arquivamento; primeiro ativamos o flashback, depois ativamos o arquivo de arquivamento, iniciamos o banco de dados, verificamos o caminho do arquivo de arquivamento e verificamos se o caminho personalizado foi configurado; em seguida, modificamos-no para o caminho padrão de flashback.
SQL> alterar banco de dados para noarchivelog; Banco de dados alterado.
SQL> archive log list
Modo de log do banco de dados Modo sem arquivamento
Arquivamento automático Desativado
Destino do arquivamento /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequência mais antiga de log online 6
Sequência atual de log 8
SQL> alter database flashback on; –– O recurso Flashback não pode ser ativado no modo não arquivado
alter database flashback on
*
ERRO na linha 1:
ORA-38706: Não é possível ativar o registro de FLASHBACK DATABASE.
ORA-38707: A recuperação de mídia não está habilitada.
Conclusão: o modo retrocesso não pode ser ativado no modo não arquivado
################################################
SQL> alter database archivelog;Banco de dados alterado.
SQL> archive log list
Modo de log do banco de dados Modo de arquivamento
Arquivamento automático Habilitado
Destino do arquivamento /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
SQL>
SQL> alter database flashback on;
Banco de dados alterado.
SQL> archive log list
Modo de log do banco de dados Modo de Arquivamento
Arquivamento automático Habilitado
Destino de arquivamento /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
Conclusão: Se o caminho de armazenamento para os logs de arquivamento for especificado, então, ao ativar o recurso Flashback, o caminho de armazenamento dos logs de arquivamento permanecerá o caminho originalmente definido pelo usuário
#############################
Continuação:
Altere os logs de arquivamento para o caminho de armazenamento padrão do banco de dados. Repita a operação acima para confirmar se o caminho dos logs de arquivamento corresponde ao caminho da área de flashback
SQL> shutdown immediate
Banco de dados fechado.
SQL> startup mount
Instância ORACLE iniciada.
SQL> archive log list
Modo de log do banco de dados: Modo de arquivamento
Arquivamento automático: Habilitado
Destino de arquivamento: /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequência mais antiga de log online: 6
Próxima sequência de log a ser arquivada: 8
Sequência atual de log: 8
SQL> alter system set log_archive_dest_1=’’; –-Modificar o log de arquivamento como caminho de armazenamento padrão do banco de dados
Sistema alterado.
SQL> archive log list
Modo de log do banco de dados Modo de arquivamento
Arquivamento automático Habilitado
Destino do arquivamento ?/dbs/arch
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
SQL> alterar banco de dados para aberto;
Banco de dados alterado.
SQL> archive log list
Modo de log do banco de dados Modo de arquivamento
Arquivamento automático Habilitado
Destino do arquivamento ?/dbs/arch
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
SQL> select flashback_on,open_mode from v$database;
FLASHBACK_ON OPEN_MODE
–---------------- --------------------
YES LEITURA E GRAVAÇÃO
SQL> desligar imediatamente
Banco de dados fechado.
SQL> startup
Instância ORACLE iniciada.
SQL> archive log list
Modo de log do banco de dados Modo de Arquivamento
Arquivamento automático Habilitado
Destino do arquivamento USE_DB_RECOVERY_FILE_DEST
Sequência mais antiga de log online 6
Próxima sequência de log a ser arquivada 8
Sequência atual de log 8
Conclusão: O log de arquivamento é o caminho de armazenamento padrão do banco de dados. Quando a função de retrocesso (flashback) está habilitada, mude para o modo de arquivamento. Por padrão, o caminho do log de arquivamento é o mesmo do diretório de retrocesso (flashback area).