Документ создан: 11.02.2010

Oracle Data Pump в Oracle Database 10g

Перевод

Oracle Data Pump - новая, более быстрая и гибкая альтернатива утилитам "exp" и "imp", использовавшимся в предыдущих версиях Oracle. В дополнение к основным функциям импорта и экспорта, Data Pump предоставляет PL/SQL API и поддержку внешних таблиц.

Начало

Чтобы получить возможность работы с примерами, необходимо, для начала, разблокировать учётную запись SCOTT и создать объект-директорию, с которым нам предстоит работать:


CONN sys/password@db10g AS SYSDBA
ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK;
GRANT CREATE ANY DIRECTORY TO scott;
CREATE OR REPLACE DIRECTORY test_dir AS '/u01/app/oracle/oradata/';
GRANT READ, WRITE ON DIRECTORY test_dir TO scott;

Экспорт/импорт таблиц

Параметр "TABLES" используется для указания таблицы или таблиц, которые должны быть экспортированы. В следующем примере показан синтаксис экспорта и импорта таблиц:

expdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log
impdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log

Добавление параметра "TABLE_EXISTS_ACTION=APPEND" позволяет импортировать данные путём добавления в уже существующие таблицы.


Экспорт/импорт схем

Параеметр "OWNER", имевший место быть в exp, заменён на параметр "SCHEMAS", который используется для указания экспортируемой схемы. В следующем примере приведён синтаксис экспорта/импорта схемы:

expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log
impdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=impdpSCOTT.log


Экспорт/импорт баз данных

Параметр "FULL" указывает, что требуется экспортировать базу данных полностью. Следующий пример демонстрирует синтаксис экспорта и импорта:

expdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log
impdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=impdpDB10G.log


Дополнительная информация

В отличии от утилит exp и imp, все файлы Data Pump: и ".dmp", и ".log", - создаются на Oracle-сервере, а не на клиентском компьютере.

Все действия Data Pump выполняются множественными задачами (jobs) (server processes not DBMS_JOB jobs). Эти задачи управляются главным управляюшим процессом, который использует расширенную очередь (Advanced Queuing). Во время выполнения, создаётся и используется главным управляющим процессом таблица очереди, которая называется по имени задания. Таблица удаляется после успешного выполнения задания Data Pump. Задание и очередь могут быть названы на Ваше усмотрение с использованием параметра "JOB_NAME". Остановка клиентского процесса не останавливает связанное с ним Data Pump задание. Передача клиенту комбинации клавиш "Ctrl+C" во время выполнения задания остановит вывод на стандартное устройство вывода и переведёт в командную строку. Ввод "status" в этой командной строке позволить проследить за состоянием текущего задания:

Export> status
Job: SYS_EXPORT_FULL_01
  Operation: EXPORT
  Mode: FULL
  State: EXECUTING
  Bytes Processed: 0
  Current Parallelism: 1
  Job Error Count: 0
  Dump File: D:TEMPDB10G.DMP
    bytes written: 4,096
Worker 1 Status:
  State: EXECUTING
  Object Schema: SYSMAN
  Object Name: MGMT_CONTAINER_CRED_ARRAY
  Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC
  Completed Objects: 261
  Total Objects: 261

Производительность Data Pump может быть улучшена использованием параметра "PARALLEL". Этот параметр следует использовать совместно с шаблоном "%U" в параметре "DUMPFILE" для разрешения создания или чтения множественных dump-файлов:

expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR parallel=4 dumpfile=SCOTT_%U.dmp logfile=expdpSCOTT.log

Вьюшка (view) "DBA_DATAPUMP_JOBS" может быть использована для контроля состояния задания:

system@db10g> select * from dba_datapump_jobs;
OWNER_NAME                     JOB_NAME                       OPERATION
------------------------------ ------------------------------ ------------------------------
JOB_MODE                       STATE                              DEGREE ATTACHED_SESSIONS
------------------------------ ------------------------------ ---------- -----------------
SYSTEM                         SYS_EXPORT_FULL_01             EXPORT
FULL                           EXECUTING                               1                 1

Параметры "INCLUDE" и "EXCLUDE" могут быть использованы для ограничения импорта/экспорта указанных объектов. Когда используется параметр "INCLUDE", в экспорт будут включены только указанные объекты:

expdp scott/tiger@db10g schemas=SCOTT include=TABLE:"IN ('EMP', 'DEPT')" directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

При использовании параметра "EXCLUDE", все объекты, кроме указанных в параметре, будут включены в экспорт:

