【问题标题】:Oracle SQL loader Error while loading really huge log filesOracle SQL 加载器在加载非常大的日志文件时出错
【发布时间】:2011-11-10 12:28:00
【问题描述】:

我有一个 python 脚本,它遍历目录中的日志文件,并使用 oracle sqlloader 将日志文件加载到 oracle 数据库。脚本工作正常,甚至 sqlloader ..

但是在加载大约 200k 条记录后,加载失败并出现此异常..

Record 11457: Rejected - Error on table USAGE_DATA.
ORA-12571: TNS:packet writer failure

SQL*Loader-926: OCI error while uldlfca:OCIDirPathColArrayLoadStream for table USAGE_DATA
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
Specify SKIP=11000 when continuing the load.
SQL*Loader-925: Error while uldlgs: OCIStmtExecute (ptc_hp)
ORA-03114: not connected to ORACLE

SQL*Loader-925: Error while uldlgs: OCIStmtFetch (ptc_hp)
ORA-24338: statement handle not executed

我不知道为什么会这样。我检查了与表的表空间对应的数据文件,并且它已将自动扩展设置为 true。还有什么原因?

在“sqlldr”命令中,我有 rows=1000 和 Direct=True,所以它为每加载 1000 条记录提交,我通过改变这个数字进行了测试,仍然得到相同的错误。

sqlldr arisdw/arisdwabc01@APPDEV24 control=Temp_Sadish.ctl direct=true rows=1000 data=C:/_dev/logs/sample/data/mydata1.csv;

【问题讨论】:

  • 您确定它实际上是每 1000 行提交一次吗?我认为它可能只是生成大量将立即加载的数据,同时网络出现故障(例如:超时)
  • 它总是在同一点失败吗?换句话说,如果您对相同的输入重复此操作,它会在记录 11457 处失败吗?
  • USAGE_DATA 中实际加载了多少行?
  • 通过使用直接路径加载,它正在加载一些 200k 记录,然后抛出上述异常.. 但我没有运行直接设置为 false 的加载,它工作正常但很慢.. 见我在答案下面的评论
  • 它并不总是在同一点..但大致在同一个文件附近..我认为文件有问题..因为它适用于常规负载

标签: python oracle oracle10g sql-loader ora-03114


【解决方案1】:

发布您的控制文件内容。您使用的是什么版本的 Oracle?

ORA-42338 错误是我要关注的错误。您是否在工作中进行任何类型的数据转换?调用函数或类似函数?

【讨论】:

  • 这是控制文件chopapp.com/#hma1v0zw。我正在使用 Oracle 数据库 10g 企业版版本 10.2.0.3.0 - 64bi .. 我现在正在运行相同的脚本,但这次直接模式设置为 false.. 并且它现在正在加载.. 但需要很长时间。我的问题类似于stackoverflow.com/questions/435114/… .. 但我猜帖子说这是在 oracle 10 中修复的
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多