impdp -->ORA-600 [kpotcgah-9]

在使用impdp导入数据时遇到ORA-600内部错误,通过去除并行设置(parallel=1)解决了问题。此错误可能与共享池资源不足有关,增大SGA_TARGET或将并行数设为1可以避免该问题。

impdp 遭遇 ORA-600 错误,

解决方法:去掉并行,parallel=1

Mon Jun 20 14:49:44 2011
DM00 started with pid=58, OS id=19464672, job HLDBA.SYS_IMPORT_SCHEMA_08
Mon Jun 20 14:49:48 2011
DW00 started with pid=59, OS id=2752626, wid=1, job HLDBA.SYS_IMPORT_SCHEMA_08
Mon Jun 20 14:50:06 2011
DW01 started with pid=60, OS id=5046318, wid=2, job HLDBA.SYS_IMPORT_SCHEMA_08
Mon Jun 20 14:50:06 2011
DW02 started with pid=63, OS id=13631978, wid=3, job HLDBA.SYS_IMPORT_SCHEMA_08
Mon Jun 20 14:50:06 2011
DW03 started with pid=64, OS id=12910848, wid=4, job HLDBA.SYS_IMPORT_SCHEMA_08
Mon Jun 20 15:01:58 2011
DM00 started with pid=63, OS id=5177400, job HLDBA.SYS_IMPORT_TABLE_01
Mon Jun 20 15:02:00 2011
DW00 started with pid=64, OS id=20775338, wid=1, job HLDBA.SYS_IMPORT_TABLE_01
Mon Jun 20 15:02:20 2011
DM00 started with pid=64, OS id=17236312, job HLDBA.SYS_IMPORT_TABLE_01
Mon Jun 20 15:02:22 2011
DW00 started with pid=66, OS id=7667988, wid=1, job HLDBA.SYS_IMPORT_TABLE_01
Mon Jun 20 15:02:25 2011
Errors in file /opt/oracle/diag/rdbms/homelink/Homelink/trace/Homelink_p002_13762670.trc (incident=136736):
ORA-00600: internal error code, arguments: [kpotcgah-9], [0], [ORA-00600: internal error code, arguments: [], [], [], [], [], [], []
, [], [], [], [], []
], [], [], [], [], [], [], [], [], []
Incident details in: /opt/oracle/diag/rdbms/homelink/Homelink/incident/incdir_136736/Homelink_p002_13762670_i136736.trc
Mon Jun 20 15:04:35 2011
Trace dumping is performing id=[cdmp_20110620150435]
Mon Jun 20 15:04:40 2011
Sweep [inc][136736]: completed
Sweep [inc2][136736]: completed

---------------------------REFERENCE:

http://pingshx.itpub.net/post/39434/495074

碰到这个错误的情形:用expdp导一张表,除了参数directory,dumpfile,logfile,tables之外,加上了parallel=4参数,得到的具体错误如下:

Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
ORA-31693: Table data object "BASELDWH"."AUX_FACT_EREC_DETL" failed to load/unload and is being skipped due to error:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-00600: internal error code, arguments: [kpotcgah-9], [0], [ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []
], [], [], [], [], []
ORA-06512: at "SYS.ORACLE_DATAPUMP", line 19
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Master table "SYS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

一开始怀疑要导的这个表出现了什么问题,用传统的exp去导,没问题,这样推断,表本身不存问题,那很有可能是expdp出现了问题,metalink文档781326.1提到,这是一个没有公布的bug:
Bug 6155249 was closed as not reproducible. The underlying problem seems to be a shortage in Shared Pool, even if no ORA-4031 occurs.

Solution
1) Increasing SGA_TARGET has a good chance to solve the problem.
2) Using noparallel export can avoid the problem.

把parallel参数去了,expdp就没问题了。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/350519/viewspace-1051385/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/350519/viewspace-1051385/