expdp scott/tiger@db10g schemas=SCOTT exclude=TABLE:"= 'BONUS'" directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

Кроме всего прочего, нужно учитывать особенности реализации среды. Например, в bash строка может выглядеть так:

expdp scott/tiger@db10g schemas=SCOTT exclude=TABLE:\"like \'USER%\'\" directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

Data Pump API

Вместе с утилитами Data Pump, Oracle предоставляет PL/SQL API. Следующий пример показывает, как API может быть использован для выполнения экспорта:

SET SERVEROUTPUT ON SIZE 1000000
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    => 'EMP_EXPORT',
    version     => 'LATEST');
  DBMS_DATAPUMP.add_file(
    handle    => l_dp_handle,
    filename  => 'SCOTT.dmp',
    directory => 'TEST_DIR');
  DBMS_DATAPUMP.add_file(
    handle    => l_dp_handle,
    filename  => 'SCOTT.log',
    directory => 'TEST_DIR',
    filetype  => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);
  DBMS_DATAPUMP.metadata_filter(
    handle => l_dp_handle,
    name   => 'SCHEMA_EXPR',
    value  => '= ''SCOTT''');
  DBMS_DATAPUMP.start_job(l_dp_handle);
  DBMS_DATAPUMP.detach(l_dp_handle);
END;
/

Как только задание запущено, его статус можно проверить используя следующий запрос:

system@db10g> select * from dba_datapump_jobs;

Внешние таблицы

У Oracle появилась поддержка технологий Data Pump, с помощью которых можно преносить данные во внешние таблицы. Драйвер доступа ORACLE_DATAPUMP может быть использован для выгрузки данных в экспорт-файл и последующей перезагрузке их. Выгрузка данных происходит, когда внешняя таблица создана с использованием кляузы "AS":

CREATE TABLE emp_xt
  ORGANIZATION EXTERNAL
   (
     TYPE ORACLE_DATAPUMP
     DEFAULT DIRECTORY test_dir
     LOCATION ('emp_xt.dmp')
   )
   AS SELECT * FROM emp;

Затем данные могут быть запрошены так:

SELECT * FROM emp_xt;

Синтаксис создания указателя на внешнюю таблицу в существующем файле аналогичен, но без кляузы "AS":

DROP TABLE emp_xt;
CREATE TABLE emp_xt (
  EMPNO     NUMBER(4),
  ENAME     VARCHAR2(10),
  JOB       VARCHAR2(9),
  MGR       NUMBER(4),
  HIREDATE  DATE,
  SAL       NUMBER(7,2),
  COMM      NUMBER(7,2),
  DEPTNO    NUMBER(2))
  ORGANIZATION EXTERNAL (
     TYPE ORACLE_DATAPUMP
     DEFAULT DIRECTORY test_dir
     LOCATION ('emp_xt.dmp')
  );
SELECT * FROM emp_xt;

Help

Опция "HELP=Y" заставит отобразить описание всех доступных параметров:

