2010-11-25 96 views
8

我们被另一个团队递交了转储文件,这些团队在今年剩余时间内已经离开。当我们试图转储导入到我们自己的数据库,我们得到以下错误:确定现有Oracle数据库转储文件的NLS_LANG设置

IMP-00038: Could not convert to environment character set's handle

在一些研究,我们的猜测是,我们在源机器的NLS_LANG设置和我们本地机器之间的不匹配。我们目前没有任何方法来检查源机器上NLS_LANG的值。

因此,我们手中只有一个转储文件,是否有办法找出导出完成的NLS_LANG值?从它的外观来看,我们应该能够在运行导入客户端(imp)之前覆盖NLS_LANG环境变量。

另一件事是,转储是从一个11g实例完成的,我们的imp版本是10.我读到imp是不兼容的。这可能是问题在这里(而不是NLS_LANG不匹配)?

回答

6
在UNIX

最简单的方法是:

#>imp username/password file=test.dmp show=y 

Import: Release 10.2.0.3.0 - Production on Fri Nov 26 08:38:47 2010 

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


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production 
With the Partitioning, OLAP and Data Mining options 

Export file created by EXPORT:V10.02.01 via conventional path 
import done in US7ASCII character set and AL16UTF16 NCHAR character set 
import server uses WE8ISO8859P1 character set (possible charset conversion) 

版本EXP/IMP一个问题: 我平时使用的V10导出程序并使其连接到V11数据库。 确保你在dev10的oracle_home的tnsnames.ora中有dev11的别名。

hostname{oracle}# . oraenv 
ORACLE_SID = [oracle] ? dev10 
hostname{oracle}# 
hostname{oracle}#>exp username/[email protected] full=y dumpfile=dump.exp 
+0

只有Oracle客户机安装才可以使用show = y吗?所以我不需要任何用户名/密码? – guerda 2016-03-18 12:24:36

2

即使该文件是二进制文件,也有一些人类可读的文本摘录。我看到有下列字符串,我觉得这回答我的问题:

 
<CHARSET>AL32UTF8</CHARSET><NCHARSET>AL16UTF16</NCHARSET> 
... 
NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' 
10

阿泰,尝试IMPDP - 有时可以帮助:-)

+6

使用`imp`导入使用`expdp`导出的转储文件也会导致此错误。 – 2011-09-19 14:57:43

1

Another thing is, the dump was done from an 11g instance and our imp version is 10. I read that imp is not forward compatible. Could this be the issue here (instead of the NLS_LANG mismatch)?

答:你说的没错;由于目标Oracle数据库的Oracle客户端较旧,因此无法导入使用给定Oracle客户端创建的转储文件。虽然不建议

,您可以用年长 Oracle客户端(即10克)导出来源Oracle数据库(即10克+),因为你使用的是相同的Oracle客户端版本导入到您的较旧目标oracle数据库(即10g)。

假设:源数据库的Oracle客户端版本与目标Oracle数据库版本相同或更新。请注意,混合工具数据泵(11g)和imp(-10g)导入实用程序不起作用。

Interessant链接Using Different Releases and Versions of Export

1

也许它是使用expdp出口....尝试impdp ....这是我所看到的谷歌搜索时,真正它的工作对我来说这个同样的问题。