powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
14 сообщений из 14, страница 1 из 1
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171691
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ora 9.2, Win2000

Имеем три таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
create table t1 (n number primary key);
create table t2 (s varchar2( 20 ) primary key);
create table t3(n number references t1(n), s varchar2( 20 ) references t2(s));
insert into t1 values( 1 );
insert into t2 values('a');
insert into t3 values( 1 ,'a');
commit;

Выгружаем их в файл:
Код: plaintext
exp usr/pwd@link file=data.dmp tables=(t1,t2,t3);

Очищаем таблицы:
Код: plaintext
1.
2.
3.
delete from t3;
delete from t2;
delete from t1;
commit;

Загружаем данные:
Код: plaintext
imp usr/pwd@link ignore=y file=data.dmp tables=(t1,t2,t3);

Получаем следующий порядок загрузки таблиц: t3, t1, t2 при любом порядке их перечисления в tables(...). Соответственно, выскакивает ошибка нарушения внешнего ключа:
Код: plaintext
ORA- 02291 : integrity constraint (USR.SYS_C003008) violated - parent key not found

Можно ли это победить?
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171700
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обманул, прошу прощения!
Из командной строки всё работает правильно; ошибка появляется, если использовать файл параметров:
Код: plaintext
1.
2.
E:\Load>type data.par
file=data.dmp
tables=(t1,t2,t3)

И соответственно, вызов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
E:\Load>imp ignore=y parfile=data.par

Export file created by EXPORT:V09. 02 . 00  via conventional path
import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
. importing USR's objects into USR
. . importing table                            "T3" 
IMP- 00019 : row rejected due to ORACLE error  2291 
IMP- 00003 : ORACLE error  2291  encountered
ORA- 02291 : integrity constraint (USR.SYS_C003156) violated - parent key not found
Column  1   1 
Column  2  a           0  rows imported
. . importing table                            "T1"            5  rows imported
. . importing table                            "T2"            1  rows imported
Import terminated successfully with warnings.
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171709
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После N-цатого удаления/создания таблиц все заработало корректно.
Всем спасибо!
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171735
Fedorchenko Aleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще-то странно как-то... Oracle при импорте констейнты накладывает лишь после создания всех таблиц и заполнения их данными - в последнюю очередь, а по твоим дампам так наоборот - создал таблицу и тут же констрейнт. Глюк темной воды.
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171756
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю это не глюк. Первый раз таблиц не было - прошло, второй раз - ошибка полезла потому-что таблицы с ограничениями уже были в БД.

Скорее всего так.
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171765
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы создавались до начала .
Вариант с командной строкой я попробовал после появления ошибок с файлом параметров, а потом начал удалять/создавать таблицы.
Фокус в том, что я теперь не могу воссоздать ситуацию.
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171788
Fedorchenko Aleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndrewS
Таблицы создавались до начала .

softbuilder@inbox.ru
Я думаю это не глюк. Первый раз таблиц не было - прошло, второй раз - ошибка полезла потому-что таблицы с ограничениями уже были в БД.

Скорее всего так.


Я о таком варианте и не думал :)
AndrewS подтвердил твои предположения.

Тогда надо следовать доке:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Importing into Existing Tables
This section describes factors to take into account when you import data into existing tables. 

Manually Creating Tables Before Importing Data
When you choose to create tables manually before importing data into them from an export file, you should use either the same table definition previously used or a compatible format. For example, although you can increase the width of columns and change their order, you cannot do the following: 

Add NOT NULL columns 

Change the datatype of a column to an incompatible datatype (LONG to NUMBER, for example) 

Change the definition of object types used in a table 

Change DEFAULT column values 

Disabling Referential Constraints
In the normal import order, referential constraints are imported only after all tables are imported. This sequence prevents errors that could occur if a referential integrity constraint existed for data that has not yet been imported. 

These errors can still occur when data is loaded into existing tables. For example, if table emp has a referential integrity constraint on the mgr column that verifies that the manager number exists in emp, a perfectly legitimate employee row might fail the referential integrity constraint if the manager's row has not yet been imported. 

When such an error occurs, Import generates an error message, bypasses the failed row, and continues importing other rows in the table. You can disable constraints manually to avoid this. 

Referential constraints between tables can also cause problems. For example, if the emp table appears before the dept table in the export file, but a referential check exists from the emp table into the dept table, some of the rows from the emp table may not be imported due to a referential constraint violation. 

To prevent errors like these, you should disable referential integrity constraints when importing data into existing tables. 

Manually Ordering the Import
When the constraints are reenabled after importing, the entire table is checked, which may take a long time for a large table. If the time required for that check is too long, it may be beneficial to order the import manually. 

To do so, perform several imports from an export file instead of one. First, import tables that are the targets of referential checks. Then, import the tables that reference them. This option works if tables do not reference each other in a circular fashion, and if a table does not reference itself.


Итого имеется 2 варианта:
1. отключаем все констрейнты перед загрузкой, а imp делаем с автоматическим включением констрейнтов
2. загружаем таблицы в нессколько сессий в порядке их ссылочной целостности - сначала базовые, потом те, что на них ссылаются

Первый вариант проще :)
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171827
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то в оракловой эхе были громкие разборки по поводу порядка экспрота/импорта таблиц. Я бы посоветовал попробовать еще 2 варианта:

1. Указать требуемый порядок таблиц при ЭКСПОРТЕ. Тогда, ИМПОРТ вроде как будет производится именно в порядке при экспорте, не обращая внимания на указанный порядок в параметрах импорта.
2. Не указывать список таблиц при экспорте, если это возможно. И посмотреть, в каком порядке производится импорт при указании в нем списка таблиц.

Для чистоты эксперимента лучше перед каждой попыткой удалять таблицы.
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32171845
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Denis Popov
Указать требуемый порядок таблиц при ЭКСПОРТЕ. Тогда, ИМПОРТ вроде как будет производится именно в порядке при экспорте, не обращая внимания на указанный порядок в параметрах импорта

Именно сдесь собака и порылась. Спасибо.
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32172464
Фотография Gooddy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fedorchenko Aleksey прав. Самый простой вариант отключить все ограничения, загрузить данные в таблицы (проядок ен важен) затем их включить.
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32179797
kalambur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовал:

create table t1 (n number primary key);
create table t2 (s varchar2(20) primary key);
create table t3(n number references t1(n), s varchar2(20) references t2(s));
insert into t1 values(1);
insert into t2 values('a');
insert into t3 values(1,'a');
commit;

exp u/qwe@sd file=data.dmp tables=(t1,t2,t3);

выдаёт ошибку
EXP-00011 U.; Does not exist

в чём может быть дело ?
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32179810
AndrewS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
EXP- 00011  string.string does not exist
Cause: Export could not find the specified table.
Action: Retry with the correct table name.

Возможно, таблицы созданы не в схеме U.
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32179858
kalambur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
именно в ней они и созданны, здесь что-то другое и я никак не пойму в что :(
...
Рейтинг: 0 / 0
EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
    #32180055
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 kalambur: ... возможно наличием скрипта по имени exp в текущем каталоге (или путях), который сам знает как ему подключаться.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / EXP/IMP: порядок таблиц в параметре TABLES=(..,..)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]