В таблице «scottsql.txt» сформированы DDL скрипты, которые можно корректировать так, как это требуется разработчику или администратору базы данных.
Отличительной особенностью «data pump» по сравнению с «exp», «imp», как уже указывалось, является возможность использования API, что позволяет разработчику встраивать в разрабатываемые приложения действия по экспорту и импорту информации базы данных. Приведем пример анонимного блока экспорта схемы
«scott» с использованием PL/SQL API (http://www.f-notes.info/oracle:oracledatapump10g).
Выполним
Connect scott/scott
host del c:\tmp\dpexmpl\scott.dmp DECLARE
l_dp_handle NUMBER;
l_last_job_state VARCHAR2(30) := 'UNDEFINED'; l_job_state VARCHAR2(30) := 'UNDEFINED'; l_sts KU$_STATUS;
BEGIN
l_dp_handle := DBMS_DATAPUMP.open( operation => 'EXPORT',
job_mode => 'SCHEMA', remote_link => NULL, job_name => 'SCOTT_EXPORT', version => 'LATEST'); DBMS_DATAPUMP.add_file( handle => l_dp_handle, filename => 'SCOTT.dmp', directory => 'DPEXMPL'); DBMS_DATAPUMP.add_file( handle => l_dp_handle, filename => 'SCOTT.log', directory => 'DPEXMPL',
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE); DBMS_DATAPUMP.metadata_filter(
handle => l_dp_handle, name => 'SCHEMA_EXPR', value => '= ''SCOTT''');
496
DBMS_DATAPUMP.start_job(l_dp_handle);
DBMS_DATAPUMP.detach(l_dp_handle); END;
/
Этим скриптом запущена работа по экспорту. Через пару минут в папке «C:\tmp\dpexmpl» в файле scott.log можно будет увидеть протокол завершившегося экспорта.
Приведем еще один пример использования data pump – для работы с внешними таблицами (http://www.f- notes.info/oracle:oracledatapump10g). С помощью «data pump» дан-
ные переносятся из таблиц базы данных во внешние таблицы, а утилиты «sql*loader» ‒ из «плоских» файлов во внешние таблицы.
Создадим (http://www.f-notes.info/oracle:oracledatapump10g)
внешнюю таблицу с помощью «data pump» (в этом случае данные из таблицы базы данных перемещаются во внешние таблицы)
Drop table emp_xt;
Host del C:\tmp\dpexmpl\scott.dmp CREATE TABLE emp_xt ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY dpexmpl LOCATION ('scott.dmp')
)
AS SELECT substr(to_char(empno),1,4) empno,ename,job, Substr(to_char(deptno),1,2) deptno FROM emp;
SELECT * FROM emp_xt;
Создадим внешнюю таблицу с помощью утилиты «sql*loader» (в этом случае данные из «плоского» файла перемещаются во внешние таблицы). Сначала создаем «плоский» файл:
Connect scott/scott
spool C:\tmp\dpexmpl\empplain.txt select empno||rpad(ename,10,' ')|| rpad(job,9,' ')||deptno
from scott.emp; spool off
497
В «плоском» файле «C:\tmp\dpexmpl\empplain.txt» удалим текст запроса, подсказку sql*plus и оставим только строки таблицы
«emp». Далее:
DROP TABLE emp_external;
create table emp_external (empno char(4), ename char(10), job char(9), deptno char(2)) organization external
(type oracle_loader default directory dpexmpl access parameters
(RECORDS DELIMITED BY NEWLINE LOGFILE 'BOXES.log'
fields
(empno position(1:4), Ename position(5:14), Job position(15:23), deptno position(24:25))) location ('empplain.txt'));
SELECT * FROM emp_external;
Сдача лабораторной работы
Сдача лабораторной работы заключается в выполнении заданий преподавателя по выгрузке (разного типа) данных из одной схемы
вдругую.
1.Пример задания студенту по работе с утилитами «exp», «imp»: из схемы «v19» выгрузить данные из нескольких (по выбору студента) таблиц с использованием файла параметров и без него, с трассировкой и просмотром результатов трассировки утилитой «tkprof», с обеспечением контроля протекания процесса экспорта (feedback), с использованием условия выгрузки «where» и загрузить данные в схему «v3».
2.Пример задания студенту по работе с утилитами «expdp», «impdp»: из схемы «v19» выгрузить данные из нескольких (по выбору студента) таблиц (конечно, с предварительным созданием директории – объекта файловой системы ОС и директории – объекта
498
базы данных) с использованием файла параметров и без него, с использованием опций «exclude», «include», «query», с демонстрацией процесса остановки процесса экспорта и последующего его продолжения, с демострацией использования PL/SQL API для получения файла выгрузки.
3.Продемонстрировать загрузку данных из схемы «v19» в схему «v3» с использованием утилиты «impdp».
4.Продемонстрировать формирование внешней таблицы в схеме «v3» и выгрузку в нее данных из таблицы (по выбору студента) базы данных.
5.Продемонстрировать формирование другой внешней таблицы в схеме «v3» и загрузку в нее данных из «плоского» файла ОС, сформированного данными таблицы (по выбору студента) в базе данных.
Тестовые задания к работе 20
Входной контроль
1.Какие возможности реализуются при полном экспортировании базы данных утилитой exp?
a)если имеется таблица со сбойным блоком, этот блок будет найден;
b)выполняется проверка словаря данных и выявление в нем логической несогласованности;
c)утилита exp находит блоки, требующие очистки;
d)утилита exp создает файл, содержащий все операторы DDL, текст представлений, программных объектов;
e)правильных ответов нет.
2.Что позволяет совместное использование утилит exp и
imp?
a)перенос табличных пространств;
b)пересоздание экземпляра с целью изменения, например, размера блока данных;
c)выполнение дефрагментации табличных пространств;
d)копирование данных с одной платформы на другую;
e)правильных ответов нет.
3.Утилиты exp/imp не рекомендуется использовать, как основное средство резервного копирования. Среди нижеприве-
499
денных укажите строки, указывающие на причину отсутствия такой рекомендации:
a)невозможно встраивать в приложения (нет API);
b)длительное время выполнения восстановления утилитой imp из-за необходимости выполнения SQL операторов заполнения таблиц;
c)инкрементное экспортирование/импортирование в дальнейших версиях СУБД не будет поддерживаться Oracle;
d)копирование данных с помощью названных утилит возможно только для определенной кодировки информации в базе данных;
e)правильных ответов нет.
4.Среди нижеприведенных укажите строки, верно характеризующие утилиты expdp, impdp.
a)большинство параметров аналогичны параметрам утилит exp/imp;
b)формат dmp файлов утилит expdp, impdp не совместим с форматом dmp файлов утилит exp, imp;
c)утилиты expdp, impdp имеют графический интерфейс;
d)формат dmp файлов утилит expdp, impdp совместим для всех версий, начиная с версии СУБД Oracle 10.1;
e)павильных ответов нет.
5.В ходе выполнения экспорта утилитой expdp есть возможность выполнять, используя встроенные в нее возможности этой утилиты, следующие действия:
a)действия по мониторингу состояния выполняемой по экспорту работы;
b)действия по остановке этой работы;
c)действия по возобновлению этой работы при выполнении заданного условия;
d)действия по повторному запуску этой работы;
e)правильных ответов нет.
6.Для использования утилиты expdp необходимо создание объектов-директорий в базе данных и соответствующих директорий в операционной системе. Какие привилегии должен иметь пользователь Oracle для работы с expdp?
a)пользователь Oracle должен иметь привилегии на соответствующие объект-директории в БД;
500