Материал: Горбатов Аттестационные испытания автоматизированных систем от 2014

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

тающие с файлами data pump, должны обладать привилегиями read и write на этот каталог.

Создадим каталог «c:\tmp\dpexmpl» (хотя Oracle рекомендует, чтобы этот каталог был создан именно в папке «Oracle – в целях большей безопасности, так как пользователь, не обладающий правами администратора ОС, не сможет читать файлы в этом каталоге):

connect sys/sys as sysdba host rd c:\tmp\dpexmpl; host mkdir c:\tmp\dpexmpl; drop directory dpexmpl;

create directory dpexmpl as 'c:\tmp\dpexmpl'; grant read, write on directory dpexmpl to scott; host del c:\tmp\dpexmpl\scott.dmp

Прежде чем выполнять экспорт, удалили и заново создали и директорию OC («c:\tmp\dpexmpl»), и директорию Объект базы данных (dpexmpl), связав этот объект с директорией ОС (create directory dpexmpl as 'c:\tmp\dpexmpl';). В нашем примере эти имена совпадают, но это совпадение не обязательно. Далее «scott» получил нужные привилегии. Последней выполненной командой удаляем уже имеющийся дамп-файл «scott.dmp» (иначе будет получено сообщение «файл уже существует»). Проверим возможность выполнения экспорта:

connect scott/scott

host expdp userid=scott/scott@orcl schemas=scott dumpfile=scott.dmp job_name=scott_export directory= dpexmpl logfile=scott.log

По умолчанию при установке создается объект базы данных

«directory» с именем «DATA_PUMP_DIR»: conn sys/sys as sysdba

SELECT directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR';

Следующей командой удалим дамп-файл scott.dmp, оставшийся при предыдущем выполнении настоящей лабораторной работы в пути, указанном последней командой «SELECT», а потом, выдав scott привилегии на data_pump_dir, создадим заново дамп-файл: host del d:\oracle\product\10.2.0\admin\orcl\dpdump\scott.dmp

grant read, write on directory data_pump_dir to scott;

491

host expdp userid=scott/scott@orcl schemas=scott dumpfile= scott.dmp job_name=scott_export directory=data_pump_dir logfile= scott.log

Создадим в схеме «scott» таблицу «obj» доведем ее объем до величины в три с лишним миллиона записей с тем, чтобы процесс экспорта выполнялся за время, в течение которого мы могли бы посмотреть состояние выполняемой по экспорту работы, проиллюстировать остановку этой работы и повторный ее запуск:

connect sys/sys as sysdba

create table scott.obj as select * from all.objects; conn scott/scott

insert into obj select * from obj; insert into obj select * from obj; insert into obj select * from obj; insert into obj select * from obj; insert into obj select * from obj; insert into obj select * from obj; select count(*) from obj; commit;

Вотдельном окне SQL*Plus откроем вторую сессию пользователя «scott», из которой будем давать команду присоединения к выпоняемой по экспорту работе

connect scott/scott

Из окна SQL*Plus первой сессии выполним

host expdp userid=scott/scott@orcl schemas=scott dumpfile= scott.dmp job_name=scott_export directory= dpexmpl logfile=scott.log

После чего перейдем в окно SQL*Plus второй сессии пользователя «scott» и выполним команду

Host expdp scott/scott attach=scott_export

которая позволит пользователю «scott» во второй сессии подсоединиться к выполняемой работе по экспорту и увидеть характеристики выполнения этой работы, появление которых завершается выводом приглашения «export>». Вслед за тем остановим работу экспорта

Stop_job

Вокне первой сессии SQL*Plus мы увидим сообщение о том, что экспорт остановлен по запросу пользователя. Теперь есть возможность добавить, используя команду «add_file» в выполняемое и

492

остановленное задание другие файлы дампа из других каталогов, после чего продолжить выполнение задания. Для продолжения экспорта в окне второй сессии выполним еще раз команду

Host expdp scott/scott attach=scott_export

а вслед за тем

Start_job Status

Последняя команда показывает процент выполнения экспорта. Data pump позволяет выполнять экспорт с использованием оп-

ций «exclude», «include», «query». Выполним экспорт из схемы

«scott» всех таблиц, за исключением таблицы «obj»

Connect scott/scott

host del C:\tmp\dpexmpl\scott.dmp

host expdp userid=scott/scott@orcl schemas=scott dumpfile=scott.dmp job_name=scott_export directory= dpexmpl exclude=table:"IN('OBJ')" logfile=scott.log

По протоколу экспорта и по размеру дамп-файла видно, что таблица «obj» действительно не экспортировалась.

Выполним экспорт с опцией «include»:

Connect scott/scott

host del C:\tmp\dpexmpl\scott.dmp

host expdp userid=scott/scott@orcl schemas=scott dumpfile= scott.dmp job_name=scott_export directory=dpexmpl include=table: "IN('EMP')" logfile=scott.log

По протоколу экспорта видно, что экспортировалась только таблица «emp».

Выполним экспорт с опцией «query»:

Connect scott/scott

host del C:\tmp\dpexmpl\scott.dmp

