Шаг 130 - БД Oracle - Экспорт - команды и управление выводом

Разбираемся далее с экспортом! Функциональные средства экспорта имеют три уровня: полный (Full) режим, пользовательский (User) режим и табличный (Table).

В полном режиме (Full) экспортируется вся база данных, т.е. читается весь словарь данных. В файл дампа экспорта записываются команды языка DDL, для полного восстановления БД. В своих схемах, этот файл будет содержать определение всех табличных пространств, всех пользователей и все объекты, данные и привилегии.

В пользовательском режиме (User) экспортируются объекты пользователя и содержащиеся в них данные. Все привилегии и индексы, созданные пользователем для своих объектов так же экспортируются. Не экспортируются только привилегии и индексы, созданные пользователями не являющимися владельцами этих бъектов.

В табличном режиме (Table) экспортируется указанная таблица. Ее структура, индексы и привилегии экспортируются совместно с ее данными или без них. Табличный режим позволяет экспортировать так же все таблицы, принадлежащие пользователю (для этого нужно указать владельца схемы, но не указывать название таблицы). Можно так же экспортировать определенный раздел таблицы.

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

- О, ты все еще работаешь в DOS! Какой ужас!!! - восклицают они, видя на экране моего компьютера Far Manager и то как я вообще работаю с Oracle посредством командной строки! Ну, что ж вот такой я динозавр! А, меня вполне устраивает! Хотя есть способ выполнит экспорт с применением OEM (Oracle Enterprise Manager) - но об этом, чуть позже! Итак, для выполнения экспорта, проще всего написать .bat файл вот такого, например содержания:

..\full.bat -> это имя файла для примера, его не нужно помещать внутрь файла для экспорта!

set nls_lang=russian_cis.ru8pc866
exp.EXE USERID=sys/manager@proba FULL=Y FILE=c:\ORACLE\full.dat LOG=C:\ORACLE\full.LOG

.bat файл такого содержания полностью экспортирует всю вашу БД, в файл дампа с именем full.dat! Вы, можете поместить этот файл скажем на CD - диск и положить его в сейф! Все ваша БД теперь всегда может быть восстановлена заново!!! Но, не все так просто как кажется! Для того, чтобы быть более уверенным вам нужно запускать этот файл хотя бы раз в неделю или день! В зависимости от вашей потребности или еще чего либо еще! Но, это уже на ваше усмотрение! Итак, сейчас давайте разберем, все опции командной строки экспорта по порядку! Это будет полезно для вас в дальнейшем и вы можете пользоваться этим как справочником! Поехали!

