2009-04-25 11 views
0

在我的ctl文件中第一次提交之後,Sqlldr正在破壞我的主鍵索引。第一後,不管我在我的控制文件中的行值設置爲,我得到: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爲整個文件執行一次提交後,索引不會損壞。這給了我一個解決方法,但它仍然有點令人擔憂...

感謝任何人可以給任何指導。

回答

0

我認爲問題在於Oracle沒有時間重建相關表上的索引,因此我將批量提交大小增加到了大於導入記錄數的數字。

解決了這個問題。

1

我不會在生產表上使用SQL * Loader,但從我讀過的內容中,您需要使用常規的加載。

SQL*Loader documentation

時候如果加載速度是最重要的 您使用常規路徑加載

,你應該使用直接路徑負載

,因爲它比傳統的 快路徑負載。但是,某些 對直接路徑負載的限制可能會要求您使用常規路徑 加載。你應該在下列情況下使用常規 路徑負載:

* When accessing an indexed table concurrently with the load, or when 
    applying inserts or updates to a nonindexed table concurrently with the 
    load 

要使用直接路徑加載(與並行負載除外), SQL * Loader的必須獨佔寫 訪問表和排他性對任何索引的讀取/寫入訪問。

相關問題