将数据库复制到新主机时发生ORA-01041错误

我正在使用Oracle 11g的RHEL 5,并正在testing数据保护。

我正在尝试通过以下链接设置数据保护:

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

我使用以下命令:

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

当它开始数据文件复制时,我得到这个错误:

 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 

我GOOGLE了,但我还没有解决scheme呢。

有什么想法吗?

Sarith

神谕文档指出:

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

所以,如果你有他们的支持,我build议你联系他们。 在Oracle中挖掘错误有时会让你发疯。

但从我所了解的错误必须处理数据库(或数据库和客户端)之间的连接,所以有几件事情,你可以检查。

首先,可能很简单,文件不存在。

所以请validation这些文件是否存在(并且可以被数据库读取):

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

还要validationORACLE_HOME设置是否正确,并且tnsnames.ora包含两个数据库的定义(它应该既然连接到了它们两个,但是更好的validation它),并且检查你是否使用了不同于数据库的tnsnames。

监听器也可能是一个问题,也许stdby永远不会在那里注册,你可以尝试在监听器文件中手动添加它,而不是让它自己注册。

如果所使用的主机名称不存在于/ etc / hosts文件中,即使使用了dns,也有问题,所以这也是您可以尝试的。

如果它仍然没有帮助。 看看警报日志和跟踪文件,也许他们提供了更多的问题信息。

这就是我所有的想法,希望至less可以帮助你。

更新:嗯,检查了一下之后,在我看来,一个问题可能是,你实际上并没有指定数据库文件的位置。

尝试添加:

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

在spfile语句之后

你可能也想添加parameter_value_convert 'orcl','stdby'不知道它是否必要,但看起来好像是一个好主意。