Como alterar o banco de dados de NOARCHIVELOG para ARCHIVELOG no Oracle

Se seu banco de dados é importante, ele deve estar no modo ARCHIVELOG!

Para realizar tal alteração, basta seguir alguns poucos passos, porém, diferente do SQL Server, essa opção de alteração do RECOVERY MODEL requer que o banco seja reiniciado! Sim, estamos em 2020 e o Oracle com todos recursos que tem, ainda nos pede para reiniciar o banco para fazer essa simples troca!

1º passo: Verifique se o banco está em NOARCHIVELOG.

[code lang=”sql”]
[oracle@server01 ~]$ sqlplus / as sysdba
SQL> archive log list;

Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/app/oracle/product/19.0.0/dbhome_1/dbs/arch
Oldest online log sequence 24
Current log sequence 26
[/code]

Verificamos que o Database Log Mode está como No Archive Mode, outra maneira de verificar seria na view dinâmica: v$database, conforme script abaixo:

[code lang=”sql”]
SQL> select log_mode from v$database;

LOG_MODE
————
NOARCHIVELOG
[/code]

2º passo: Desligar o banco de dados e coloca-lo em modo MOUNT. Nesse momento você DEVE usar o comando shutdown immediate, não use o shutdown abort, nem startup force mount!

[code lang=”sql”]
–Desligando o banco
SQL> shut immediate;

Database closed.
Database dismounted.
ORACLE instance shut down.

–Iniciando em modo mount
SQL> startup mount;

ORACLE instance started.
Total System Global Area 4848612984 bytes
Fixed Size 8906360 bytes
Variable Size 973078528 bytes
Database Buffers 3858759680 bytes
Redo Buffers 7868416 bytes
Database mounted.
[/code]

Verificando se a instância está em modo MOUNT:

[code lang=”sql”]
SQL> select status from v$instance;

STATUS
————
MOUNTED
[/code]

3º passo: Alterar o banco para ARCHIVELOG:

[code lang=”sql”]
SQL> alter database archivelog;

Database altered.
SQL>
[/code]

4º passo: Abrir o banco:

[code lang=”sql”]
SQL> alter database open;

Database altered.
[/code]

5º passo: Verificar se o banco foi alterado para archivelog:

[code lang=”sql”]
SQL> archive log list;

Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/product/19.0.0/dbhome_1/dbs/arch
Oldest online log sequence 25
Next log sequence to archive 27
Current log sequence 27
SQL>

SQL> select log_mode from v$database;

LOG_MODE
————
ARCHIVELOG
[/code]

Com esse simples passo você faz essa alteração, cuja configuração é de extrema importância para implementar soluções de alta disponibilidade e recuperação de dados no ORACLE.

Até mais.

Leonardo Pedroso

Leonardo Pedroso

Profissional de TI experiência em administração de banco de dados: SQL Server 2000 a 2019, Oracle 11g a 19c, PostgreSQL, MySQL, MongoDB, Cassandra. Atua realizando análise de desempenho, DR e HA, implantação, administração de banco de dados em cluster e implementação de projetos de banco de dados NoSQL (MongoDB, Cassandra), bem como automação de processos utilizando Shell script, Powershell (dbatools), e players de Cloud: Azure e Aws.