1 votes

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

Je suis en train d'utiliser RHEL 5 avec Oracle 11g et je teste data guard.

Je suis en train de configurer data guard 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.  Tous droits réservés.

connecté à la base de données cible: ORCL (DBID=1227314034)

connecté à la base de données auxiliaire: STDBY (non montée)

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 de fichiers 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: échec de la commande de sauvegarde sur le canal d1 à 10/06/2009 11:56:41
ORA-19558: erreur de désallocation du périphérique
ORA-19557: erreur de périphérique, type de périphérique: DISK, nom du périphérique: 
ORA-17627: ORA-01041: erreur interne. extension hostdef n'existe pas
ORA-17627: ORA-01041: erreur interne. extension hostdef n'existe pas
ORA-03113: fin de fichier sur le canal de communication
canal d1 désactivé, l'exécution de la tâche en échec sur un autre canal
RMAN-00571: ===========================================================
RMAN-00569: =============== LA PILE DE MESSAGES D'ERREUR SUIT ===============
RMAN-00571: ===========================================================
RMAN-03002: échec de la commande Duplicate Db à 10/06/2009 11:56:54
RMAN-03015: une erreur est survenue dans le script mémorisé Memory Script
RMAN-03009: échec de la commande de sauvegarde sur le canal d2 à 10/06/2009 11:56:54
ORA-19558: erreur de désallocation du périphérique
ORA-19557: erreur de périphérique, type de périphérique: DISK, nom du périphérique: 
ORA-17627: ORA-01041: erreur interne. extension hostdef n'existe pas
ORA-17627: ORA-01041: erreur interne. extension hostdef n'existe pas
ORA-03113: fin de fichier sur le canal de communication

J'ai cherché sur Google 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'Oracle indique :

ORA-01041: erreur interne. L'extension hostdef n'existe pas
    Cause : Le pointeur vers l'extension hstdef dans hstdef est nul.
    Action : Signaler comme bug

Donc, si vous avez un support de leur part, je vous suggère de les contacter. Explorer les erreurs dans Oracle peut parfois vous rendre fou.

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

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

Alors vérifiez 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 tnsnames.ora contient la définition des deux bases de données (ce qui devrait être le cas puisque vous êtes connecté à toutes les deux, mais il vaut mieux le vérifier), et vérifiez également si vous utilisez un tnsnames différent de la base de données.

Le listener pourrait également poser problème, peut-être que le stdby ne s'enregistre jamais, vous pouvez essayer de l'ajouter manuellement dans le fichier du listener au lieu de le laisser s'enregistrer automatiquement.

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 c'est quelque chose que vous pourriez essayer aussi.

Si cela ne vous aide toujours pas, regardez le journal des alertes et les fichiers de traces, peut-être fournissent-ils plus d'informations sur le problème.

C'est toutes les idées que j'ai, j'espère que cela vous aidera au moins un peu.

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

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 voudrez peut-être aussi ajouter parameter_value_convert 'orcl','stdby' pas sûr 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