host expdp userid=scott/scott@orcl schemas=scott dumpfile=scott.dmp job_name=scott_export directory= dpexmpl include=table:"IN('EMP')" query=scott.emp:" 'WHERE DEPTNO>10'" logfile=scott.log

По этой команде будет выгружено 11 строк таблицы «emp». При экспорте мы можем экспортировать только метаданные,

без самих данных. Для этого выполним: connect scott/scott

493

host expdp userid=scott/scott@orcl schemas=scott dumpfile=metadatascott.dmp job_name=scott_export directory= dpexmpl content=metadata_only logfile=metadatascott.log

Для импорта файла, созданного с помощью expdp, следует пользоваться утилитой impdp. Файлы выгрузки утилит «exp» и «expdp» не совместимы, т.е. утилитой «imp» не импортируются файлы выгрузки утилиты «expdp» и, наоборот, утилитой «impdp» не импортируются файлы выгрузки утилиты «exp».

Как уже говорилось выше, команда «impdp help=y» в окне dos выведет все опции этой утилиты.

Создадим файл параметров hrfromscott.par для импорта данных из схемы «scott» в схему «hr»:

Directory= dpexmpl Dumpfile=scott.dmp Remap_schema=scott:hr

Импорт будем выполнять из окна dos командой

impdp system/system parfile=c:\tmp\dpexmpl\hrfromscott.par

Импорт будет выполнен с ошибкой «не найдены родительские ключи», так как таблицу «dept» с родительскими ключами мы не экспортировали в последнем примере экспорта (с условием «where»). Несмотря на ошибку импорт в схему «hr» состоялся. В схеме «hr» создана таблица «emp» и в нее вставлено 14 строк. Выполним экспорт части таблиц «emp», «dept» из схемы «scott»

Connect scott/scott

host del c:\tmp\dpexmpl\scott.dmp

host expdp userid=scott/scott@orcl schemas=scott dumpfile=scott.dmp job_name=scott_export directory=dpexmpl INCLUDE= TABLE:\"IN ('DEPT','EMP')\" query=" 'WHERE DEPTNO>10'" logfile=scott.log

А теперь повторим импорт в схему «hr». Выполним пользователем «hr» команды:

Connect hr/hr Drop table hr.emp; Drop table hr.dept;

Drop public synonym dept;

Затем из окна dos повторим

impdp system/system parfile=c:\tmp\dpexmpl\hrfromscott.par

494

На этот раз импорт закончится благополучно, может быть, только с одной ошибкой «ORA-02298: невозможно подтвердить (HR.EMP_SELF_KEY) ‒ не найдены родительские ключи».

SQL, который может вызвать сбой: ALTER TABLE "HR"."EMP" ADD CONSTRAINT "EMP_SELF_KEY" FOREIGN KEY ("MGR") REFERENCES "HR"."EMP” (“EMPNO")». Сообще-

ние об ошибке вызвано тем, что мы импортировали строки служащих из 20-го и 30-го отделов, но начальники этих отделов имеют своим начальником личность «king», который приписан к 10-му отделу, строки служащих которого не экспортировались. При импорте невозможно стало реализовать FOREIGN KEY от столбца «MGR» на столбец «EMPNO», так как значения первичного ключа для служащего «king» не существует.

Выполненный нами пример импорта свидетельствует о том, что при операциях экспорта и последующего импорта следует быть очень внимательным, чтобы не нарушить согласованность дан-

ных.

Для импорта, так же как и для экспорта, применимы опции

«include», «exclude», «query».

Так же, как и для экспорта, можно останавливать выполняемую работу по импорту, а потом продолжать ее вновь («stop_job», «start_job»). При импорте мы пользовались файлом параметров. Точно так же файл параметров может быть использован для экспорта. И, наоборот, при импорте его парметры мы можем задавать в командной строке, как мы это делали при экспорте.

Импорт может быть выполнен с опцией «sqlfile», которая позволяет сформировать DDL предложения SQL – только по созданию объектов. Выше мы сделали экспорт только метаданных пользователя «scott» в файл «metadatascott.dmp». Создадим в папке, соответствующей директории «dpexmpl» файл параметров

«metadatascott.par» с таким содержимым

Directory= dpexmpl Dumpfile=metadatascott.dmp Sqlfile=scottsql.txt

Далее выполним

Connect scott/scott

host impdp scott/scott parfile= C:\tmp\dpexmpl\metadatascott.par

495

Смотрите также:

1872
Анализ системы автоматического управления стабилизации напряжения генератора
Вольтер. Слепые судьи, рассуждающие о цвете предметов
ИздательствоЮжно-Уральский государственный аграрный университетISBNГод2006Страниц19Уровень образованияБакалавриат. Сельскохозяйственные рынки
Изучение «электротехнических» причин пожаров при расследовании и экспертизе. методические указания к выполнению лабораторных работ по дисциплине «Расследование и экспертиза пожаров». Скляров К.А., Сушко Е.А
Культурная среда города как фактор повышения инвестиционной привлекательности территории
Малый бизнес
Метрики и методы преобразования чертежа. методические указания для студентов направления Строительство. Иващенко Е.И
Особенности лексико-грамматической стороны речи у детей дошкольного возраста с ОНР
питание-у-пациентов-на-программном-гемодиализе»