sqlldr повреждает мой первичный ключ после первого коммита - PullRequest
0 голосов
/ 25 апреля 2009

Sqlldr повреждает мой индекс первичного ключа после первой фиксации в моем файле ctl. После первого, независимо от того, какое значение строки я установил в контрольном файле, я получаю:

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.

Я знаю, что проблема не в дублирующих строках, потому что, если я установлю директиву строк на большое значение, индекс не будет поврежден после того, как sqlldr сделает одну фиксацию для всего файла. Это дает мне обходной путь, но все еще немного настораживает ...

Спасибо за любое руководство, которое может дать каждый.

Ответы [ 2 ]

1 голос
/ 27 апреля 2009

Я не использую SQL * Loader в рабочих таблицах, но из того, что я прочитал, вам нужно использовать обычную загрузку.

из документации SQL * Loader

Когда использовать обычную загрузку пути

Если скорость загрузки наиболее важна для вы, вы должны использовать прямой путь загрузки потому что это быстрее, чем обычные путь нагрузки. Тем не менее, определенные ограничения на прямые пути нагрузки могут потребовать от вас использовать обычный путь нагрузки. Вы должны использовать обычный путь загрузки в следующих ситуациях:

* 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 должен иметь эксклюзивную запись доступ к столу и эксклюзив доступ для чтения / записи к любым индексам.

0 голосов
/ 07 июля 2009

Я полагаю, что проблема заключалась в том, что у Oracle не было времени для перестройки индексов в рассматриваемой таблице, поэтому я увеличил размер пакетной фиксации до числа, большего, чем количество импортируемых записей.

Это решило проблему.

...