Мы разрабатываем большой проект с использованием Oracle 11g R2. Наша база данных состоит из более чем 170 таблиц с множеством разделов по ссылкам (функция Oracle 11).
Бывают случаи, что мы хотим портировать нашу базу данных в другую базу данных, поэтому мы создаем файл дампа с помощью data-pump, при экспорте данных все идет нормально, но мы не можем импортировать его в другую базу данных.
При импорте правильных таблиц импортируется нормально, но импортируются таблицы, не относящиеся к разделам по ссылкам.
При создании раздела по ссылочным таблицам внешний ключ (на котором основан раздел) должен быть создан в операторе create table
, но кажется, что насос данных создает все внешние ключи в конце скрипта.
Я не могу поверить, что люди Oracle забыли обновить data-pump в Oracle 11g. Кто-нибудь знает, как решить эту проблему?
Обновление 1. Мы используем следующие сценарии импорта и сценариев:
Экспорт:
declare
h1 NUMBER;
begin
h1 := dbms_datapump.open (operation => 'EXPORT', job_mode => 'SCHEMA', job_name => 'EXPORT000185', version => 'COMPATIBLE');
dbms_datapump.set_parallel(handle => h1, degree => 1);
dbms_datapump.add_file(handle => h1, filename => '910202.LOG', directory => 'DATA_PUMP_DIR', filetype => 3);
dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0);
dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''PAYESH_ACCOUNTING'',''PAYESH_CORE'',''PAYESH_CRM'',''PAYESH_LIFE'',''PAYESH_SECURITY'')');
dbms_datapump.add_file(handle => h1, filename => '910202_db4.DMP', directory => 'DATA_PUMP_DIR', filetype => 1);
dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);
dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');
dbms_datapump.set_parameter(handle => h1, name => 'ESTIMATE', value => 'BLOCKS');
dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);
dbms_datapump.detach(handle => h1);
end;
Импорт:
declare
h1 NUMBER;
begin
h1 := dbms_datapump.open (operation => 'IMPORT', job_mode => 'SCHEMA', job_name => 'IMPORT000189', version => 'COMPATIBLE');
dbms_datapump.set_parallel(handle => h1, degree => 1);
dbms_datapump.add_file(handle => h1, filename => '910228.LOG', directory => 'DATA_PUMP_DIR', filetype => 3);
dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0);
dbms_datapump.add_file(handle => h1, filename => '910128.DMP', directory => 'DATA_PUMP_DIR', filetype => 1);
dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''PAYESH_ACCOUNTING'',''PAYESH_CORE'',''PAYESH_CRM'',''PAYESH_LIFE'',''PAYESH_SECURITY'')');
dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);
dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');
dbms_datapump.set_parameter(handle => h1, name => 'SKIP_UNUSABLE_INDEXES', value => 0);
dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);
dbms_datapump.detach(handle => h1);
end;
Обновление 2: мы выяснили, что проблема существует только в разделах с внешними ключами, которые являются кросс-схемами.
Итак, вопрос уже существует, есть ли способ экспортировать/импортировать таблицы с межсхемным разделением по схемам вместе?