erro ORA-01041 ao duplicar o banco de dados para novo host

1

Estou usando o RHEL 5 com o Oracle 11g e estou testando a proteção de dados.

Estou tentando configurar a proteção de dados seguindo este link:

link

Eu uso o seguinte comando:

[oracle@linux-test ~]$ rman target sys/oracle auxiliary sys/oracle@stdby

Recovery Manager: Release 11.1.0.6.0 - Production on Tue Oct 6 11:54:47 2009

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

connected to target database: ORCL (DBID=1227314034)

connected to auxiliary database: STDBY (not mounted)

RMAN> RUN {
   ALLOCATE CHANNEL d1 TYPE DISK;
   ALLOCATE CHANNEL d2 TYPE DISK;
   ALLOCATE AUXILIARY CHANNEL cnv1 TYPE DISK;
   ALLOCATE AUXILIARY CHANNEL cnv2 TYPE DISK;
   DUPLICATE TARGET DATABASE
       FOR STANDBY
       FROM ACTIVE DATABASE
       DORECOVER
       SPFILE
          SET db_unique_name='stdby' 
          SET control_files='/home/u01/app/oracle/oradata/orcl/control01.ctl'
          SET log_file_name_convert='/home/u01/app/oracle/oradata/orcl/','/home/u01/app/oracle/oradata/stdby/'
          SET log_archive_dest_1='location=/home/u01/app/oracle/flash_recovery_area/STDBY/ valid_for=(ALL_LOGFILES,ALL_ROLES) db_unique_name=stdby'
          SET log_archive_dest_2='service=orcl ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=orcl'
          SET fal_client='stdby'
          SET fal_server='orcl'
          SET standby_file_management='AUTO'
          SET log_archive_config='dg_config=(orcl,stdby)'
      NOFILENAMECHECK;
  }

Quando está começando a cópia do arquivo de dados, recebo este erro:

channel d1: starting datafile copy
input datafile file number=00001 name=/home/u01/app/oracle/oradata/orcl/system01.dbf
channel d2: starting datafile copy
input datafile file number=00002 name=/home/u01/app/oracle/oradata/orcl/sysaux01.dbf
RMAN-03009: failure of backup command on d1 channel at 10/06/2009 11:56:41
ORA-19558: error de-allocating device
ORA-19557: device error, device type: DISK, device name: 
ORA-17627: ORA-01041: internal error. hostdef extension doesn't exist
ORA-17627: ORA-01041: internal error. hostdef extension doesn't exist
ORA-03113: end-of-file on communication channel
channel d1 disabled, job failed on it will be run on another channel
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 10/06/2009 11:56:54
RMAN-03015: error occurred in stored script Memory Script
RMAN-03009: failure of backup command on d2 channel at 10/06/2009 11:56:54
ORA-19558: error de-allocating device
ORA-19557: device error, device type: DISK, device name: 
ORA-17627: ORA-01041: internal error. hostdef extension doesn't exist
ORA-17627: ORA-01041: internal error. hostdef extension doesn't exist
ORA-03113: end-of-file on communication channel

Eu pesquisei no Google, mas ainda não tenho solução.

Alguma ideia, por favor?

Sarith

    
por Sarith 06.10.2009 / 09:43

1 resposta

1

Documentação da Oracle afirma:

ORA-01041: internal error. hostdef extension doesn't exist
    Cause: Pointer to hstdef extension in hstdef is null.
    Action: Report as a bug

Então, se você tiver apoio deles, sugiro que entre em contato com eles. Investigar erros no Oracle pode enlouquecer você às vezes.

Mas pelo que entendi, o erro tem a ver com a conexão entre os bancos de dados (ou o banco de dados e o cliente), portanto, há algumas coisas que você pode verificar.

Primeiro de tudo, pode ser simples que os arquivos simplesmente não existam.

Portanto, verifique se esses arquivos existem (e podem ser lidos pelo banco de dados):

/home/u01/app/oracle/oradata/orcl/system01.dbf
/home/u01/app/oracle/oradata/orcl/sysaux01.dbf

Verifique também se o ORACLE_HOME está configurado corretamente e se o tnsnames.ora contém a definição para ambos os bancos de dados (você deve estar conectado a ambos, mas é melhor verificar isso) e também verificar se você está ' re usando um tnsnames diferente do banco de dados.

O ouvinte pode ser um problema também, talvez o stdby nunca seja registrado lá, você pode tentar adicioná-lo manualmente no arquivo do ouvinte em vez de deixá-lo se registrar.

Eu também tive problemas se o nome do host usado não existe no arquivo / etc / hosts, mesmo se estiver usando um dns, então é algo que você pode tentar também.

Se ainda não ajudar. dê uma olhada no log de alerta e nos arquivos de rastreamento, talvez eles forneçam mais informações sobre o problema.

São todas as ideias que tenho, espero que o ajude um pouco, pelo menos.

Atualização: hmm, depois de verificar um pouco mais, parece-me que um problema poderia ser que você não especificasse a localização dos arquivos db.

Tente adicionar:

set db_file_name_convert='/home/u01/app/oracle/oradata/orcl/', 
    '/home/u01/app/oracle/oradata/stdby/'

após a instrução spfile

Você também pode adicionar parameter_value_convert 'orcl','stdby' sem ter certeza se é necessário, mas parece que pode ser uma boa ideia.

    
por 06.10.2009 / 13:03

Tags