【发布时间】: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