Oracle SQL Loader 在加载超大日志文件时出错

0 投票
1 回答
3050 浏览
提问于 2025-04-17 03:12

我有一个Python脚本,它会遍历一个文件夹里的日志文件,并使用Oracle的sqlloader把这些日志文件加载到Oracle数据库中。这个脚本运行得很好,sqlloader也没问题。

但是,在加载了大约20万条记录后,加载就失败了,并出现了一个异常。

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

我不太确定为什么会这样。我检查了与表空间对应的数据文件,发现它的自动扩展设置为“真”。那还有什么其他原因呢?

在“sqlldr”命令中,我设置了每次加载1000条记录,并且Direct=True,这样每加载1000条记录就会提交一次。我尝试过调整这个数字,但还是出现同样的错误。

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

1 个回答

0

请把你的控制文件内容发上来。你用的是哪个版本的Oracle?

我建议你关注一下ORA-42338这个错误。你在工作中有没有进行数据转换?比如说调用函数之类的?

撰写回答