expdp help=y
  Export: Release 10.2.0.3.0 - 64bit Production on Среда, 20 Февраль, 2008 13:54:56

  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  Утилита экспорта насоса данных предоставляет механизм для передачи объектов данных
  между базами данных Oracle. Эта утилита вызывается следующей командой:

     Пример: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

  Управление выполнением экспорта может осуществляться вводом команды 'expdp' с заданием после нее
  различных параметров. Для задания параметров служат ключевые слова:

     Формат:  expdp КЛЮЧЕВОЕ СЛОВО=значение или КЛЮЧЕВОЕ СЛОВО=(значение1,значение2,...,значениеN)
     Пример: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
                 или TABLES=(T1:P1,T1:P2), если T1 является секционированной таблицей

  USERID должно быть первым параметром в командной строке.

  Ключевое слово        Описание (Знач. по умолчанию)
  ------------------------------------------------------------------------------
  ATTACH                Служит для присоединения к существующему заданию, например, ATTACH [=имя задания].
  COMPRESSION           Уменьшение размера содержимого файла дампа, если допустимо
                        значения ключевого слова: (METADATA_ONLY) и NONE.
  CONTENT               Служит для задания данных для выгрузки. Разрешаются ключевые слова:
                        (ALL), DATA_ONLY и METADATA_ONLY.
  DIRECTORY             Объект 'каталог' для файлов дампов и файлов журналов.
  DUMPFILE              Список результирующих файлов дампов (expdat.dmp),
                        например, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
  ENCRYPTION_PASSWORD   Ключ пароля для создания столбца зашифрованных данных.
  ESTIMATE              Служит для вычисления оценочных данных заданий. Допускаются следующие ключевые слова:
                        (BLOCKS) и STATISTICS.
  ESTIMATE_ONLY         Служит для вычисления оценочных данных заданий без выполнения экспорта.
  EXCLUDE               Служит для исключения определенных типов объектов, например, EXCLUDE=TABLE:EMP.
  FILESIZE              Служит для задания размера каждого файла дампа в байтах.
  FLASHBACK_SCN        SCN, используемый для установки мгновенного снимка сеанса назад.
  FLASHBACK_TIME        Время, используемое на получение SCN, ближайшее к заданному времени.
  FULL                  Служит для экспорта всей базы данных (N).
  HELP                  Служит для отображения сообщений Справки (N).
  INCLUDE               Служит для включения определенных типов объектов, например, INCLUDE=TABLE_DATA.
  JOB_NAME              Имя создаваемого задания экспорта.
  LOGFILE               Имя файла журнала (export.log).
  NETWORK_LINK          Имя канала связи удаленной базы данных с исходной системой.
  NOLOGFILE             Не записывать файл журнала (N).
  PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
  PARFILE               Служит для задания файла параметров.
  QUERY                 Фраза предиката, используемая для экспорта подмножества таблицы.
  SAMPLE                Процент данных для экспорта;
  SCHEMAS               Служит для перечисления схем экспорта (схема при регистрации).
  STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                        значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
  TABLES                Служит для указания списка таблиц для экспорта - только для одной схемы.
  TABLESPACES           Служит для указания списка табличных пространств для экспорта.
  TRANSPORT_FULL_CHECK  Служит для проверки сегментов хранения для всех таблиц (N).
  TRANSPORT_TABLESPACES Список табличных пространств, из которых будут выгружены метаданные.
  VERSION               Версия объектов для экспорта. Могут использоваться следующие ключевые слова:
                        (COMPATIBLE), LATEST или любой действительный номер версии базы данных.

  Следующие команды могут использоваться в интерактивном режиме.
  Примечание. Допускается использование сокращений

  Команда               Описание
  ------------------------------------------------------------------------------
  ADD_FILE              Служит для добавления файла дампа в набор файлов дампов.
  CONTINUE_CLIENT       Служит для возврата в режим протоколирования. В случае простоя задание будет запущено заново.
  EXIT_CLIENT           Служит для выхода из сеанса клиента без прекращения выполнения задания.
  FILESIZE              Размер файла по умолчанию (байт) для последующих команд ADD_FILE.
  HELP                  Отображает сводку по интерактивным командам.
  KILL_JOB              Служит для отсоединения и удаления задания.
  PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
                        PARALLEL=<число рабочих процессов>.
  START_JOB             Служит для запуска/возобновления текущего задания.
  STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                        значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
                        STATUS[=interval]
  STOP_JOB              Служит для нормального завершения выполнения задания и выхода из клиента.
                        STOP_JOB=IMMEDIATE выполняет немедленное завершение
                        задания насоса данных.
