sqlldr 在第一次提交后损坏了我的主键
在我的 ctl 文件中第一次提交后,Sqlldr 正在损坏我的主键索引。 第一个之后,无论我在控制文件中将行值设置为什么,我都会得到:
ORA-39776: fatal Direct Path API error loading table PE_OWNER.CLINICAL_CODE
ORA-01502: index 'PE_OWNER.CODE_PK' or partition of such index is in unusable state
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
我正在使用 Oracle 数据库和客户端 11.1.0.6.0。
我知道问题不是由于重复的行造成的,因为如果我将 rows 指令设置为一个很大的值,则在 sqlldr 对整个文件进行一次提交后索引不会损坏。 这为我提供了一种解决方法,但仍然有点令人担忧......
感谢任何人都可以提供的任何指导。
Sqlldr is corrupting my primary key index after the first commit in my ctl file. After the first, no matter what I set the rows value to in my control file, I get:
ORA-39776: fatal Direct Path API error loading table PE_OWNER.CLINICAL_CODE
ORA-01502: index 'PE_OWNER.CODE_PK' or partition of such index is in unusable state
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
I'm using Oracle database and client 11.1.0.6.0.
I know the issue is not due to duplicate rows because if I set the rows directive to a huge value, the index is not corrupt after sqlldr does a single commit for the entire file. This provides me with a workaround, but it's still a little alarming...
Thanks for any guidance anyone can give.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我在生产表上很少使用 SQL*Loader,但根据我的阅读,您需要使用常规加载。
来自 SQL*Loader 文档
I don't use SQL*Loader much on production tables, but from what I've read, you need to use conventional load.
from the SQL*Loader documentation
我认为问题在于 Oracle 没有时间重建相关表上的索引,因此我将批量提交大小增加到大于我导入的记录数。
这解决了问题。
I believe the issue was that Oracle did not have time to rebuild the indices on the table in question, so I increased the batch commit size to a number larger than the number of records I was importing.
That fixed the issue.