oracle SQLLoader - DIRECT 模式中的错误“已停止,因为我无法继续”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/435114/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-18 17:40:22  来源:igfitidea点击:

Error "stopped because I can't continue" in SQLLoader - DIRECT mode

oraclesql-loader

提问by Thorsten

When trying to load a large text file into the oracle db using SQLLoader, we get the following errors:

当尝试使用 SQLLoader 将大型文本文件加载到 oracle 数据库时,我们收到以下错误:

SQL*Loader-926: OCI-Error; uldlfca:OCIDirPathColArrayLoadStream for table <myTabele>
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
SQL*Loader-925: Error in uldlgs: OCIStmtExecute (ptc_hp)

This only happens in DIRECT mode, when we're using the conventional path method, everything is fine (but a lot slower). So I assume it can't be a problem with the data or the general parts of the control file.

这只发生在 DIRECT 模式下,当我们使用传统的路径方法时,一切都很好(但速度要慢得多)。所以我认为数据或控制文件的一般部分不会有问题。

While the error message is quite amusing, what can I do to get everything to work?

虽然错误消息很有趣,但我该怎么做才能让一切正常工作?

Versions: SQLLoader 9.2.0.1, Database is a 10.2.0.3.0 (64-bit)

版本:SQLLoader 9.2.0.1,数据库是 10.2.0.3.0(64 位)

EDITAfter some more trying, it seems that the problems are caused by using functions to convert some of the input. When I remove the functions (with the resulting changes in the table definition), everything seems to be working fine. Is it possible that when doing a direct load I cannot use functions? The documentation says that starting with version 9.x it should work ...

编辑经过一些更多的尝试,似乎问题是由使用函数来转换某些输入引起的。当我删除这些函数(导致表定义发生变化)时,一切似乎都运行良好。是否有可能在进行直接加载时无法使用函数?文档说从版本 9.x 开始它应该可以工作......

回答by DCookie

First, it would be a big help if people could start specifying version information about the products they're having issues with.

首先,如果人们可以开始指定有关他们遇到问题的产品的版本信息,这将是一个很大的帮助。

That said, I found one issue in metalink:

也就是说,我在 metalink 中发现了一个问题:

Bug 3073503 - Direct path load session fails with OER:klapse_30 if first loaded row gets an ORA error

错误 3073503 - 如果第一个加载的行出现 ORA 错误,直接路径加载会话将失败并显示 OER:klapse_30

Description

描述

Direct load via sqlldr may report errors and the server may 
fail with ORA-600 [klaprs_30] if the first loaded row fails 
with oracle error.

eg: After an ORA-1722 loader fails with:
     ORA-26095: unprocessed stream data exists 
     ORA-03113: end-of-file on communication channel 
     SQL*Loader-926: OCI error while uldlfca:OCIDirPathColArrayLoadStream for.. 
     SQL*Loader-2026: the load was aborted because SQL Loader cannot continue. 
     SQL*Loader-925: Error  while uldlgs: OCIStmtExecute (ptc_hp) 

    and the user session fails with ORA-600 [klaprs_30].

Workaround: 
  Use conventional load

Supposedly affects versions >= 9.2 but < 10.1.0.2

据说影响版本 >= 9.2 但 < 10.1.0.2

You might want to check the alert log for the ORA-00600 error at the time of the SQL Loader error.

您可能希望在 SQL Loader 错误时检查警报日志中是否存在 ORA-00600 错误。

回答by Gary Myers

Check the database alert log. Direct path insert writes above the current high water mark for the table, so there may be an issue when it tires to allocate further extents to the table.

检查数据库警报日志。直接路径插入写入高于表的当前高水位线,因此在为表分配更多区时可能会出现问题。