Ключевое словоОписание
useridИмя пользователя и пароль учетной записи, выполняющей экспорт. Если он следует первым в командной строке exp.exe, то userid писать не обязательно!
bufferРазмер буфера используемого для считывания строк данных. Значение по умолчанию зависит от системы. Обычно > 65536.
fileИмя файла дампа экспорта.
filesizeМаксимальный размер файла дампа экспорта. Если в элементе file перечислено несколько файлов, результат экспорта будет записываться в них на основе их значений filesize.
compressФлаг Y/N, показывающий должна ли утилита экспорта сжимать фрагментированные сегменты в единичные экстенты. Этот параметр влияет на то какие конструкции storage будут содержаться в файле экспорта для этих объектов.
grantsФлаг Y/N, показывающий будут ли экспортироваться полномочия (GRANTS - привилегии) на объекты БД.
indexesФлаг Y/N, показывающий будут ли экспортироваться индексы таблиц.
rowsФлаг Y/N, показывающий будут ли экспортироваться строки. Если значение этого параметра равно N в файле экспорта будут созданы только операторы DDL для объектов базы данных.
constraintsФлаг Y/N, показывающий будут ли экспортироваться ограничения на таблицы.
fullЕсли значение этого параметра равно Y, будет выполнен полный экспорт БД.
ownerСписок экспортируемых учетных записей БД. Для этих учетных записей может быть выполнен экспорт в режиме User.
tablesСписок экспортируемых таблиц БД. для них может быть выполнен экспорт в режиме Table.
recordlengthДлина записи файла дампа экспорта в байтах. Обычно оставляет значение по умолчанию, если не предполагается переносить файлы экспорта между различными операционными системами.
inctypeТип выполняемого экспорта. Допустимы значения COMPLETE (по умолчанию) COMULATIVE и INCREMENTAL. (Далее мы рассмотрим это подробнее)
directФлаг Y/N, показывающий следует ли выполнять прямой (Direct) экспорт. При этом процесс обходит кэш буфера, что позволяет получить существенный выигрыш в производительности.
recordДля инкрементального экспорта флаг Y/N показывает, будет ли запись об экспорте занесена в таблицы словаря данных.
parfileИмя файла параметров передаваемого утилите экспорта. В этом файле могут содержаться все описанные ранее и позже параметры.
statisticПараметр определяющий надо ли записывать в файл экспорта команду analyze для всех экспортируемых объектов. Допустимы значения COMPUTE, ESTIMATE (по умолчанию), и N. Ранее этот параметр назывался ANALYZE.
consistentФлаг Y/N, показывающий, сохранять ли для всех экспортируемых объектов вариант, согласований по чтению. Это требуется если в ходе процесса экспорта, связанные друг с другом таблицы модифицируются пользователем.
logИмя файла, в который будет записан журнал экспорта.
feedbackЧисло строк, по достижению которого на экране будет отображаться процесс экспорта таблицы. Значение по умолчанию, равно 0, означает, что никакой обратной связи не предусматривается, пока вся таблица не будет полностью экспортирована.
point_in_time_recoverФлаг Y/N, дающий ORACLE понять, что экспортируются метаданные для использования при восстановлении табличного пространства с привязкой ко времени (point_in_time). Эта возможность восстановления является углубленной.
recovery_tablespaceТабличные пространства метаданные, которых будут экспортированы с привязкой ко времени.
queryКонструкция where, которая будет применяться к каждой таблице при ее экспорте.
transport_tablespaceРавен Y, если используется режим сменных табличных пространств (plugable tablespace). Используется совместно с ключевым словом tablespaces.
tablespacesТабличные пространства, метаданные которых будут экспортированы при перемещении табличного пространства.

Вот собственно список параметров утилиты экспорта. Вообще-то, если присмотреться внимательнее, то можно увидеть, что многие параметры конфликтуют друг с другом. Так, например, если записать .. FULL=Y OWNER=MILLER, то получите сообщение об ошибке, так как первый параметр означает полный экспорт, а второй пользовательский со схемой MILLER! Параметры transport_tablespace и tablespaces являются специфическими и применимы только при работе с так называемыми транспортируемыми табличными пространствами. Тогда как параметр point_in_time_recover и recovery_tablespace применим только к восстановлению табличных пространств с привязкой ко времени. Следующий немаловажный фактор. Значение COMPERESS=Y изменяет параметр initial конструкции storage для сегментов с несколькими экстентами. Общее выделенное пространство на диске для таких сегментов сжимается в один экстент. В связи с этим следует отметить две важные особенности:

Во-первых, сжимается выделенное, а не используемое табличное пространство. Если таблица, для которой выделено 30 Мб в трех экстентах по 10 Мб в каждом, сожмется в один пустой экстент размером 30 Мб(!) Освобождение дискового пространства при этом не происходит!

Во-вторых, если табличное пространство содержит несколько файлов данных, сегмент может выделить место на диске превышающее по размерам самый большой из них! В результате в конструкции storage размер экстента initial будет больше размера самого большого файла данных. Поскольку один экстент не может охватить больше одного файла данных, создание объекта в процессе импорта закончится неудачей!

Вот такие подводные камушки ждут вас на этом тернистом пути! Теперь вы сами можете попробовать, провести экспорт ваших БД и посмотреть, что у вас получится! Далее мы продолжим! :)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Летучий Сергей - 10.05.2004