Назад | Перейти на главную страницу

Ошибка экспорта Oracle: EXP-00006: внутренняя ошибка несогласованности

Мой звонок в Oracle exp терпит неудачу:

EXP-00006: internal inconsistency error
EXP-00000: Export terminated unsuccessfully

Я выполняю команду

C:\oracle\product\11.1.0\db_1\BIN\exp user/pass@instance file=dump.dmp log=log.log compress=y owner=user

Таблица, в которой произошел сбой, содержит

Первичный ключ также является внешним ключом для другой таблицы.

Во всех результатах поиска указано, что мне следует связаться с Oracle, но нет ли другого решения этой проблемы? Может быть, перестройка стола?

запустить: проанализировать таблицу, проверить каскад структуры;

Посмотрите, не выдает ли он ошибку, что что-то не так. Если это поврежденный индекс, удалите и создайте заново, если это что-то еще, попытайтесь восстановить таблицу, если вы можете / знаете, как. Получите поддержку Oracle, чтобы помочь, если вам нужно.

Если у вас есть поддержка Oracle, сообщите им. Это может быть внутренняя проблема с самим экспортом, и они запросят дополнительную информацию, скажут вам, что попробовать, и так далее, пока вы не решите проблему. Вы, вероятно, также получите патч / исправление, если оно есть.

Я бы предложил вместо этого выполнить экспорт с помощью datapump, поскольку экспорт давно не рекомендуется. Вам нужно определить каталог, в который oracle должен помещать экспортированные данные, а затем запустить datapump. Это проще, быстрее, надежнее и гибче, чем импорт / экспорт.

Пример:

SQL> CREATE OR REPLACE DIRECTORY expdump AS '/export/home/oracle/expdump';

SQL> GRANT READ, WRITE ON DIRECTORY expdump TO user_who_will_export;

Затем запустите:

$ expdp user/pass schemas=schema1,schema2 directory=expdump dumpfile=myexport.dmp logfile=myexport.log

Дополнение: похоже, у вас проблемы с согласованностью БД. Выполните логическую и физическую проверку с помощью RMAN, чтобы выявить любые другие проблемы:

RMAN> connect target /

RMAN> run {
# set disk to be default device type
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
# number of concurrent sessions to spawn (if you can affor parallelism)
CONFIGURE DEVICE TYPE DISK PARALLELISM 10 BACKUP TYPE TO BACKUPSET;
# check datafiles for corruption 10 datafiles in each session (if you can afford paralellism)
BACKUP VALIDATE CHECK LOGICAL DATABASE FILESPERSET=10;
}

Код общий, этот фрагмент заимствован из http://oraclespin.wordpress.com/2008/06/11/how-to-check-physical-and-logical-data-corruption-using-rman/

Я исправил эту проблему, определив, в какой таблице возникла проблема. Затем я скопировал эту таблицу в новую:

create table X as Select * from Y

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