impdp help=y
  Import: Release 10.2.0.3.0 - 64bit Production on Среда, 20 Февраль, 2008 13:57:18

  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  Утилита импорта насоса данных предоставляет механизм для передачи объектов данных
  между базами данных Oracle. Эта утилита вызывается следующей командой:

       Пример: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

  Управление выполнением импорта может осуществляться вводом команды 'impdp' с заданием после нее
  различных параметров. Для задания параметров служат ключевые слова:

       Формат:  impdp КЛЮЧЕВОЕ СЛОВО=значение или КЛЮЧЕВОЕ СЛОВО=(значение1,значение2,...,значениеN)
       Пример: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

  USERID должно быть первым параметром в командной строке.

  Ключевое слово        Описание (Знач. по умолчанию)
  ------------------------------------------------------------------------------
  ATTACH                Служит для присоединения к существующему заданию, например, ATTACH [=имя задания].
  CONTENT               Служит для задания данных для загрузки. Разрешаются ключевые слова:
                        (ALL), DATA_ONLY и METADATA_ONLY.
  DIRECTORY             Объект 'каталог', который должен использоваться для файлов дампов, журналов и sql.
  DUMPFILE              Список файлов дампов для выполнения импорта из них (expdat.dmp),
                        например, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.
  ENCRYPTION_PASSWORD   Ключ пароля для доступа к столбцу зашифрованных данных.
                        Этот параметр недействителен для заданий импорта по сети.
  ESTIMATE              Служит для вычисления оценочных данных заданий. Допускаются следующие ключевые слова:
                        (BLOCKS) и STATISTICS.
  EXCLUDE               Служит для исключения определенных типов объектов, например, EXCLUDE=TABLE:EMP.
  FLASHBACK_SCN        SCN, используемый для установки мгновенного снимка сеанса назад.
  FLASHBACK_TIME        Время, используемое на получение SCN, ближайшее к заданному времени.
  FULL                  Служит для выполнения импорта всех данных из источника (Y).
  HELP                  Служит для отображения сообщения Справки (N).
  INCLUDE               Служит для включения определенных типов объектов, например, INCLUDE=TABLE_DATA.
  JOB_NAME              Имя создаваемого задания импорта.
  LOGFILE               Имя файла журнала (import.log).
  NETWORK_LINK          Имя канала связи удаленной базы данных с исходной системой.
  NOLOGFILE             Не записывать файл журнала.
  PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
  PARFILE               Служит для задания файла параметров.
  QUERY                 фраза предиката, используемая для импорта подмножества таблицы.
  REMAP_DATAFILE        Служит для переопределения ссылок на файлы данных во всех операторах DDL.
  REMAP_SCHEMA          Объекты из одной схемы загружаются в другую схему.
  REMAP_TABLESPACE      Объект табличного пространства повторно отображается в другое табличное пространство.
  REUSE_DATAFILES       Табличное пространство будет инициализировано, если оно уже существует (N).
  SCHEMAS               Список схем для импорта.
  SKIP_UNUSABLE_INDEXES Служит для пропуска индексов, для которых было установлено состояние 'Индекс не применим'.
  SQLFILE               Служит для записи всех DDL SQL в указанный файл.
  STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                        значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
  STREAMS_CONFIGURATION включает загрузку метаданных потоков
  TABLE_EXISTS_ACTION   Действие, которое выполняется, если импортируемый объект уже существует.
                        Допустимые ключевые слова: (SKIP), APPEND, REPLACE и TRUNCATE.
  TABLES                Служит для задания списка таблиц для импорта.
  TABLESPACES           Служит для задания списка табличных пространств для импорта.
  TRANSFORM             Преобразование метаданных, которое должно применяться к соответствующим объектам.
                        Допустимые ключевые слова для преобразований: SEGMENT_ATTRIBUTES, STORAGE
                        OID и PCTSPACE.
  TRANSPORT_DATAFILES   Список файлов данных для импорта в режиме, допускающем транспортировку.
  TRANSPORT_FULL_CHECK  Служит для проверки сегментов хранения для всех таблиц (N).
  TRANSPORT_TABLESPACES Список табличных пространств, из которых будут загружаться метаданные.
                        Действительно только для операций в режиме импорта NETWORK_LINK.
  VERSION               Версия объектов для экспорта. Могут использоваться следующие ключевые слова:
                        (COMPATIBLE), LATEST или любой действительный номер версии базы данных.
                        Действительно только для NETWORK_LINK и SQLFILE.

  Следующие команды могут использоваться в интерактивном режиме.
  Примечание. Допускается использование сокращений

  Команда               Описание (Значение по умолчанию)
  ------------------------------------------------------------------------------
  CONTINUE_CLIENT       Служит для возврата в режим протоколирования. В случае простоя задание будет запущено заново.
  EXIT_CLIENT           Служит для выхода из сеанса клиента без прекращения выполнения задания.
  HELP                  Отображает сводку по интерактивным командам.
  KILL_JOB              Служит для отсоединения и удаления задания.
  PARALLEL              Служит для изменения числа активных рабочих процессов для текущего задания.
                        PARALLEL=<число рабочих процессов>.
  START_JOB             Служит для запуска/возобновления текущего задания.
                        START_JOB=SKIP_CURRENT служит для запуска задания после пропуска
                        всех действий, которые выполнялись, когда задание было остановлено.
  STATUS                Частота (сек) с которой должно отслеживаться состояние задания, где
                        значение по умолчанию (0) соответствует отображению нового состояния, когда оно будет доступно.
                        STATUS[=interval]
  STOP_JOB              Служит для нормального завершения выполнения задания и выхода из клиента.
                        STOP_JOB=IMMEDIATE выполняет немедленное завершение
                        задания насоса данных.

Дополнительную информацию можно посмотреть здесь:

Оригинал этой статьи здесь:


 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate