Использование инструментов Export и Import

Пока самое полезное описание утилит exp и imp OracleВзято со странички http://subscribe.ru/archive/comp.soft.db.oraclefromzero/200508/15032326.html

Выпуск 17

Здравствуйте, уважаемые читатели! Продолжаем изучение СУБД Oracle. Для начала, как обычно, несколько вопросов по предыдущему выпуску рассылки.

  1. Какие два метода управления undo-пространством Вы знаете?
  2. Какой метод управления undo-пространством использовать предпочтительнее?
  3. Для каких целей используется undo-пространство?

Сегодня мы начнем такую важную тему как управление данными. Базы данных не должны быть замкнутыми системами, всегда есть необходимость загрузить какой-либо готовый справочник или осуществить обмен информацией. Для этого Oracle предоставляет несколько стандартных, достаточно мощных средств. Ими являются:

  • Export – Сохраняет данные и их структуру во внешний бинарный файл. Созданный таким образом файл можно прочитать лишь с помощью утилиты Import;
  • Import – Воссоздает данные и их структуру из выбранного бинарного файла экспорта;
  • SQL * Loader – Это очень гибкий инструмент, с помощью которого можно загрузить данные из обычных текстовых файлов в БД Oracle .

Использование инструментов Export и Import

Итак, Export предназначен для записи описаний объектов БД и собственно самих данных во внешний бинарный файл. Такой файл называют файлом экспорта. Файл экспорта может быть использован только утилитой Import .

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

  • Создание резервной копии БД. Надо заметить, однако, что это не самый эффективный механизм.
  • Пересоздание базы данных. Если фрагментация табличных пространств заметно снижает производительность, то можно воспользоваться инструментами экспорта и импорта для дефрагментации.
  • Перемещение данных между различными БД. Вы можете извлечь данные в файл экспорта, а затем импортировать их в другую базу данных. Это великолепный способ для переноса таблиц.
  • Реорганизация физической структуры. Если Вам необходимо переместить файлы данных по другим директориям или изменить их состав (и тому подобное), опять же можно воспользоваться экспортом и импортом. К примеру, можно сделать файл экспорта, создать новые табличные пространства и воспользоваться импортом для перераспределения данных.

Как видите, причин достаточно.

Export

Инструмент Oracle Export utility записывает описание объектов и табличные данные в бинарный файл. Эта информация может быть использована для обмена данными между базами данных на нескольких физических серверах или как дополняющий механизм резервного копирования.

В файл экспорта сначала записываются доминантные объекты, а затем зависимые. Например, если у таблицы имеется построенный индекс, то в экспортный файл сначала будут записаны табличные данные, а лишь затем индексы.

Также, файл экспорта можно использовать для реорганизации данных. Обычно при резервном копировании сохраняются образы файлов данных (т.е. их буквальная копия), и для восстановления требуется только скопировать эти образы обратно. Но поскольку Export записывает информацию в файл экспорта, то при импорте нет необходимости помещать данные в точности в то же место на диске. Это дает нам возможность уменьшить фрагментацию и избавиться от миграции строк.

Замечание: Прежде чем использовать Export или Import , необходимо выполнить (один раз) скрипт CATEXP.SQL. Если Вы создавали типовую базу данных, то скрипт CATALOG . SQL (выполняемый при создании БД) автоматически выполнит CATEXP.SQL.

Как и любой другой инструмент Oracle, Export можно использовать в графическом режиме (применяя Enterprise Manager ) и в командной строке. Думаю, в графическом режиме особых проблем не возникнет. Единственное что требуется – это предустановленный OMS (Oracle Management Server – создание репозитория кратко было рассмотрено в 10-м выпуске). Мы же рассмотрим более подробно работу с командной строкой.

Наверное, я не открою большого секрета, если скажу, что в графическом режиме используется та же самая утилита, как и в командной строке. Наименование файла – EXP (хотя в версиях Oracle 8 и младше он может называться по-другому, например, EXP 80).

Экспорт работает в нескольких режимах. Рассмотрим основные:

  • Full – В этом режиме экспортируются все объекты и данные за исключением схемы SYS . Причина этого проста – схема SYS и ее объекты всегда автоматически создаются при создании БД (Поэтому не рекомендуется хранить пользовательские данные в этой схеме).
  • Table – В этом режиме можно указать конкретные объекты для экспорта.
  • User – Этот режим предназначен для экспортирования всех объектов указанной схемы (включая таблицы, данные, права и индексы).

Для выполнения экспорта используется следующий синтаксис:

EXP имя/пароль [ опции … ]

Когда используется много параметров и настроек, удобно их вынести в отдельный файл. Тогда синтаксис команды будет такой:

EXP имя/пароль PARFILE =имя_файла [ опции … ]

