将不同的字符集导出转储导入另一个数据库实例

Ayu*_*man 8 oracle import

我正在尝试使用 oracle imp 实用程序导入给定的转储文件。然而; 我面临以下问题。

C:\Users\AD>imp DB_USER/*****@dev1 file=C:\test\db42312.dmp log=C:\test\import2.log

Import: Release 11.2.0.1.0 - Production on Thu Apr 10 13:37:47 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

IMP-00038: Could not convert to environment character set's handle
IMP-00000: Import terminated unsuccessfully

C:\Users\AD>
Run Code Online (Sandbox Code Playgroud)

我的源数据库为 NLS 查询生成以下结果

SQL> select * from v$nls_parameters where parameter in ('NLS_CHARACTERSET','NLS_LANGUAGE');

PARAMETER           VALUE
----------          ---------
NLS_LANGUAGE        FRENCH
NLS_CHARACTERSET    AL32UTF8

SQL>
Run Code Online (Sandbox Code Playgroud)

我的目标数据库产生以下结果:

SQL> select * from v$nls_parameters where parameter in ('NLS_CHARACTERSET','NLS_LANGUAGE');

PARAMETER           VALUE
----------          ---------
NLS_LANGUAGE        AMERICAN
NLS_CHARACTERSET    AL32UTF8

SQL>
Run Code Online (Sandbox Code Playgroud)

我在执行导入命令时遇到的问题似乎是字符集问题。

是否可以将数据库转储导入到我的新(但空白)模式中?请注意,我已经在同一台服务器上拥有其他数据库。

小智 2

根据 Metalink 文档:

导入失败并出现错误 IMP-38(文档 ID 1024237.6)

  • 原因:转储文件已损坏或环境变量设置不正确。

  • 解决方案:处理此问题时需要考虑以下几点:

如果使用 FTP 将导出转储文件从一个位置传输到另一个位置,请确保使用 BINARY 模式发送该文件。

检查转储文件是否未被以任何方式编辑。这不是受支持的活动。

检查环境设置。

  1. 确保环境变量LD_LIBRARY_PATH指向ORACLE_HOME正在使用的导出二进制文件的正确版本。

    LD_LIBRARY_PATH应设置为$ORACLE_HOME/lib. 如果设置不正确,导出可执行文件将无法找到正确的 NLS 文件。

  2. 如果使用Oracle7.2.2,请确保环境变量ORA_NLS设置正确。应设置为$ORACLE_HOME/ocommon/nls/admin/data

  3. 将环境变量设置NLS_LANG为导出转储文件的字符集。

    导出可能是从使用与目标数据库所用字符集不同的字符集的数据库创建的。

    如果一个数据库使用 7 位字符集而另一个数据库使用 8 位字符集,则尤其如此。