Oracle SQL Loader 在加载超大日志文件时出错
我有一个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这个错误。你在工作中有没有进行数据转换?比如说调用函数之类的?