При использовании файла параметров не обязательно указывать дополнительные опции, но если Вы хотите, то — пожалуйста. В файле параметров указываются все необходимые опции по одной на строку. Пример такого файла рассмотрим позже. Сами параметры указываются в такой форме:

ПАРАМЕТР = значение

Полезно знать следующие параметры экспорта:

  • BUFFER = число – этот параметр указывает размер буфера (в байтах), который используется при экспорте. Если размер буфера равен нулю, то в любой момент времени будет обрабатываться только одна строка. Значение по-умолчанию зависит от операционной системы.
  • COMPRESS = [Y или N] – Этим указывается как будут рассматриваться начальные экстенты . Если стоит Y, то Export консолидирует все данные каждой таблицы в один экстент. В противном случае Export использует текущие параметры . По умолчанию – Y.
  • CONSISTENT = [Y или N] – Должен ли экспорт быть произведен согласованным по чтению на определенный момент времени. Если Y, то экспорт будет согласованным, но может потребовать много undo-пространства, и даже может завершиться с ошибкой при большой активности пользователей. По-умолчанию N.
  • CONSTRAINTS = [Y или N] – Надо ли экспортировать ограничения целостности таблиц. По-умолчанию – Y .
  • DIRECT = [Y или N] – Если используется опция прямого режима, то данные считываются напрямую, минуя слой SQL-обработчика. Этот метод быстрее, но некоторые объекты схемы не могут быть экспортированы. По-умолчанию – N.
  • FEEDBACK = число – Это параметр индикации прогресса экспорта. Указывает на количество строк, которое соответствует выводимой на экран точке. Например, если FEEDBACK = 100 , Вы увидите точку на каждые 100 экспортированных строк. По-умолчанию – 0.
  • FILE = имя_файла – Этим параметром можно задать имя файла экспорта. По-умолчанию EXPDAT.DMP .
  • FULL = [Y или N] – Надо ли выполнять полный экспорт. Если FULL = Y, то надо. По-умолчанию N.
  • GRANTS = [Y или N] – Этим параметром можно указать необходимость экспорта прав на объекты. По-умолчанию Y .
  • HELP = [Y или N] – Если в параметре указано Y, то выводится список доступных параметров экспорта. По-умолчанию N .
  • INDEXES = [Y или N] – Надо ли экспортировать индексы. По-умолчанию Y .
  • LOG = имя_файла – Здесь можно указать имя файла, в который будет записана вся история процесса экспорта. В том числе будут записаны все возникшие ошибки и системные сообщения. Все эти же сообщения будут выводиться на экран независимо от того, указан этот параметр или нет.
  • OWNER = имя_владельца(ев) – Здесь можно указать список пользователей, чьи объекты надо экспортировать.
  • PARFILE = имя_файла – Имя файла параметров. Если не указан, то все необходимые параметры надо задать в командной строке.
  • ROWS = [Y или N] – Этот параметр определяет необходимость экспорта строк таблиц. По-умолчанию Y.
  • TABLES = список_таблиц – Этим параметром можно указать конкретные таблицы, которые необходимо экспортировать.
  • USERID = имя/пароль – Здесь можно указать имя пользователя, выполняющего экспорт и его пароль. Если параметр не указан, то утилита экспорта спросит имя/пароль в интерактивном режиме.

Вот пример файла параметров:

FULL=Y BUFFER=8192 FILE=D:\database\export\EXPDAT.DMP INDEXES=N

Если параметров не указано совсем, то exp попросит указать их в интерактивном режиме, например:

