Erro ORA-16019
February 24, 2012

O erro acontece quando tento alterar qualquer dos destinos de archives, como abaixo:

SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive/dbtst';
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or
LOG_ARCHIVE_DUPLEX_DEST

Solução:

1) Anular o parâmetro LOG_ARCHIVE_DEST

SQL> ALTER SYSTEM set log_archive_dest='';

System altered.

2) Definir para um destino de archive (no meu caso o primeiro) o valor que estava atribuído para o parâmetro LOG_ARCHIVE_DEST

SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive/dbtst';

System altered.

Mais será que está funcionando?

SQL> select dest_id, status from v$archive_dest;

   DEST_ID STATUS
---------- ---------
	 1 VALID
	 2 INACTIVE
	 3 INACTIVE
	 4 INACTIVE
	 5 INACTIVE
	 6 INACTIVE
	 7 INACTIVE

Sim :)

Restore com RMAN-06023
February 23, 2012

Oracle sempre surpreendendo, dessa vez com um restore em RMAN. Essa eu peguei sexta-feira passada em um cliente o ambiente era um Oracle 10g 64b em um Red Hat Linux 5.

O erro ocorria assim: Sempre quando tentava realizar um restore da base a seguinte mensagem era mostrada pelo RMAN.

RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 5 found to restore

Já pensei comigo, “poxa não tenho backups dos datafiles 4 e 5” mais o problema estava ai, eu tinha o backup dos datafiles 4 e 5. Veja abaixo que quando peço para listar os backups do banco ele sinaliza o backup para os datafiles 4 e 5:

RMAN> list backup of database;

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
9965    Incr 0  50.13G     DISK        00:49:12     22.02.2012 14:15:11
        BP Key: 8201   Status: AVAILABLE  Compressed: YES  Tag: FULL_DB
        Piece Name: /oracle/backup/FULL_DB_1.bkp
  List of Datafiles in backup set 9965
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1    0  Incr 92563519151 22.02.2012 14:15:11 /oradata/system01.dbf
  2    0  Incr 92563519151 22.02.2012 14:15:11 /oradata/df_tst1.dbf
  3    0  Incr 92563519151 22.02.2012 14:15:11 /oradata/sysaux01.dbf
  4    0  Incr 92563519151 22.02.2012 14:15:11 /oradata/datafiledb1.dbf
  5    0  Incr 92563519151 22.02.2012 14:15:11 /oradata/datafiledb2.dbf
  6    0  Incr 92563519151 22.02.2012 14:15:11 /oradata/users01.dbf
  7    0  Incr 92563519151 17.02.2012 14:15:11 /oradata/undotbs01.dbf

Mesmo apresentando no backup que os datafiles 4 e 5 estavam presentes não adiantava, o erro RMAN-06023 aparecia:

RMAN> RESTORE DATABASE;

using target database control file instead of recovery catalog
allocated channel: c1
channel c1: sid=321 devtype=DISK

Starting restore at 22.02.2012 15:15:21

released channel: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 22/02/2012 15:15:22
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 5 found to restore

Realmente o erro era inesperado, pois eu tinha o backup:

RMAN> list backup of datafile 4;

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
9965    Incr 0  50.13G     DISK        00:49:12     22.02.2012 14:15:11
        BP Key: 8201   Status: AVAILABLE  Compressed: YES  Tag: FULL_DB
        Piece Name: /oracle/backup/FULL_DB_1.bkp
  List of Datafiles in backup set 9965
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  4    0  Incr 92563519151 22.02.2012 14:15:11 /oradata/datafiledb1.dbf

RMAN> list backup of datafile 5;

List of Backup Sets
===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
9965    Incr 0  50.13G     DISK        00:49:12     22.02.2012 14:15:11
        BP Key: 8201   Status: AVAILABLE  Compressed: YES  Tag: FULL_DB
        Piece Name: /oracle/backup/FULL_DB_1.bkp
  List of Datafiles in backup set 9965
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  5    0  Incr 92563519151 22.02.2012 14:15:11 /oradata/datafiledb2.dbf

Solução encontrada? Desabilitar a Flash Recovery Area. Isso mesmo, após desabilitar a flash recovery area o problema não aconteceu mais.

Mais porque? Bom …

Quando iniciamos um restore de uma base através de um backup de controlfile em que a flash recovery area está habilita o RMAN executa um implícito crosscheck e cataloga todos os objetos na flash recovery area. Com isso o RMAN vai catalogar QUALQUER objeto que estiver na flash recovery area e se qualquer um desses arquivos pertencer a uma encarnação diferente da ATUAL encarnação do controlfile então muda a atual encarnação para do arquivo que está sendo catalogado.

Isso de acordo com a Oracle evita ao banco de dados restaurar backups que pertencem a uma velha encarnação. Para mais detalhes veja a nota 965122.1 do suporte Oracle.

Após desabilitado a flash recovery area, meu restore funcionou perfeitamente :)