[Oracle报错]EXP-00091: Exporting questionable statistics.

本文介绍了解决Oracle导出过程中出现的EXP-00091错误的方法。该错误通常与字符集不匹配有关,在导出表统计数据时发生。通过设置正确的NLS_LANG环境变量可以避免此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   Oracle版本:10.2.0.5.0

  问题描述:

  今天在虚拟机中使用exp进行导出实验时出现了“EXP-00091”错误,以下为导出操作命令及具体错误信息:

[oracle@tank ~]$ exp system/oracle file=/home/oracle/hr.dmp tables=hr.employees

Export: Release 10.2.0.5.0 - Production on Sat Apr 19 19:43:06 2017

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


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses WE8ISO8859P1 character set (possible charset conversion)

About to export specified tables via Conventional Path ...
Current user changed to HR
. . exporting table EMPLOYEES 107 rows exported
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
Export terminated successfully with warnings.

 

  MOS-->Error EXP-00091 While Taking Export (文档 ID 204793.1)

  

问题原因:

  Beginning with Oracle 9i by default export attempts to include statistics in the export. In pre-Oracle 9i versions statistics are not included unless it is specified.

  

       解决方案:

  a. If the statistics of a table are not required to be included in export, then take the export with parameter STATISTICS=NONE. Example:

  #> exp scott/tiger file=emp1.dmp tables=emp STATISTICS=NONE
  b. In case, the statistics are need to be included, you can use STATISTICS=ESTIMATE or COMPUTE (default is Estimate).

  Note: The export will still generate the warning message about the questionable statistics in one of the following cases even if using  STATISTICS=ESTIMATE / COMPUTE:

  1. There are row errors while exporting

  2. The client character set or NCHAR character set does not match the server character set or NCHAR character set (the NLS_LANG is different than the database character set for example).

  3. A QUERY clause is specified

  4. Only certain partitions or subpartitions are exported.

  The situation in case 2 is the most frequent and can be solved by setting the NLS_LANG character set of the client to the character set of the database.

  

经分析,当前情况属于上述第2点,执行以下操作:

[oracle@tank ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.5.0 - Production on Sat Apr 19 19:43:53 2017

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.


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

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.WE8ISO8859P1

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@tank ~]$ export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
[oracle@tank ~]$ exp system/oracle file=/home/oracle/hr1.dmp tables=hr.employees

Export: Release 10.2.0.5.0 - Production on Sat Apr 19 19:44:14 2017

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


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set

About to export specified tables via Conventional Path ...
Current user changed to HR
. . exporting table EMPLOYEES 107 rows exported
Export terminated successfully without warnings.

 

   总结:

  使用exp/imp工具时,尤其要注意变量NLS_LANG的设置。

 -The end-

                                Tank

                                20170419

 

转载于:https://www.cnblogs.com/okey/p/6736291.html

<think>首先,用户的问题是关于Oracle数据库导入错误,具体错误代码是:ORA-39002, ORA-31694, ORA-02354, ORA-04063。用户提到主表加载失败、数据导出导入错误和视图错误。我需要根据提供的引用内容来帮助解决。 回顾引用内容: - 引用[1]:涉及ORA-39002和ORA-39070,错误是无法打开日志文件,原因是目录路径大小写问题或文件夹不存在。 - 引用[2]:涉及ORA-39002和ORA-31694,错误是主表加载/卸载失败,文件无法打开,可能是文件大小问题。 - 引用[3]:涉及ORA-39002和ORA-39165,错误是未找到方案,解决方法是使用remap_schema和remap_tablespace。 - 引用[4]:涉及ORA-39002和ORA-39070,但未指定具体内容。 用户的具体错误包括ORA-31694(主表加载失败)、ORA-02354(可能是导入时错误)和ORA-04063(视图错误)。ORA-02354和ORA-04063没有在引用中直接提到,所以我需要基于一般知识处理。 关键错误分析: - **ORA-39002: 操作无效**:这是一个通用错误,通常由其他错误引起,如文件访问问题或参数错误。 - **ORA-31694: master table failed to load/unload**:导出/导入过程中主表处理失败,可能由于文件损坏、权限问题或路径错误。 - **ORA-02354: error in exporting/importing data**:数据导出/导入错误,可能涉及数据不一致或损坏。 - **ORA-04063: view has errors**:视图有错误,可能在导入后视图编译失败。 用户提到“主表加载失败”,这对应于ORA-31694;“数据导出导入错误”对应于ORA-02354;“视图错误”对应于ORA-04063。 基于引用,解决步骤: 1. **检查目录路径和权限**(如引用[1]):确保导出/导入使用的目录存在,大小写匹配(在Windows上),并且Oracle用户有读写权限。 2. **处理主表加载失败**(如引用[2]):检查dump文件是否完整,文件大小是否正常(逻辑块大小问题),确保文件可访问。 3. **方案和表空间映射**(如引用[3]):如果导出用户和导入用户不同,使用remap_schema;如果表空间不同,使用remap_tablespace。 4. **视图错误处理**:ORA-04063表示视图在导入后无效,需要重新编译或检查依赖对象。 回答结构: - 逐步解释错误原因和解决方案。 - 使用中文,因为用户要求中文回答。 - 在回答中自然地添加引用标识,例如[^1]。 - 生成相关问题,如指令要求。 最终回答应包括: 1. 引言:总结问题。 2. 分析每个错误代码。 3. 提供解决步骤。 4. 生成相关问题。 生成相关问题: - 如指令要求,在回答末尾添加相关问题。 相关问题示例: 1. 如何避免Oracle导入时的目录路径错误? 2. 什么是remap_schema和remap_tablespace在impdp中的用途? 3. 如何处理导入后的视图编译错误? 确保LaTeX语法正确:用户提到行内数学表达式用$...$,独立公式用$$...$$,但在这个问题中,可能不需要数学公式,除非涉及计算。所以,我可以避免使用数学公式,除非必要。 现在,构建回答。</think>### Oracle导入错误解决方案:ORA-39002, ORA-31694, ORA-02354, ORA-04063 您在Oracle数据库导入过程中遇到的错误涉及多个方面:主表加载失败(ORA-31694)、数据导出导入错误(ORA-02354)、视图报错(ORA-04063),以及通用操作无效错误(ORA-39002)。这些错误通常源于目录权限、文件问题、用户/表空间不匹配或对象依赖性问题。下面我将逐步分析原因并提供解决方案,帮助您逐步解决。解决方案基于Oracle官方文档和常见实践,确保可靠性和可操作性。 #### 错误分析及解决步骤 1. **ORA-39002: 操作无效** - **原因**:这是一个通用错误,通常由其他具体错误(如文件访问失败或参数错误)引发。例如,引用[1]中提到,目录路径大小写不匹配或文件夹不存在会导致此错误。在Windows系统中,路径大小写可能被忽略,但Oracle严格区分大小写[^1]。 - **解决方案**: - 检查导出/导入使用的目录路径:确保操作系统文件夹存在,且与`CREATE DIRECTORY`语句中的路径完全匹配(包括大小写)。例如,如果目录定义为`'c:\temp'`,则操作系统文件夹必须为`temp`(小写),而非`Temp`[^1]。 - 验证目录权限:运行以下SQL命令,确保Oracle用户有读写权限: ```sql SELECT * FROM dba_directories WHERE directory_name = 'YOUR_DIRECTORY_NAME'; GRANT READ, WRITE ON DIRECTORY YOUR_DIRECTORY_NAME TO PUBLIC; -- 或指定用户 ``` - 如果目录不存在,先创建操作系统文件夹,再在Oracle中定义目录。引用[1]表明,Oracle不会自动创建文件夹,必须先手动创建[^1]。 2. **ORA-31694: 主表加载/卸载失败** - **原因**:主表(master table)是impdp/expdp操作的核心元数据表。此错误通常由dump文件问题引起,如文件损坏、路径错误或文件大小不兼容(例如,文件大小不是逻辑块大小的倍数)。引用[2]指出,ORA-31694常伴随ORA-19505(文件识别失败)或ORA-27046(文件大小问题)[^2]。 - **解决方案**: - 检查dump文件完整性:使用操作系统命令验证文件大小和权限。例如,在Windows中: ```cmd dir c:\your_path\your_dumpfile.dmp ``` 确保文件大小正常(非0字节),且未被其他进程锁定。 - 重新生成dump文件:如果文件损坏,从源数据库重新导出。使用expdp命令时,添加`LOGFILE`参数捕获日志: ```sql expdp user/password@db DIRECTORY=your_dir DUMPFILE=your_dump.dmp LOGFILE=export.log ``` - 调整文件大小:如果文件大小不兼容,导出时指定`FILESIZE`参数,例如: ```sql expdp ... FILESIZE=1G -- 限制单个文件大小 ``` 导入时使用相同参数[^2]。 3. **ORA-02354: 数据导出/导入错误** - **原因**:此错误表示数据行处理失败,可能由于数据不一致、字符集不匹配或表结构冲突。常与ORA-39002一起出现。 - **解决方案**: - 检查源和目标数据库的字符集:运行以下SQL确保一致: ```sql SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%'; ``` 如果不一致,导出时添加`CHARACTERSET`参数,或导入前调整目标数据库设置。 - 使用`REMAP_SCHEMA`和`REMAP_TABLESPACE`:如果导出用户和导入用户不同(或表空间不同),必须映射。引用[3]说明,例如: ```sql impdp user/password@db DIRECTORY=your_dir DUMPFILE=your_dump.dmp REMAP_SCHEMA=source_user:target_user REMAP_TABLESPACE=source_tablespace:target_tablespace ``` 这解决了方案不匹配问题[^3]。 - 启用详细日志:导入时添加`LOGFILE`和`PARALLEL`参数捕获更多细节: ```sql impdp ... LOGFILE=import.log PARALLEL=2 ``` 检查日志中的具体错误行。 4. **ORA-04063: 视图有错误** - **原因**:导入后视图编译失败,通常由于依赖对象(如表或函数)缺失或无效。此错误在导入完成后发生,与主表加载无关。 - **解决方案**: - 重新编译无效对象:导入后运行以下SQL: ```sql EXEC DBMS_UTILITY.compile_schema(schema => 'YOUR_SCHEMA'); ``` 或手动编译: ```sql ALTER VIEW your_view_name COMPILE; ``` - 检查依赖关系:使用`DBA_DEPENDENCIES`视图找出缺失对象: ```sql SELECT * FROM dba_dependencies WHERE name = 'YOUR_VIEW_NAME'; ``` 确保所有依赖表、函数等已正确导入。 - 导入时排除无效对象:如果视图错误不影响核心数据,导入时添加`EXCLUDE`参数: ```sql impdp ... EXCLUDE=VIEW ``` 之后手动创建视图。 #### 通用预防措施 - **测试环境验证**:先在测试环境模拟导入,避免生产环境风险。 - **完整命令示例**:结合以上步骤,一个健壮的impdp命令可能如下: ```sql impdp system/password@orcl DIRECTORY=dbbak DUMPFILE=data.dmp REMAP_SCHEMA=old_user:new_user REMAP_TABLESPACE=old_ts:new_ts LOGFILE=import.log PARALLEL=4 ``` - **监控与日志**:始终指定`LOGFILE`参数,并检查日志文件(如`import.log`)定位具体错误。 如果以上步骤无法解决,请提供更多细节(如操作系统版本、Oracle版本、完整错误日志),以便进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值