You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用impdp跨服务器导入Schema遇ORA-31693等错误,仅NVARCHAR2表异常

解决impdp导入含NVARCHAR2类型表时的字符集错误

当使用impdp导入Schema时,所有含NVARCHAR2类型的表触发如下错误,无NVARCHAR2的表可正常导入:

ORA-31693: Table data object "XXXXX"."AuditLogActions" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-24329: invalid character set identifier
ORA-31693: Table data object "XXXXX"."AuditLogs" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-24329: invalid character set identifier

原因

NVARCHAR2类型依赖Oracle的国家字符集(NLS_NCHAR_CHARACTERSET),源数据库与目标数据库的国家字符集不匹配,或导入/导出时字符集参数配置错误,导致无法识别字符集标识。

解决方案

  • 检查源库与目标库的国家字符集
    在源库和目标库分别执行以下SQL,确认NLS_NCHAR_CHARACTERSET参数是否一致:

    SELECT PARAMETER, VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
    

    若参数不一致,优先调整目标库国家字符集(需停机操作,风险较高,需备份后执行),或重新导出时指定匹配目标库的字符集。

  • 导出时指定国家字符集参数
    若源库与目标库国家字符集不同,导出Schema时显式指定目标库的国家字符集:

    expdp 用户名/密码@源库地址 schemas=XXXXX dumpfile=schema_exp.dmp logfile=exp.log NLS_NCHAR_CHARACTERSET=目标库国家字符集
    

    例如目标库国家字符集为AL16UTF16,则参数设为NLS_NCHAR_CHARACTERSET=AL16UTF16。

  • 导入前设置环境变量
    在导入服务器上设置环境变量,强制使用目标库的国家字符集:

    export NLS_NCHAR_CHARACTERSET=目标库国家字符集
    

    再执行导入命令:

    impdp 用户名/密码@目标库地址 schemas=XXXXX dumpfile=schema_exp.dmp logfile=imp.log
    
  • 验证导出文件的字符集定义
    使用impdp生成DDL文件,查看NVARCHAR2字段的字符集配置:

    impdp 用户名/密码@目标库地址 schemas=XXXXX dumpfile=schema_exp.dmp sqlfile=schema_ddl.sql
    

    打开schema_ddl.sql,检查表中NVARCHAR2字段的字符集是否与目标库兼容,若存在不匹配的定义,可手动修改DDL后重新导入表结构,再导入数据。

内容的提问来源于stack exchange,提问作者Lê Mạnh Hùng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:50:36