1 votes

Erreur ORA-01041 lors de la duplication de la base de données sur un nouvel hôte

J'utilise RHEL 5 avec Oracle 11g et je teste Data Guard.

J'essaie de configurer la garde de données en suivant ce lien :

http://www.databasejournal.com/features/oracle/article.php/3816751/Oracle-11g-Data-Guard-Building-a-Physical-Standby-Database.htm

J'utilise la commande suivante :

[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;
  }

Lorsque la copie du fichier de données démarre, j'obtiens cette erreur :

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

J'ai fait des recherches sur Internet, mais je n'ai toujours pas trouvé de solution.

Une idée, s'il vous plaît ?

Sarith

1voto

Code Trawler Points 163

La documentation d'Oracles indique :

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

Donc, si vous avez un soutien de leur part, je vous suggère de les contacter. Fouiller dans les erreurs d'Oracle peut vraiment vous rendre fou parfois.

Mais d'après ce que j'ai compris, l'erreur est liée à la connexion entre les bases de données (ou entre la base de données et le client), il y a donc plusieurs choses que vous pouvez vérifier.

Tout d'abord, il se peut que les fichiers n'existent tout simplement pas.

Vérifiez donc que ces fichiers existent (et peuvent être lus par la base de données) :

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

Vérifiez également que ORACLE_HOME est correctement défini, et que le fichier tnsnames.ora contient la définition des deux bases de données (il devrait puisque vous êtes connecté aux deux, mais il vaut mieux le vérifier), et vérifiez également si vous utilisez un tnsnames différent de celui de la base de données.

Le listener peut aussi être un problème, peut-être que le stdby n'est jamais enregistré, vous pouvez essayer de l'ajouter manuellement dans le fichier listener au lieu de le laisser s'enregistrer lui-même.

J'ai également eu des problèmes si le nom d'hôte utilisé n'existe pas dans le fichier /etc/hosts, même en utilisant un dns, donc vous pouvez également essayer.

Si cela ne vous aide toujours pas, jetez un coup d'œil au journal des alertes et aux fichiers de trace, ils fournissent peut-être plus d'informations sur le problème.

C'est tout ce que j'ai comme idées, j'espère que ça vous aidera un peu au moins.

Mise à jour : hmm, après avoir vérifié un peu plus, il me semble qu'un des problèmes pourrait être que vous ne spécifiez pas l'emplacement des fichiers db.

Essayez d'ajouter :

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

après l'instruction spfile

Vous pouvez également ajouter parameter_value_convert 'orcl','stdby' Je ne sais pas si c'est nécessaire, mais cela semble être une bonne idée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X