C:\Documents and Settings\Администратор>exp '/ as sysdba' Export: Release 9.2.0.1.0 - Production on Wed Aug 10 11:17:10 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production Enter array fetch buffer size: 4096 > 8192 Export file: EXPDAT.DMP > (1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 2 Export grants (yes/no): yes > Export table data (yes/no): yes > n Compress extents (yes/no): yes > ... 

В интерактивном режиме вопросов достаточно много, поэтому если нет желания заполнять длинную анкету, то лучше составить файл параметров.

Import

Инструмент Oracle Import предназначен только для одного – загрузить данные файла экспорта в базу данных Oracle . Если Вы желаете загрузить данные из других источников (не из файла экспорта Oracle), то следует пользоваться иным инструментом – SQL*Loader .

Точно также как и экспорт, импорт может быть выполнен в графическом режиме OEM, или в командной строке. Графический режим в силу его очевидности рассматривать не будем. Для работы в командной строке используется утилита IMP. Инструмент импорта имеет много параметров, схожих с параметрами экспорта. Мы рассмотрим основные из них, а для более детальной информации обращайтесь к официальной документации.

Для выполнения импорта используется следующий синтаксис:

IMP имя/пароль [ опции … ]

Так же как и при экспорте, можно указать файл параметров:

IMP имя/пароль PARFILE =имя_файла [ опции … ]

Далее перечислены основные параметры импорта:

  • BUFFER = число – Аналогичен параметру BUFFER утилиты экспорта. Указывает размер буфера (в байтах), который используется при импорте. Если размер буфера равен нулю, то в любой момент времени будет обрабатываться только одна строка. Значение по-умолчанию зависит от операционной системы .
  • COMMIT = [Y или N] – Надо ли фиксировать транзакции после каждой вставки массива. По-умолчанию N, т.е. Import фиксирует транзакцию после загрузки таблиц целиком. При возникновении ошибок выполняется откат. Рекомендуется указывать Y, если объекты очень большие и имеются ограничения целостности уникальности (uniqueness constraint), тогда увеличивается производительность, и сегменты отката не увеличиваются настолько быстро.
  • DESTROY = [Y или N] – Этот параметр определяет необходимость замены исходных файлов данных. Заметьте, что файл экспорта содержит имена файлов данных для каждого табличного пространства. Если указать Y, то при импорте будут перезаписаны исходные файлы данных (т.е. будет использована опция REUSE в команде CREATE TABLESPACE). Если Вам необходимо импортировать данные в исходные файлы данных без их затирания, то указывайте опцию IGNORE = Y. По-умолчанию N .
  • FEEDBACK = число – Аналогично экспорту. Указывает на количество строк, которое соответствует выводимой на экран точке. Например, если FEEDBACK = 100 , Вы увидите точку на каждые 100 экспортированных строк. По-умолчанию – 0.
  • FILE = имя_файла – Этим параметром можно задать наименование и местонахождение файла экспорта. По-умолчанию EXPDAT.DMP.
  • FROMUSER = имя_пользователя – параметр указывает схему, которую необходимо импортировать. Если не указать, то файл экспорта будет импортирован полностью.
  • FULL = [Y или N] – Параметр указывает на необходимость импорта в режиме full. По-умолчанию – N .
  • GRANTS = [Y или N] – Надо ли импортировать права объектов. По-умолчанию — Y .
  • HELP = [Y или N] – Если параметр установлен в Y, то на экран будет выведено описание возможных параметров импорта. По — умолчанию N.
  • IGNORE = [Y или N] – Этот параметр указывает на необходимость игнорирования возникающих ошибок создания объектов. Например, если IGNORE = Y и при импорте создается уже имеющаяся таблица, то ошибка создания таблицы не выводится, а данные этой таблицы продолжают импортироваться уже без ошибок. По-умолчанию N .
  • INDEXES = [Y или N] – Этим параметром указывается необходимость импорта индексов таблиц. По-умолчанию Y.
  • INDEXFILE = имя_файла – Указав эту опцию, можно получить скрипт создания индексов для таблиц. Это позволяет нам легко пересоздать индексы, вместо того, чтобы их восстанавливать.
  • LOG = имя_файла – Имя файла для отчета об импорте. В указанный файл копируются все сообщения, выводимые на экран.
  • PARFILE = имя_файла – Файл опций, в котором указываются все необходимые параметры импорта.
  • ROWS = [Y или N] – Надо ли импортировать строки таблиц. По-умолчанию Y.
  • SHOW = [Y или N] – Если указать этот параметр в Y, то содержимое файла экспорта будет выводится на экран вместо непосредственного импорта в базу. Этим можно пользоваться в целях отладки . По-умолчанию N.
  • TABLES = (список_таблиц) – В скобках через запятую можно перечислить таблицы , которые надо импортировать . Вместе с указанными таблицами будут импортированы все зависимые объекты (индексы, права, триггеры, ограничения целостности и прочие).
  • TOUSER = имя_пользователя – Этим параметром указывается пользователь, в чью схему будут импортированы объекты файла экспорта. Если Вы хотите переместить объекты одного пользователя в схему другого, то используйте пару параметров FROMUSER и TOUSER .
  • USERID = имя/пароль – Этим параметром указывается пользователь, от чьего имени будет выполняться импорт.

Пример файла параметров импорта:

FULL=Y BUFFER=8192 FILE=D:\database\export\EXPDAT.DMP LOG=D:\database\LOG.TXT

Если необходимые параметры не указаны, то они будут запрошены в интерактивном режиме.

Подведем итоги

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

Но, как и с любым другим инструментом, следует соблюдать осторожность, иначе можно пораниться. Особенно это касается импорта, поскольку он оказывает непосредственное воздействие на БД. Прежде чем сделать решающий импорт, протестируйте его на резервной копии или с помощью параметра SHOW .

Инструмент SQL*Loader мы рассмотрим в следующем выпуске рассылки.

В общем, на сегодня все. До скорой встречи.

Всего наилучшего!

Злыгостев А.А.

zlygostev@gmail.com

Leave a Reply