<think>首先,用户查询是关于Oracle的impdp工具出现ORA-39029ORA-39041错误的解决方案。我需要基于提供的引用和之前的上下文来回答。 回顾用户提供的引用: - 引用[1]:提到了IMPDP错误ORA-39001、ORA-39000、ORA-39142,涉及版本不兼容问题。 - 引用[2]:讨论了IMPDP错误ORA-39014、ORA-39029ORA-31672,指出并行度(PARALLEL)不应大于dump文件的数量。 - 引用[3]:提到了IMPDP错误ORA-39083、ORA-00942,关于REMAP_SCHEMA选项无法正确处理内部引用。 用户现在询问的是ORA-39029ORA-39041错误。 从引用[2]中,我们知道ORA-39029与并行度设置不当有关:如果并行度高于dump文件的数量,可能会导致性能问题或错误。 ORA-39041错误在引用中没有直接提到,所以我需要依靠Oracle知识来补充。ORA-39041通常表示在导入过程中找不到对象,可能与schema映射、对象不存在或权限问题有关。 我的回答必须: - 使用中文回答。 - 结构清晰,帮助用户逐步解决问题。 - 参考提供的引用。 - 保证回答真实可靠。 - 引用段落末尾添加引用标识。 - 生成相关问题。 系统指令还包括LaTeX格式:行内数学表达式用$...$,独立公式用$$...$$并单独成段。但在本上下文中,可能不涉及数学公式,所以我可以忽略它。 步骤: 1. **理解错误代码**: - ORA-39029: 这个错误通常与Data Pump的并行度设置有关。引用[2]明确指出,并行度应该小于或等于dump文件集中的dump文件数量。如果并行度太高,超过dump文件数,会导致多个线程尝试访问同一个文件,引发错误。 - ORA-39041: 这个错误表示在导入过程中找不到指定的对象(如表、视图等)。可能的原因包括对象在源数据库中不存在、权限问题、或schema映射错误。 2. **构建回答**: - 先解释错误原因。 - 提供解决方案步骤。 - 参考引用。 - 最后生成相关问题。 回答结构: - **引言**:确认用户的错误,并简述解决方案。 - **错误分析**:详细解释ORA-39029ORA-39041的原因。 - **解决方案**:一步步给出如何解决这些错误。 - **引用应用**:合理引用提供的引用。 - **相关问题**:生成相关的问题列表。 解决方案基于Oracle知识: - 对于ORA-39029(并行度问题): - 检查dump文件的数量。 - 设置PARALLEL参数小于或等于dump文件数。 -impdp命令中指定较低的PARALLEL值,或使用默认值。 - 对于ORA-39041(对象找不到): - 确保源数据库中的对象存在。 - 检查REMAP_SCHEMA或REMAP_TABLESPACE是否正确设置。 - 验证权限:用户是否有权限访问对象。 - 如果在schema映射后对象引用问题,参考引用[3],可能需要手动调整DDL或使用其他工具。 引用应用: - 引用[2]直接支持ORA-39029的解决方案:设置适当的并行度。 - 引用[3]涉及schema映射问题,虽然错误不同,但可能与ORA-39041相关,因为对象缺失。 - 引用[1]涉及版本兼容性,可能不直接相关。 生成相关问题: - 类似于示例,基于主题生成3个左右的问题。 最终回答用中文。 </think>以下是针对您查询的IMPDP工具出现ORA-39029ORA-39041错误的详细解决方案。我将基于您的引用(特别是引用[2])和Oracle官方文档知识,逐步解释错误原因并提供解决方法。回答确保真实可靠,结构清晰:先分析错误、再给出步骤,最后附上相关问题。所有解决方案都参考了Oracle最佳实践和您提供的引用。 ### ORA-39029错误分析 ORA-39029错误通常发生在Data Pump导入(impdp)时,并行度(PARALLEL)设置不当。具体来说,如果设置的并行度高于dump文件集中的文件数量,多个线程会竞争访问同一个dump文件,导致冲突和错误。这会影响导入性能和稳定性[^2]。 ### ORA-39041错误分析 ORA-39041错误表示在导入过程中找不到指定的对象(如表、视图等)。常见原因包括: -数据库中对象不存在或已被删除。 - 权限不足:用户没有访问对象的权限。 - Schema映射问题:使用REMAP_SCHEMA选项时,对象内部引用未被正确重映射(类似引用[3]中的问题)。 - 版本或兼容性问题:dump文件与目标数据库版本不兼容(可能与引用[1]的版本错误类似,但ORA-39041更侧重于对象缺失)。 ### 解决步骤 以下是逐步解决方案。请在测试环境中先备份数据,再执行这些操作。假设您使用类似命令:`impdp username/password@connect_string directory=dir dumpfile=file.dmp logfile=impdp.log`。 1. **降低并行度(针对ORA-39029)**: - 检查dump文件数量:确保dump文件集中有足够的文件(例如,如果只有一个dump文件,则并行度不能超过1)。 - 调整PARALLEL参数:在impdp命令中显式设置PARALLEL小于或等于dump文件数。例如,如果有2个dump文件(file1.dmp和file2.dmp),则: ```bash impdp username/password directory=dir dumpfile=file1.dmp,file2.dmp logfile=impdp.log parallel=2 ``` - 如果不确定文件数,可将PARALLEL设为1(禁用并行)以测试: ```bash impdp username/password directory=dir dumpfile=file.dmp logfile=impdp.log parallel=1 ``` - 参考引用[2],Oracle建议并行度不应超过dump文件数,以避免性能下降和错误[^2]。 2. **处理对象缺失(针对ORA-39041)**: - 验证对象存在性:在源数据库查询对象是否存在(例如,检查表或视图名)。您可以使用SQL*Plus: ```sql SELECT owner, object_name FROM all_objects WHERE object_name = &#39;OBJECT_NAME&#39;; ``` - 检查权限:确保导入用户在目标数据库有必要的权限(如CREATE ANY TABLE、SELECT_CATALOG_ROLE)。可用以下命令授权: ```sql GRANT CREATE ANY TABLE TO username; GRANT SELECT_CATALOG_ROLE TO username; ``` - 修正schema映射:如果使用REMAP_SCHEMA,确保它覆盖所有依赖对象。例如,在impdp命令中添加映射: ```bash impdp username/password directory=dir dumpfile=file.dmp remap_schema=old_schema:new_schema ``` - 如果错误涉及触发器、包等内部引用(类似引用[3]),可能需要手动编辑DDL或使用SQL脚本后处理[^3]。 - 检查版本兼容性:确保dump文件版本与目标数据库兼容。使用`impdp`的VERSION参数导入: ```bash impdp username/password directory=dir dumpfile=file.dmp version=COMPATIBLE # 例如 version=12.1 ``` 引用[1]提到版本不符会导致ORA-39142,这可能间接引发ORA-39041[^1]。 3. **通用调试技巧**: - 查看日志文件:分析impdp.log文件中的详细错误栈,定位特定对象。 - 简化导入:使用`CONTENT=METADATA_ONLY`先导入元数据测试: ```bash impdp username/password directory=dir dumpfile=file.dmp content=METADATA_ONLY ``` - Oracle支持:如果问题持续,参考Oracle文档(如Doc ID 464082.1)或联系Oracle支持。 ### 总结 ORA-39029ORA-39041错误通常由并行度设置过高或对象缺失引起。优先降低PARALLEL并验证对象完整性。确保操作环境一致(如同版本数据库),并参考Oracle最佳实践以避免常见陷阱[^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值