ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.






                       У Т И Л И Т Ы   O R A C L E



                         РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ


                                Версия 6.0











                                ____________________________________
                                Система управления реляционной базой
                                данных  ORACLE
























                                    -- 1 --





Утилиты ORACLE. Руководство пользователя.
Версия 6.0

Часть N 3602-V6.0
Ноябрь 1988

Авторы: Шелли Диммик, Рита Моран, Том Портфолио

Консультанты: Деннис Кочрэн,  Том Грейсон, Чин Хонг, Кен Дже-
              кобс, Вик Хачатурян, Дейв Симсон

Copyright (с) Корпорация Oracle 1985, 1989
все права сохраняются. Отпечатано в США.


        Описание ограничения прав

    Использование, копирование  или разглашение содержания подчи-
няются ограничениям,  указанным в Вашем контракте  с  Корпорацией
Oracle.
    Использование, копирование или разглашение содержания со сто-
роны правительства подчиняются ограничениям, принятым в отношении
торговли программными средствами для ЭВМ,  которые в соответствии
с федеральным законодательством распространяются по  лицензиям  с
ограничением прав покупателей.
    Информация, содержащаяся  в  настоящем документе,  может быть
изменена без предупреждения.  Если у Вас возникнут  проблемы  при
работе с документацией, пожалуйста, сообщите нам об этом письмен-
но.  Корпорация Oracle не гарантирует отсутствия ошибок в настоя-
щем документе.

    ORACLE, Easy*SQL, SQL*Calc, SQL*Forms, SQL*Graph, SQL*Loader,
SQL*Menu, SQL*Net  и SQL*Plus - зарегистрированные торговые марки
корпорации Oracle.
    SQL*DBA и SQL*QMX - торговые марки корпорации Oracle.
    IBM -  торговая  марка  корпорации   International   Business
Machines.

    ПРЕДИСЛОВИЕ
    -------------------------------------------------------------


    Данное руководство показывает, как пользоваться четырьмя ути-
литами (сервисными программами)  СУРБД ORACLE,  расширяющими воз-
можности последней  в  организации ввода данных,  сопровождении и
поиске:

    Экспорт/Импорт       Экспорт и Импорт являются утилитами, до-
    (Export/Import)      полняющими друг друга.  Утилита  Экспорт
                         выгружает данные  из  базы  в  файлы ОС;
                         утилита Импорт считывает данные из  этих
                         файлов обратно в базу. Эти утилиты помо-
                         гут Вам выполнять резервирование данных,
                         распространяют свои  действия  на  новые
                         версии базы и обслуживают обмен  данными
                         между однотипными базами.

                                    -- 2 --



    SQL*Loader           Утилита SQL*Loader загружает  данные  из
                         внешних файлов  в  таблицы  базы ORACLE.
                         Она работает с широким спектром  входных
                         форматов и позволяет контролировать про-
                         цесс загрузки записей.  SQL*Loader заме-
                         няет собой более раннюю версию загрузчи-
                         ка данных ORACLE (ODL).

    CRT                  Утилита CRT  дает возможность устанавли-
                         вать характеристики  терминального дисп-
                         лея (такие,  как обратное изображение  и
                         выделение изображения) для полноэкранных
                         продуктов ORACLE.  CRT  также  позволяет
                         настраивать экранные  изображения и нак-
                         ладывать программные функции на  клавиа-
                         туру терминала.

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

    Аудитория

    Настоящее руководство  предназначено  для  тех  пользователей
СУБД ORACLE, которые хотят научиться следующему:
    * использовать  утилиты Export/Import в процессе резервирова-
      ния отдельных данных и базы ORACLE в целом или  перемещения
      данных между однотипными базами.
    * использовать утилиту SQL*Loader для загрузки данных из фай-
      лов ОС в таблицы базы ORACLE.
    * использовать утилиту CRT в целях установки и  корректирова-
      ния характеристик  экранных  изображений  для полноэкранных
      продуктов ORACLE.
    Руководство расчитано на пользователей, имеющих опыт программирования на 
языке SQL и  знакомых  с  основами  построения  СУБД ORACLE. Кроме того, 
предполагается, что пользователи утилиты SQL* Loader умеют обращаться со 
средствами управления файлами ОС.

Замечание: В данном руководстве отсутствуют инструкции по инсталляции утилит,  
поскольку эти инструкции имеют  различный  вид для разных  операционных  
систем.  Указания по инсталляции утилит можно найти в руководстве "ORACLE 
Installation and User's Guide", при этом  необходимо  учесть те особенности,  
которые вытекают из материала, изложенного в настоящем руководстве.

    Как организовано руководство

    Настоящее руководство состоит из четырех частей.   Рассмотрим
вкратце содержимое каждой части.

    ЧАСТЬ I  EXPORT/IMPORT

    Глава 1  Экспорт данных
    В данной  главе  объясняется  порядок  использования  утилиты
Export для записи данных из базы ORACLE в файлы ОС.  Рассматрива-
ются основные положения,  режимы экспортирования, методы интерак-
тивного выбора  параметров и задания параметров в командной стро-
ке, описание параметров и пошаговое  экспортирование.   Изложение
материала сопровождается примерами.

                                    -- 3 --



    Глава 2  Импорт данных
    В данной  главе  объясняется  порядок  использования  утилиты Import для 
чтения данных из файлов,  полученных в результате экспорта, в  базу ORACLE. 
Рассматриваются основные положения, методы интерактивного выбора параметров и 
задания параметров в командной строке, описание параметров и пошаговое 
импортирование. Изложение материала сопровождается примерами.

    Глава 3  Дополнительные сведения об экспорте/импорте
    В главе содержатся полезные советы по повышению эффективности использования 
соответствующих утилит.  Рассматривается  совместимость экспорт-файлов версии 5 
с Импортом версии 6,  реорганизация табличных пространств,  создание новых 
сегментов  восстановления, экспортирование/импортирование данных с утилитой 
SQL*Net,  импортирование таблиц большого размера,   импортирование  данных  
типа LONG, сокращение   фрагментации БД и обработка сообщений об ошибках.

    ЧАСТЬ II  SQL*LOADER

    Глава 4  Основные понятия и особенности SQL*Loader
    Данная глава служит введением в SQL*Loader,  описывающим  его особенности. 
Вводятся  основные  понятия,   связанные с загрузкой данных. Рассматривается 
подготовка данных для SQL*Loader,   внутреннее преобразование к формату БД и 
результаты работы программы.
    Глава 5  Примеры работы SQL*Loader
    Рассматриваются пять  примеров,   иллюстрирующих некоторые из особенностей 
SQL*Loader. Демонстрируется загрузка данных, имеющих переменную длину, записей 
фиксированного формата, файла свободного формата, нескольких физических записей 
как одной логической, а также нескольких таблиц.
    Глава 6  Синтаксис командной строки
    Описывается синтаксис командной строки, обрабатываемой утилитой SQL*Loader. 
Рассматриваются формат команды SQLLOAD, аргументы командой строки, параметр 
OPTIONS и сообщения SQL*Loader.
    Глава 7  Синтаксис управляющего файла
Описывается синтаксис управляющего файла,  используемого утилитой SQL*Loader.  
Рассматривается создание  управляющего  файла, использование оператора LOAD 
DATA, описание файлов данных, таблиц и столбцов, указание начала загружаемых 
данных.

ЧАСТЬ III  CRT
    Глава 8  Утилита определения характеристик терминала CRT
Излагается порядок  применения  утилиты  CRT для описания или переопределения 
характеристик терминала, используемых набором полноэкранных продуктов ORACLE.  
Рассматриваются таблицы и файлы, с которыми работает утилита CRT, продукты, 
использующие определения CRT, терминалы, поддерживаемые данной утилитой, значе
ния характеристик терминала,  присваиваемые по умолчанию, используемые таблицы 
БД,  порядок добавления и переопределения характеристик, запуск утилиты CRT.

    ЧАСТЬ IV  ПРИЛОЖЕНИЯ

    Приложение A  Сообщения  об  ошибках  при выполнении программ Export/Import
    Приводится список  сообщений об ошибках,  выдаваемых во время работы 
программ  Export/Import.   Рассматривается  предполагаемая причина 
возникновения каждой ошибки и предлагаются действия по ее устранению.
    Приложение B  Сообщения об ошибках при работе SQL*Loader
    Приводится список сообщений об ошибках,  выдаваемых во  время
работы утилиты SQL*Loader.  Рассматриваются наиболее частые ошибки.
    Приложение C  Замечания по использованию загрузчика DB2
    Описываются различия в синтаксисе управляющих  файлов  утилит SQL*Loader и 
DB2. Рассматриваются дополнительные возможности утилиты SQL*Loader по сравнению 

                                    -- 4 --



с утилитой DB2,  опция RESUME в DB2, опции, обеспечивающие  совместимость 
утилит, а также возможности, отсутствующие в SQL*Loader.
    Приложение D  Зарезервированные слова в SQL*Loader
    Приводится список слов, зарезервированных для использования в
СУРБД ORACLE и в SQL*Loader.
    Приложение E  Стандартные определения характеристик терминала
    Приводится список некоторых наиболее часто используемых типов
терминала, поддерживаемых корпорацией Oracle.
    Приложение F  Функциональные коды клавиатуры терминала
    Приводится список  функциональных кодов клавиатуры терминала,
используемых утилитами SQL*Forms IAP и IAD, SQL*Calc и SQL*Menu.

    Публикации, связанные с данным документом

    Помимо настоящего руководства и тех документов, которые Вы получили вместе  
с приобретенными продуктами,  Вам следует также ознакомиться со следующими 
источниками,  опубликованными корпорацией Oracle:
    * СУРБД ORACLE. Замечания по реализации. Часть N 3001
      (ORACLE RDBMS Release Notes, Part No.3001)
    * Руководство администратора БД ORACLE. Часть N 3601
      (ORACLE Database Administrator's Guide, Part No.3601
    * ORACLE. Сообщения об ошибках и их коды. Часть N 3605
      (ORACLE Error Messages and Codes Manual, Part No.3605)
    Для каждой операционной системы имеется также руководство  по
установке и использованию утилит. Например:
    * Руководство по установке и использованию СУРБД ORACLE в  ОС
      DEC VAX/VMS. Часть N 1001
      (ORACLE for DEC VAX/VMS Installation and User's Guide, Pat No.1001)
    * Руководство по установке и использованию СУРБД ORACLE в  ОС
      IBM VM/SP. Часть N 1003
      (ORACLE for IBM VM/SP Installation and User's Guide, Part No.1003)

    Соглашения, используемые в данном руководстве

    В настоящем руководстве используются следующие соглашения:

Зарезервированные и      Шрифт,  состоящий из заглавных букв,
ключевые слова           используется  в  том  случае,  когда текст должен быть 
                     воспроизведен  в точном соответствии  с  его записью.  
                     Зарезервированные и  ключевые  слова не могут использовать
                     ся в качестве имен столбцов или таблиц,  если они не 
                     заключены в двойные кавычки.  
                     SQLLOAD scott/tiger may.ctl may.log

Переменные               Переменные,  для которых должно быть выбрано 
                         соответствующее    значение, записываются строчными 
                         буквами. Если указаны круглые скобки,  они  должны 
                         быть введены.
                          INTEGER [(length)]

Альтернативные           Выбираемые значения разделяются вер-
(выбираемые) элементы    тикальной чертой.
                          {BADFILE і BADDN} filename

Обязательные элементы    Обязательные элементы заключаются  в
                         фигурные скобки. Одну из альтернатив
                         Вы обязаны выбрать.
                          INCTYPE = {SYSTEM і RESTORE}

                                    -- 5 --



Необязательные           Необязательные элементы  заключаются
элементы                 в квадратные скобки.
                          FIXED len [BLOCKSIZE size]

Перечисляемые            В одной строке может быть перечисле-
элементы                 но   произвольное  число  однотипных
                         элементов.
                          [columnspec, columnspec ...]

    Ваши замечания приветствуются

    Ваши замечания как пользователя ORACLE корпорацией ценятся  и безусловно 
приветствуются.   В конце данного руководства приложен "Лист замечаний 
пользователя", который Вы можете использовать для изложения того,   что Вам 
понравилось или не понравилось в данном руководстве. При  желании Вы можете 
вступить с  нами  в  контакт, позвонив по телефону (415) 598-8000 или 
обратившись по адресу:
    ORACLE RDBMS Product Manager
    Oracle Corporation
    20 Davis Drive
    Belmont, California 94002






































                                    -- 6 --



    СОДЕРЖАНИЕ
    ---------Д

ЧАСТЬ I  EXPORT/IMPORT ..................
    Глава 1  Экспорт данных .................

    Основные положения ......................
      Привилегии доступа ....................
      Подготовка к работе ...................
      Операции с файлами ....................
      Обработка ошибок ......................
      Ограничения ...........................
    Режимы экспортирования ..................
    Как пользоваться утилитой Экспорт .......
      Метод задания командной строки ........
      Ключевые слова утилиты Экспорт ........
      Взаимоотношения между параметрами .....
      Метод интерактивного выбора параметров
    Примеры работы утилиты Экспорт ..........
      Примеры экспортирования в режиме полной базы данных
      Примеры экспортирования в режиме пользователя
      Примеры экспортирования в режиме таблицы
    Пошаговый и кумулятивный экспорт .........
      Преимущества ...........................
      План проведения ........................
      Состав экспортируемых данных ...........
      Синтаксис командной строки .............
      Пример пошагового экспорта .............
      Таблицы, поддерживающие пошаговый и кумулятивный экспорт

    Глава 2  Импорт данных ...................

    Основные положения .......................
      Привилегии доступа .....................
      Параметры хранения .....................
      Операции с файлами .....................
      Обработка ошибок .......................
      Ограничения ............................
    Как пользоваться утилитой Импорт .........
      Метод задания командной строки .........
      Ключевые слова утилиты Импорт ..........
      Метод интерактивного выбора параметров .
    Примеры работы утилиты Импорт ............
      Пример импортирования отдельных таблиц указанного пользователя
      Пример импортирования таблиц,  выгруженных другим пользователем
      Пример импортирования таблиц одного пользователя другому
    Пошаговый импорт .........................
      Синтаксис командной строки .............
      Загрузка результатов пошагового или кумулятивного экспортирования

    Глава 3  Дополнительные сведения об экспорте/импорте

    Использование экспорт-файлов версии 5
    Создание таблиц вручную непосредственно перед импортированием
    Реорганизация табличных пространств ......
      Удаление табличного пространства .......
    Создание нового сегмента восстановления ..
    Экспортирование/импортирование данных с утилитой SQL*Net

                                    -- 7 --



    Импортирование таблиц большого размера ................
    Импортирование данных типа LONG .......................
    Сокращение фрагментации базы данных ...................
    Обработка сообщений об ошибках ........................

ЧАСТЬ II  SQL*LOADER ..................................
    Глава 4  Основные понятия и особенности SQL*Loader ....

    Что такое SQL*Loader ? ................................
    Исходные данные для SQL*Loader ........................
      Управляющий файл ....................................
      Данные ..............................................
    Подготовка базы данных ................................
    Результаты работы утилиты .............................
      Регистрационный файл ................................
      Файл плохих записей .................................
      Файл отсеянных записей ..............................

    Глава 5  Примеры работы SQL*Loader ....................
    Описание примеров .....................................
    Пример 1: Загрузка данных переменной длины ............
    Пример 2: Загрузка записей фиксированного формата .....
    Пример 3: Загрузка файла в свободном формате с исполь-
              зованием разделителей между данными
    Пример 4: Загрузка нескольких физических записей как одной логической
    Пример 5: Загрузка данных в несколько таблиц ..........

    Глава 6  Синтаксис командной строки ...................

    Команда SQLLOAD .......................................
    Аргументы командной строки ............................
    Использование ключевого слова OPTIONS .................
    Сообщения, возвращаемые утилитой SQL*Loader ...........

    Глава 7  Синтаксис управляющего файла .................

    Создание управляющего файла ...........................
    Синтаксис оператора LOAD DATA .........................
      Элементы синтаксиса .................................
    Описание файлов данных ................................
      Имя файла ...........................................
      Режим чтения файла ..................................
      Описание нескольких файлов данных ...................
      Примеры описания файла данных .......................
    Описание файла плохих записей .........................
      Примеры описания файла плохих записей ...............
    Описание файла отсеянных записей ......................
      Примеры описания файла отсеянных записей ............
      Ограничение количества отсеиваемых записей ..........
    Загрузка табличных данных в режимах замены и добавления в конец
    Установка максимальной длины логических записей .......
    Формирование логических записей из физических .........
      Примеры использования фразы CONTINUEIF ..............
    Описание таблиц и столбцов ............................
      Описание имен таблиц ................................
      Выбор строк для загрузки ............................
      Описание состояния поля .............................
      Описание разделителей данных ........................

                                    -- 8 --



      Описание столбцов ...................................
      Занесение константы в столбец .......................
      Занесение в столбец номера записи из файла данных ...
      Генерация уникальных порядковых номеров .............
      Указание расположения информационного поля ..........
      Указание длины информационного поля .................
      Указание типа содержащегося в информационном поле значения
      Описание символьных данных с ограничителями .........
      Занесение в столбец пустого значения ................
      Занесение нуля в столбец числового типа .............
    Указание начала загружаемых данных в управляющем файле

    ЧАСТЬ III  CRT .......................................

    Глава 8  Утилита определения характеристик терминала CRT

    Таблицы и файлы CRT ..................................
    Продукты ORACLE, использующие определения CRT ........
    Терминалы, поддерживаемые утилитой CRT ...............
      Синхронные терминалы ...............................
      Асинхронные терминалы ..............................
    Значения характеристик по умолчанию ..................
    Базовые таблицы, используемые утилитой CRT ...........
      Соглашения по обозначениям .........................
      Таблица CRT ........................................
      Таблица CRTBOX .....................................
      Таблица CRT_PRODUCTS ...............................
      Таблица CRT_TYPE ...................................
      Таблица ESC ........................................
      Таблица FUNCTIONS ..................................
      Таблица GOTO_LC ....................................
    Создание новых определений терминальных характеристик
      Использование формы CRT ............................
      Использование утилиты SQL*Plus .....................
      Описание координат курсора .........................
    Переопределение существующих характеристик терминала .
    Запуск программы CRT .................................
    Инсталляция/инициализация утилиты CRT (информация
    для администратора БД) ...............................

    ЧАСТЬ IV  ПРИЛОЖЕНИЯ .................................

    Приложение A  Сообщения об ошибках при выполнении программ Export/Import
    Приложение B  Сообщения об ошибках при работе SQL*Loader
    Приложение C  Замечания по использованию загрузчика DB2
    Приложение D  Зарезервированные слова в SQL*Loader
    Приложение E  Стандартные определения характеристик терминала
    Приложение F  Функциональные коды клавиатуры терминала

    Алфавитный указатель









                                    -- 9 --



        ЧАСТЬ I  EXPORT/IMPORT

    В Части  I  описываются  утилиты  Экспорт  (Export)  и Импорт
(Import). Эти утилиты реализуют дополнительные сервисные функции.
Утилита Экспорт переписывает данные из БД ORACLE в файлы ОС. Ути-
лита Импорт читает данные из этих файлов обратно в БД ORACLE.
    Утилиты Экспорт и Импорт используются в  первую  очередь  для
решения следующих задач:
    * архивация данных
    * обеспечение совместимости с новыми версиями СУРБД ORACLE
    * резервирование БД ORACLE
    * пересылка данных между однотипными базами
    В 6-й версии СУРБД ORACLE Вам предоставляется возможность уп-
равлять запуском  утилит Экспорт и Импорт,  используя в командной
строке различные параметры.
    Несмотря на  наличие метода интерактивного выбора параметров,
опытные пользователи предпочитают работать в режиме  задания  ко-
мандной строки, поскольку этот режим является более универсальным
и предоставляет новые возможности.

    В 6-й версии утилиты Экспорт  и  Импорт  позволяют  выполнять
следующие функции:
    * сохранение данных базы ORACLE в файлах ОС, существующих не-
      зависимо от самой базы
    * сохранение описаний объектов  базы  (таких,   как  таблицы,
      кластеры и индексы) с данными и без них
    * сохранение неактивных или временных данные
    * резервирование  только  тех таблиц,  информация в которых с момента 
      последнего экспортирования претерпевала  изменения, используя для  этого 
      пошаговое или кумулятивное экспортирование
    * восстановление случайно сброшенных таблиц, при условии, что
      их содержимое было заблаговременно экспортировано
    * восстановление  БД путем ее импортирования после выполнения
      процедуры пошагового или кумулятивного экспорта
    * выборочное  резервирование отдельных составляющих Вашей БД,
      требующее по сравнению с системным резервированием  гораздо
      меньших затрат внешней памяти
    * пересылка данных из старых версий СУРБД ORACLE в новые
    * пересылка данных между однотипными базами
    * пересылка данных из одной аппаратной и операционной среды в другую
    * пересылка данных от одного владельца к другому
    * экономия  пространства внешней памяти и сокращение фрагментации Вашей БД

















                                    -- 10 --



    ГЛАВА 1  ЭКСПОРТ ДАННЫХ

    В данной главе объясняется порядок использования утилиты Экспорт. Утилита  
      Экспорт  переписывает  данные,   хранящиеся в базе ORACLE, в файлы ОС в 
двоичном формате БД.  Вы можете хранить  эти файлы независимо  от базы и 
считывать их содержимое обратно в базу, используя утилиту Импорт (которая будет 
рассмотрена во второй главе).
    В настоящей главе рассматриваются следующие вопросы:
    * основные положения, объясняющие механизм экспортирования
    * режимы экспортирования
    * методы интерактивного выбора параметров и задания командной строки
    * параметры экспортирования
    * пошаговый и кумулятивный экспорт
    Материал изложения подкреплен примерами.

    Основные положения
    В данном разделе излагаются основные положения,   позволяющие понять
механизм экспортирования данных.

    Привилегии доступа
    Чтобы выполнять  экспортирование  данных из базы ORACLE,  Вам следует иметь
привилегию типа CONNECT или DBA.  Если  у  Вас  нет привилегии DBA, Вы можете
экспортировать только принадлежащие Вам таблицы.

    Подготовка к работе

Прежде чем запустить утилиту Экспорт на выполнение, убедитесь в наличии на
диске или ленте пространства, достаточного для записи экспортируемого файла.
Если пространства окажется недостаточно, экспортирование  будет  прекращено  в
связи с ошибкой записи.  Для того, чтобы оценить потребность в пространстве
выгрузки, можно использовать  размеры отдельных таблиц.  Размеры таблиц
содержатся в обзоре (view) USER_SEGMENTS в словаре данных СУРБД (более подробно
об этом см. в "ORACLE Database Administrator's Guide").

    Операции с файлами

    Утилита Экспорт переписывает данные из базы ORACLE в файлы ОС
(на диск или ленту),  называемые экспорт-файлами.  Вы можете хра-
нить экспорт-файлы в архиве или резервировать их для будущего им-
портирования. Каждый экспорт-файл имеет имя, идентифицирующее его
содержимое.

    Утилита Экспорт  создает  экспорт-файлы  в  символьных  кодах
(ASCII или EBCDIC),  принятых в главной системе. В случае необхо-
димости в процессе обработки экспорт-файла утилита Импорт  выпол-
няет автоматическую  трансляцию символьных кодов из одной системы
в другую. Информация в экспорт-файлах записана таким образом, что
она может быть прочитана только утилитой Импорт.

    Обработка ошибок

    В случае  возникновения  ошибки утилита Экспорт пытается про-
должить свою работу.  Если ошибка возникла на уровне строки, ути-
лита делает сообщение об ошибке,  переходит к следующей таблице и
продолжает работу.

    Ограничения


                                    -- 11 --



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

    Режимы экспортирования
    ----------------------

    Состав экспортируемой  информации определяется выбранным Вами
режимом экспортирования. Все пользователи могут работать по мень-
шей мере в двух режимах; пользователь DBA имеет возможность рабо-
тать в одном из следующих трех режимов:

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

    Объекты, экспортируемые в каждом из трех режимов, перечислены
в следующей таблице:

Режим таблицы           Режим пользователя      Режим  полной
                                                базы данных
---------------------------------------------------------------ДД
описания таблиц         описания таблиц         описания таблиц
данные таблиц           данные таблиц           данные таблиц
привилегии владельца    привилегии владельца    привилегии
индексы владельца       индексы владельца       индексы
табличные ограничения   табличные ограничения   табл.ограничения
                        кластеры                кластеры
                        связи БД                связи БД
                        обзоры                  обзоры
                        личные синонимы         все синонимы
                        последовательности      последовательности системные 

                                    -- 12 --



                                                привилегии описания табличных 
                                                пространств выделенные таблич- 
                                                ные пространства описания 
                                                сегментов восстановления опции 
                                                ведения системного журнала

    Примечание к таблице: Описания таблиц включают опции COMMENTS и AUDIT.

   Как пользоваться утилитой Экспорт
    --------------------------------

    Вы можете вызывать утилиту Экспорт  на  выполнение  одним  из
следующих двух способов:
    * Командой EXP имя_пользователя/пароль,  открывая  тем  самым
      сеанс интерактивного  выбора  параметров  по запросам самой утилиты.
    * Командой  EXP  имя_пользователя/пароль,  за которой следуют
      аргументы, управляющие запуском утилиты.
    Если Вы не укажете параметр имя_пользователя/пароль,  утилита
запросит его значение.  Таким способом Вы можете скрыть свой  па-
роль из поля зрения, поскольку утилита Экспорт не отображает дан-
ное значение при вводе.
    Утилита Экспорт предоставляет интерактивную помощь.  Если ко-
мандная строка,  введенная Вами,  имеет вид EXP HELP=Y, на экране
появится информация, представленная на Рисунке 1-1.

    РИСУНОК 1-1        Экран помощи утилиты Экспорт
Ъ---------------------------------------------------------------Дї
і You can let EXPORT prompt you for parameters by entering the   і
і EXP command followed by your username/password:                і
і                                                                і
і     Example: EXP SCOTT/TIGER                                   і
і                                                                і
і Or, you can control how EXPORT runs by entering the EXP commandі
і followed by various arguments. To specify parameters, you use  і
і keywords:                                                      і
і                                                                і
і     Format:  EXP KEYWORD=value or KEYWORD=(value1,value2,...,  і
і              valueN)                                           і
і     Example: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)    і
і                                                                і
і Keyword  Description (Default)      Keyword      Description   і
і                                                  (Default)     і
і ---------------------------------------------------------------і
і USERID   username/password          FULL         export entire і
і                                                  file          і
і BUFFER   size of data buffer        OWNER        list of owner і
і                                                  usernames     і
і FILE     output file (EXPDAT.DMP)   TABLES       list of table і
і                                                  names         і
і COMPRESS import into one extent (Y) RECORDLENGTH length of 10  і
і                                                  records       і
і GRANTS   export grants (N)          INCTYPE      incremental   і
і                                                  export type   і
і INDEXES  export indexes (Y)         RECORD       track incr.   і
і                                                  export (Y)    і
і ROWS     export data rows (Y)       PARFILE      parameter     і



                                    -- 13 --



і                                                  filename      і
і CONSTRAINTS export table constraints                           і
А---------------------------------------------------------------ДЩ

    Метод задания командной строки

    Опытные пользователи предпочитают задавать параметры  утилиты
в командной строке,  поскольку этот метод обеспечивает более гиб-
кий и полный контроль над процедурой экспортирования. Только этот
метод может  предоставить  Вам такие возможности,  как проведение
пошагового экспортирования и использование файла параметров.
    Если Вы  решили  задавать  параметры (аргументы)  в командной
строке, Вам следует для каждого  аргумента  утилиты  использовать
соответствующее ключевое слово. Общая форма командной строки:
    EXP КЛЮЧЕВОЕ_СЛОВО=значение или КЛЮЧЕВОЕ_СЛОВО=(значение) или
        КЛЮЧЕВОЕ_СЛОВО=(значение1, значение2, ...)
    Примеры задания аргументов в командной строке:
    EXP USERID=SCOTT/TIGER TABLES=(EMP,DEPT,PARTS) GRANTS=Y
    EXP SYSTEM/MANAGER FULL=Y FILE=NOV13.EXP
    Если команда  не помещается на одной строке и в Вашей системе
не поддерживается перенос на новую строку, Вы можете использовать
параметр PARFILE (рассматривается в следующем разделе).

    Ключевые слова утилиты Экспорт

    Перечень ключевых слов, с помощью которых Вы можете управлять
ходом выполнения процедуры экспортирования:

Ключевое слово   Значение по умолчанию   Описание
---------------------------------------------------------------ДД
USERID       не определено       Имя пользователя и пароль (разделенные 
                                 символом "наклонная  черта"), идентифицирующие 
                                 пользо- вателя, выполняющего экспорт данных.   
                                 Если эти значения определены  в первом 
                                 аргументе, ключевое слово USERID не требуется.

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

FILE         EXPDAT.DMP          Имя выводного файла, создаваемого утилитой 
                                 Экспорт.

GRANTS       N                   Флаг, показывающий, производить ли 
                                 экспортирование полномочий (привилегий).
INDEXES      Y                   Флаг, показывающий, производить ли 
                                 экспортирование индексов.
ROWS         Y                   Флаг, показывающий, производить ли  
                                 экспортирование строк таблиц.
CONSTRAINTS  N                   Флаг, показывающий, производить ли 
                                 экспортирование табличных  ограничений.
COMPRESS     Y                   Флаг, показывающий, производить ли во время 
                                 импортирования сжатие табличных  данных  в 
                                 один экстент.
FULL         N                   Флаг, показывающий, производить ли  


                                    -- 14 --



                                 экспортирование всей базы  данных.  Значение 
                                 FULL=Y  говорит о том, что экспортирование 
                                 ведется   в   режиме полной базы данных.

OWNER        текущий пользовательСписок  имен тех пользователей, чьи объекты 
                                 будут экспортироваться.  Значение OWNER= 
                                 =список_пользователей говорит о том,  что экс- 
                                 портирование ведется   в режиме пользователя.

TABLES       не определено       Список имен экспортируемых таблиц. Значение 
                                 TABLES=список_таблиц говорит о том,  что экс- 
                                 портирование ведется  в режиме таблицы.

RECORDLENGTH зависит от системы  Длина  записи  файла в байтах.

INCTYPE      не определено       Тип пошагового экспорта.  Возможные значения   
                                 - COMPLETE, CUMULATIVE   и INCREMENTAL.

RECORD       Y                   Флаг, показывающий,  регистрировать ли ход  
                                 пошагового экспортирования в базовых       
                                 таблицах SYS.INCVID и SYS.INCEXP.

PARFILE      не определено       Имя файла параметров экспортирования, 
                                 содержащего спецификации  одного или 
                                 нескольких па- раметров.

    Важные моменты:
    1. Параметр BUFFER (размер буфера)  задает число строк в мас-
       сиве, выбираемом процедурой экспортирования. Вы можете вы-
       числить размер буфера, исходя из следующего:
       размер_буфера = число_строк_в_массиве * максимальный_размер_строки

    2. По умолчанию во время импортирования  данные  сжимаются  в
       один экстент. Чтобы сохранить первоначальный размер исход-
       ного экстента, следует указать COMPRESS=N.

    3. Указание о том,  что экспортирование ведется в режиме таб-
       лицы, пользователя  или  полной  базы данных,  в командной
       строке производится с помощью ключевых слов TABLES=список_
       таблиц, OWNER=список_пользователей и FULL=Y, соответственно.
    4. В  режиме таблицы параметр GRANTS может указываться только
       в командной строке.
    5. При  работе в режиме интерактивного выбора параметров зна-
       чение параметра INDEXES автоматически устанавливается рав-
       ным Y.   В  режиме  командной  строки  значение  параметра
       INDEXES может быть установлено Вами.
    6. Значения  параметров CONSTRAINTS,  RECORDLENGTH,  INCTYPE,
       RECORD и PARFILE могут устанавливаться только в  командной строке.
    7. Параметр RECORDLENGTH нужен тогда,  когда Вы хотите перес-
       лать экспорт-файл в другую операционную систему, в которой
       для данного  параметра  используется  другое  значение  по
       умолчанию (см.  "ORACLE Installation and User's Guide" для
       Вашей системы),  или тогда, когда Вы хотите создать файл с
       другим размером записи.
    8. Параметр PARFILE особенно полезен в том случае, когда экс-
       порт производится  на регулярной основе.  Вы можете сохра-
       нить спецификации всех указанных Вами параметров в файле и
       в дальнейшем   запускать   утилиту  Экспорт  командой  EXP

                                    -- 15 --



       PARFILE=имя_файла. Файл параметров  имеет  вид  командного
       файла, состоящего из параметров, разделенных пробелами или
       символами возврата каретки, как в следующем примере:

       SYSTEM/MANAGER
       FULL=Y
       FILE=DBA.DMP
       GRANTS=Y
       INDEXES=Y

    Взаимоотношения между параметрами

    Задавая значения  аргументов  в  командной строке,  избегайте
указания противоречащих друг другу значений.  Например, поскольку
параметр TABLES  вступает в противоречие с параметром OWNER,  ко-
манда, подобная  следующей, приведет к прекращению процедуры экс-
портирования по ошибке:

    EXP SYSTEM/MANAGER OWNER=JONES TABLES=SCOTT.EMP

    Параметр OWNER точно так же вступает в противоречие со значе-
нием параметра FULL=Y.
    Несмотря на то,  что одновременное указание значений ROWS=N и
INCTYPE=INCREMENTAL является допустимым,  цель пошагового экспор-
тирования, состоящая  в резервировании таблиц, информация в кото-
рых с момента последнего экспортирования претерпевала  изменения,
при этом не будет достигнута.

    Метод интерактивного выбора параметров

    Утилита Экспорт может собирать часть вышеуказанной информации
с помощью серии интерактивных запросов, которые будут рассмотрены
ниже. (При этом пошаговое или кумулятивное экспортирование не мо-
жет выполняться в интерактивном режиме. Нельзя использовать и но-
вые параметры из файла параметров.)  Некоторые из запросов сопро-
вождаются подсказкой ответа по умолчанию; если ответ по умолчанию
Вас удовлетворяет,  нажмите клавишу ENTER или RETURN. Указав свой
собственный ответ,  введите знак точки  (.)   и  нажмите  клавишу
RETURN.
    Далее мы будем рассматривать типы запросов,  появляющихся при
использовании метода  интерактивного выбора параметров.  Во время
сеанса Вы можете получить не все запросы, поскольку появление или
непоявление одних  запросов  зависит  от  Ваших ответов на другие
запросы.
    Первый из запросов касается значения параметра BUFFER и опре-
деляет размер пространства,  необходимого для  буферизации  строк
данных. Для ускорения работы утилита Экспорт использует программу
выборки через массив. Значения по умолчанию обычно достаточно, но
главное, чтобы  размер буфера был не меньше размера самой длинной
строки. Если Вы укажете нулевое значение, за одно обращение будет
выбираться только одна строка.

    Enter array fetch buffer size: 4096 >

    В ответ  на  следующий  запрос  введите имя экспорт-файла (по
умолчанию - EXPDAT.DMP).  Если Вы введете только  одно  имя  (без
расширения), тип файла будет DMP.


                                    -- 16 --



    Export file: EXPDAT.DMP >

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

    E(ntire database), U(sers), or T(ables): U >

    Если на следующий вопрос Вы ответите "Да" (Y),  объем экспор-
тируемых полномочий  будет зависеть от режима экспортирования.  В
режиме полной базы экспортированию подлежат  все  полномочия  над
таблицей; в режиме пользователя экспортируются только те полномо-
чия, которые были выданы владельцем таблицы.

    Export grants (Y/N): N >

    Если такой же ответ Вы дадите на следующий вопрос,  данные  в
таблицах будут экспортироваться вместе с описаниями таблиц.  Если
же ответ будет "Нет" (N),  экспортироваться будут только описания таблиц.

    Export table data (Y/N): Y >

    Если "Да" (Y) Вы ответите на следующий вопрос, экспортируемые
из каждой  таблицы  данные  будут  при импортировании сжиматься в
один экстент. Если же ответ будет "Нет" (N), все таблицы при соз-
дании получат те же параметры хранения,  с которыми они были экс-
портированы.
    Несмотря на то, что сжатие данных производится при импортиро-
вании, пользователю нужно позаботиться об этом еще на этапе  экс-
портирования. Причиной такого положения является то,  что экспорт
данных зависит от Вашего ответа.  Таким образом, если при экспор-
тировании Вы заказали сжатие данных, импорт данных будет осущест-
вляться только в сжатой форме.

    Compress extents (Y/N): Y >

    В ответ на очередной запрос Вы можете указать имя  следующего
пользователя, объекты которого будут экспортироваться. Если же Вы
хотите завершить текущий сеанс экспортирования,  нажмите  клавишу
ENTER или RETURN.

    User to be exported: (RETURN to quit) >

    Если появится  следующий запрос,  Вам следует ввести имя оче-
редной экспортируемой таблицы.  Вы можете вводить имена таблиц  с
указанием и  без  указания имен их владельцев; если имя владельца
не указано,  по умолчанию в качестве него принимается имя пользо-
вателя, выполняющего экспортирование, или имя владельца последней
экспортировавшейся таблицы. Так, например, если пользователь BETH
имеет привилегии  DBA  и  ведет экспортирование в режиме таблицы,
утилита Экспорт трактует все таблицы как принадлежащие  пользова-
телю BETH до тех пор,  пока не будет указано другое имя пользова-
теля. Только пользователь с привилегией DBA может  экспортировать
таблицы, принадлежащие другому пользователю.

    Table to be exported: (RETURN to quit) >


                                    -- 17 --



    Примеры работы утилиты Экспорт
    ------------------------------
    Ниже будут рассмотрены примеры работы утилиты  Экспорт,   де-
монстрирующие использование  методов задания параметров в команд-
ной строке и их интерактивного выбора в режимах экспортирования -
полной базы, пользователя и таблицы.

    Примеры экспортирования в режиме полной базы данных

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

    EXP SYSTEM/MANAGER FULL=Y FILE=DBA.DMP GRANTS=Y INDEXES=Y

    То же самое методом интерактивного выбора параметров:

    EXP SYSTEM/MANAGER
    Export: Version 6.0 - Production on Fri Apr 1 18:15:32 1988
    Copyright (c)   Oracle  Corporation  1979,  1988.  All rights
    reserved.

    Connected to: ORACLE TPS V6.0 - Production
    Enter array fetch buffer size: 4096 > (RETURN)
    Export file: EXPDAT.DMP > dba.dmp
    E(ntire database), U(sers), T(ables): U > e
    Export grants (Y/N): N > y
    Export table data (Y/N): Y > y
    Compress extents (Y/N): Y > y

И в том,  и в другом случае в процессе экспортирования на экран выводится 
следующая информация:
    About to export the entire database ...
    . exporting user definitions
    . exporting tablespace definitions
    . exporting rollback segment definitions
    . exporting database links
    . exporting cluster definitions
    . about to export PUBLIC's tables
    . about to export SYSTEM's tables
    . about to export SCOTT's tables
    . exporting table                 DEPT      4 rows exported
    (и т.д., все таблицы до конца)

    Примеры экспортирования в режиме пользователя

    Экспортирование в режиме пользователя позволяет резервировать
данные, принадлежащие  одному пользователю. Так, пользователю DBA
может понадобиться резервирование таблиц пользователя, удаленного
из системы,  по состоянию, сложившемуся за какой-то период време-
ни. Режим пользователя удобен также для тех пользователей,  кото-
рым нужно  резервировать  свои  собственные  данные,  или для тех
пользователей, которым нужно выполнить пересылку объектов от  од-
ного владельца к другому.



                                    -- 18 --



    В данном примере пользователь JOE  выполняет  экспортирование
всех своих таблиц в режиме пользователя.
    Экспортирование методом  задания параметров в командной строkе:

    EXP JOEUSER/JOEPASS FILE=JOE.DMP GRANTS=Y INDEXES=Y

    То же самое методом интерактивного выбора параметров:

    EXP JOEUSER/JOEPASS
    Export: Version 6.0 - Production on Fri Apr 1 18:10:32 1988
    Copyright (c)   Oracle  Corporation  1979,  1988.  All rights reserved.

    Connected to: ORACLE TPS V6.0 - Production
    Enter array fetch buffer size: 4096 > (RETURN)
    Export file: EXPDAT.DMP > joe.dmp
    E(ntire database), U(sers), T(ables): U > u
    Export grants (Y/N): N > y
    Export table data (Y/N): Y > y
    Compress extents (Y/N): Y > y

    И в том,  и в другом случае в процессе экспортирования на эк-
ран выводится следующая информация:

    About to export JOE's objects ...
    . exporting database links
    . exporting cluster definitions
    . exporting sequence numbers
    . about to export JOE's tables
    . exporting table               PEOPLE    100 rows exported
    (и т.д., все таблицы пользователя JOE до конца)

    Примеры экспортирования в режиме таблицы

    В этом режиме Вы можете производить экспортирование всех таб-
личных данных или только описаний таблиц.  (Если данные таблиц не
экспортируются, в  этом  случае  экспортируется  описание  CREATE
TABLE вместе с полномочиями и индексами,  если таковые  определены.)
    Пользователь с привилегией DBA в этом режиме может  экспорти-
ровать таблицы, принадлежащие любому другому пользователю, указав
значение параметра TABLE=(имя_пользователя.имя_таблицы). Если имя
пользователя не указано, по умолчанию в качестве него принимается
имя владельца последней экспортировавшейся таблицы.   Если  перед
этим не  производилось  экспортирование таблиц,  в качестве имени
пользователя принимается имя лица, выполняющего процедуру. В сле-
дующем примере  в качестве имени пользователя по умолчанию прини-
маются: для таблицы A - SYSTEM, для таблицы C - SCOTT.

    EXP SYSTEM/MANAGER TABLES=(A, SCOTT.B, C, MARY.D)

    Пользователь, не имеющий привилегии DBA, может экспортировать
только свои собственные таблицы. Таблицы экспортируются с исполь-
зованием текущих значений параметров хранения. Если эти параметры
не изменялись командой ALTER TABLE,  их значения в точности соот-
ветствуют значениям, заданным при создании таблиц.
    Экспортирование в  режиме таблицы не включает в себя описаний
кластеров; в результате данные импортируются в некластеризованные



                                    -- 19 --



таблицы. Таким  образом,   Вы можете использовать утилиту Экспорт
для декластеризации таблиц,  что бывает нужно в том случае, когда
в Вашей базе возникает нехватка свободного пространства.

    Первый пример

    В первом примере пользователь с привилегией DBA выполняет эк-
спортирование указанных таблиц, принадлежащих двум пользователям.
    Экспортирование методом  задания параметров в командной строке:

    EXP SYSTEM/MANAGER  TABLES=(MORT.BAR, MARY.APP)  GRANTS=Y INDEXES=Y

То же самое методом интерактивного выбора параметров:
    EXP SYSTEM/MANAGER
    Export: Version 6.0 - Production on Fri Apr 1 10:18:23 1988
    Copyright (c)   Oracle  Corporation  1979,  1988.  All rights reserved.

    Connected to: ORACLE TPS V6.0 - Production
    Enter array fetch buffer size: 4096 > (RETURN)
    Export file: EXPDAT.DMP > (RETURN)
    E(ntire database), U(sers), T(ables): U > T
    Export table data (Y/N): Y > (RETURN)
    Compress extents (Y/N): Y > Y

В процессе  экспортирования  на экран выводится следующая информация:
    About to export specified tables ...
    Table Name: mort.bar       (только интерактивный сеанс)
    Current user changed to MORT
    . exporting table               BAR      2355 rows exported
    Table Name: mary.app       (только интерактивный сеанс)
    Current user changed to MARY
    . exporting table               APP     14947 rows exported
    Table Name: (RETURN)       (только интерактивный сеанс)
    [Утилита Экспорт ведет запись в файл]

    Второй пример

    В следующем примере пользователь LEWIS ведет  экспортирование
отдельных принадлежащих ему таблиц.
    Экспортирование методом  задания параметров в командной строке:

    EXP LEWIS/NEWYORK FILE=LEW.DMP TABLES=(CREDITS, DEBITS)

    То же самое методом интерактивного выбора параметров:

    EXP LEWIS/NEWYORK
    Export: Version 6.0 - Production on Fri Apr 1 10:43:23 1988
    Copyright (c)   Oracle  Corporation  1979,  1988.  All rights reserved.

    Connected to: ORACLE TPS V6.0 - Production
    Enter array fetch buffer size: 4096 > (RETURN)
    Export file: EXPDAT.DMP > lew.dmp
    U(sers), T(ables): U > T
    Export table data (Y/N): Y > Y
    Compress extents (Y/N): Y > Y

    В процессе  экспортирования  на экран выводится следующая информация:


                                    -- 20 --



    About to export specified tables ...
    Table Name: credits        (только интерактивный сеанс)
    . exporting table             CREDITS     423 rows exported
    Table Name: debits         (только интерактивный сеанс)
    . exporting table             DEBITS      423 rows exported
    Table Name: (RETURN)       (только интерактивный сеанс)
    [Утилита Экспорт ведет запись в файл]

    Пошаговый и кумулятивный экспорт
    --------------------------------
    В 6-й версии СУРБД ORACLE введены две новых разновидности эк-
спорта: пошаговый и кумулятивный (накопленный).  Третья разновид-
ность, полный экспорт, используется вместе с первыми двумя.
    Пошаговый экспорт состоит в резервировании только тех таблиц,
содержимое которых  с момента последнего экспортирования (пошаго-
вого, кумулятивного или полного)  претерпело изменение.  При этом
резервируются не одни только изменившиеся строки, а описание таб-
лицы и все ее содержимое. Пошаговый экспорт применяется, как пра-
вило, гораздо чаще, чем кумулятивный или полный.
    Кумулятивный экспорт состоит в резервировании только тех таб-
лиц, содержимое которых претерпело изменение с момента последнего
кумулятивного или полного экспортирования. Таким образом, кумуля-
тивный экспорт подобен пошаговому, но применяется реже. Вы можете
использовать эту разновидность экспорта для сжатия объема  файлов
пошагового экспорта;  после проведения кумулятивного экспорта не-
обходимость в хранении старых файлов пошагового экспорта  отпадает.
    Полный экспорт почти совпадает с экспортом  в  режиме  полной
БД, помимо  которого он включает в себя очистку всех таблиц,  ис-
пользуемых для трассировки процессов пошагового  и  кумулятивного
экспортирования.

    Преимущества

    Пошаговая и  кумулятивная разновидности экспорта помогают ре-
шать проблемы, стоящие перед пользователям с привилегией DBA (ад-
министраторами БД),  которые работают в многопользовательском ок-
ружении. Теперь,  например,  администраторы БД имеют  возможность
восстанавливать таблицы, случайно удаленные другими пользователями.

Указанные разновидности  экспорта обладают следующими преимуществами:
    * более удобные средства резервирования данных,
    * возможность резервирования откорректированных таблиц,  сок-
      ращение за счет этого объема экспорт-файлов,
    * сокращение  продолжительности   выполнения   процедуры   по
      сравнению с экспортом полной БД (если изменению подверглись
      не все таблицы базы),
    * актуализация  данных базы в результате импортирования (если
      после полного экспорта произвести пошаговый).
    Вы можете  выполнять пошаговый экспорт только в режиме полной
БД (FULL=Y); при этом экспортируются все  таблицы,   претерпевшие
изменения с момента последнего пошагового экспортирования.

    План проведения

    Кумулятивная и  пошаговая  разновидности экспорта требуют для
своего проведения периодического использования  полного  экспорта
базы, создающего основу для резервирования.  На этой основе поль-
зователь DBA может выполнять частое пошаговое  экспортирование  и

                                    -- 21 --



время от  времени  прибегать к кумулятивному экспортированию.  По
истечении определенного периода времени весь цикл следует  повто-
рить сначала, вновь произведя полный экспорт базы.
    Кумулятивный и пошаговый экспорт можно проводить по следующему плану.
    Предположим, что в  качестве  администратора  информационного
центра Вы выполняете следующие функции:
    * полный экспорт (X) каждые три недели
    * кумулятивный экспорт (C) каждую неделю
    * пошаговый экспорт (I) каждый вечер.
    При этом Вы придерживаетесь следующего плана:

Число
месяца:     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
            X I I I I I C I I  I  I  I  I  I  C  I  I  I  I  I  X

    Если бы на 10-й день Вы выполняли восстановление  данных,   в
качестве импортируемых данных Вы могли бы использовать:
    * результаты пошагового экспорта, произведенного 10 числа
    * результаты полного экспорта, произведенного 1 числа
    * результаты кумулятивного экспорта, произведенного 7 числа
    * результаты трех пошаговых экспортов,  произведенных 8,  9 и 10 числа 
    Результаты пошагового  экспорта,  производившегося со второго по шестое 
число,  становятся ненужными,  благодаря  проведению  7 числа кумулятивного  
экспорта,  включившего в себя все предыдущие результаты.  
Примечание: Порядок использования пошагового экспорта отражен в соответствующем 
            разделе второй главы.

    Состав экспортируемых данных

    Цель пошагового и кумулятивного экспорта состоит в  идентифи-
цировании и  выгрузке только тех объектов БД (кластеров,  таблиц,
обзоров и синонимов),  которые претерпели изменения за определен-
ный интервал времени. Каждая таблица связана с другими объектами,
которые Вы тоже можете экспортировать. Помимо самих данных, к ним
относятся индексы и полномочия.
    Структура полномочий по отношению к таблицам и  обзорам  экс-
портируется полностью из соответствующих базовых таблиц.  Индексы
экспортируются вместе с базовой таблицей, независимо от того, кем
эти индексы были созданы.
    Утилита Экспорт выполняет автоматическую выгрузку представле-
ния таблицы, согласованного по чтению, даже если при этом таблица
корректируется.
    Любая корректировка таблицы (командой SQL UPDATE,  INSERT или
DELETE) автоматически подготавливает таблицу для экспорта.

    Экспортированию также подлежат все изменения в данных,  явившиеся 
результатом следующих действий:
    * создания таблицы
    * изменения описания таблицы командой ALTER TABLE
    * добавления или корректировки комментариев (COMMENTS)
    * корректировки опций ведения регистрационного журнала
    * изменения полномочий (любого уровня)
    * добавления или удаления индексов
    * изменения  параметров  хранения  индексов  командой   ALTER INDEX.

Пошаговый и кумулятивный экспорт резервирует  следующие  данные:
    * все системные объекты (в том числе табличные  пространства,
      сегменты восстановления  и привилегии пользователей,  кроме

                                    -- 22 --



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

    Синтаксис командной строки

    Пошаговая, кумулятивная и полная разновидности экспорта могут
выполняться только пользователями,  имеющими привилегию DBA.  Ко-
мандная строка при этом имеет следующий синтаксис:

    EXP имя_пользователя/пароль INCTYPE=
    {INCREMENTALіCUMULATIVEіCOMPLETE}

    где:
    INCREMENTAL     Экспортируются  все объекты БД,  претерпевшие
                    изменения с момента последнего пошагового эк-
                    спортирования и   отслеженные    в    таблице
                    SYS.INCEXP (с  внесением  изменений в столбцы
                    таблицы CTIME, ITIME и EXPID).
    CUMULATIVE      Экспортируются  все объекты БД,  претерпевшие
                    изменения с момента последнего  кумулятивного
                    экспортирования и   отслеженные   в   таблице
                    SYS.INCEXP (с внесением изменений в столбцы
                    таблицы CTIME, ITIME и EXPID).
    COMPLETE        Экспортируются все объекты, при этом  таблицы
                    SYS.INCEXP и  SYS.INCVID очищаются.  (Простое
                    указание FULL=Y не очищает эти таблицы,  если
                    параметр INCTYPE при этом не указан.)
    Примечание: При выполнении пошагового или кумулятивного  экс-
порта в  таблицу SYS.INCFIL добавляется строка,  идентифицирующая
экспорт-файл и пользователя, выполняющего экспортирование.

    Пример пошагового экспорта

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

    EXP SYSTEM/MANAGER INCTYPE=INCREMENTAL

    Export: Version 6.0 - Production on Fri Apr 1 1:28:23 1988
    Copyright (c)   Oracle  Corporation  1979,  1988.  All rights reserved.

    Connected to: ORACLE TPS V6.0 - Production

    About to export the entire database ...
    . exporting user definitions
    . exporting tablespace definitions
    . exporting rollback segment definitions
    . exporting database links
    . exporting cluster definitions
    . about to export PUBLIC's tables
    . about to export SYSTEM's tables
    . exporting table                IAPAPP     2 rows exported
    . exporting table                IAPFLD     8 rows exported

                                    -- 23 --



    . exporting table                IAPTRG     0 rows exported
    ...
    . about to export SCOTT's tables
    . exporting table                EMP       22 rows exported
    . exporting table                BONUS      0 rows exported
    ...
    . about to export BLAKE's tables
    . about to export CLARK's tables
    . about to export SMITH's tables
    . exporting table                ERRORS   957 rows exported
    . exporting referential integrity constraints
    . exporting synonyms and views
    . exporting default and system auditing options
    . exporting information about dropped objects
    Export terminated successfully

    Таблицы, поддерживающие пошаговый и кумулятивный экспорт

    Пользователь SYS является  владельцем  трех  таблиц  (INCEXP,
INCFIL и INCVID), обеспечивающих работу утилит Экспорт/Импорт. Ни
одна из этих таблиц не подлежит видоизменению.
    Утилита Экспорт  имеет дело с таблицей,  отслеживающей перио-
дичность выгрузки таблиц специальными видами экспорта. Эта табли-
ца имеет имя SYS.INCEXP и состоит из следующих столбцов:
    OWNERID        Идентификатор владельца таблицы.
    NAME           Имя объекта.  Вместе  со значением OWNERID это
                   имя образует первичный ключ таблицы.
    TYPE           Тип объекта (код, обозначающий таблицу, обзор,
                   синоним или кластер)
    CTIME          Дата  последнего кумулятивного экспортирования
                   данного объекта.
    ITIME          Дата  последнего  пошагового   экспортирования
                   данного объекта.
    EXPID          Код идентификации пошагового или кумулятивного
                   экспорта, содержится также в таблице SYS.INCFIL.
    Пользователь DBA (администратор БД)  может  использовать  эту
информацию несколькими  способами.   Например,  по данным таблицы
SYS.INCEXP он может сгенерировать отчет,  описывающий  результаты
каждого экспортирования.
    В таблице SYS.INCFIL на каждый проведенный пошаговый и  куму-
лятивный экспорт заводится регистрационная запись, в которой экс-
порту присваивается уникальный код идентификации. Таблица состоит
из следующих столбцов:
    EXPID          Код идентификации пошагового или кумулятивного
                   экспорта, содержится    также    в     таблице
                   SYS.INCEXP.
    EXPFILE        Имя экспорт-файла.
    EXPDATE        Дата экспортирования.
    EXPUSER        Имя  пользователя,  выполнявшего экспортирова-
                   ние.
    EXPTYPE        Тип экспорта (пошаговый или кумулятивный).
    Третья таблица,  SYS.INCVID,  содержит один столбец для  кода
идентификации последнего выполненного экспорта.  Этот код исполь-
зуется при выборе кода идентификации очередного экспорта.





                                    -- 24 --



        ГЛАВА 2  ИМПОРТ ДАННЫХ
        ---------------------Д
    В данной  главе объясняется порядок использования утилиты Им-
порт. Утилита Импорт переписывает данные из экспорт-файлов в базу
ORACLE. Например,   если Вы выгрузили все свои таблицы и данные в
файл с именем MYDATA.EXP, импорт данных из этого файла будет сос-
тоять в восстановлении структуры каждой таблицы и загрузке ее содержимого.
    В настоящей главе рассматриваются следующие вопросы:
    * основные положения, объясняющие механизм импортирования
    * методы интерактивного выбора параметров и задания командной строки
    * параметры импортирования
    * пошаговый импорт
    Материал изложения подкреплен примерами.

    Основные положения
    ------------------
    В данном разделе излагаются основные положения,   позволяющие
понять механизм импортирования данных.

    Привилегии доступа

    Чтобы выполнять импортирование данных, Вам следует иметь при-
вилегию доступа к базе ORACLE как  типа  RESOURCE,   так  и  типа
CONNECT, а  также право доступа к экспорт-файлу. Вы можете выпол-
нять импортирование даже в том случае, если экспорт-файл был соз-
дан не Вами.  Однако, если экспорт-файл создан пользователем DBA,
его импортирование может выполняться только пользователем,  имею-
щим ту же привилегию.

    Параметры хранения

    Таблица импортируется  в свое первоначальное табличное прост-
ранство, используя  исходные параметры хранения.  Если  табличное
пространство больше   не  существует  или если у пользователя нет
привилегии доступа типа RESOURCE к табличному пространству,  сис-
тема выбирает для данного пользователя пространство по умолчанию.
Если у пользователя нет привилегии типа RESOURCE и к пространству
по умолчанию,  таблицы пользователя импортироваться не будут.  (О
том, как  воспользоваться этим для своей выгоды см. раздел "Реор-
ганизация табличных пространств" в главе 3.)
    Если на этапе экспортирования Вами выбрана возможность  "сжа-
тия экстентов",  параметры хранения таблиц большого размера пере-
настраиваются таким образом,  чтобы вся импортируемая  в  таблицу
информация размещалась в начальном сегменте.  Если Вы хотите сох-
ранить первоначальный размер сегмента,  откажитесь от сжатия дан-
ных при экспортировании.

    Операции с файлами

    Экспорт-файлы автоматически   создаются  в  символьных  кодах
(ASCII или EBCDIC),  принятых в той системе, где выполняется Экс-
порт. Считывая экспорт-файл, утилита Импорт выполняет необходимые
преобразования кодов автоматически.

    Обработка ошибок




                                    -- 25 --



    В случае  возникновения  ошибки утилита Импорт  пытается про-
должить свою работу.  Если ошибка возникла на уровне строки, ути-
лита делает сообщение об ошибке и продолжает обработку  остальной
части таблицы. Однако, если ошибка имеет фатальный характер (нап-
ример, выделено недостаточно памяти),  утилита Импорт  прекращает
обработку текущей таблицы и переходит к следующей таблице. Если в
командной строке указан параметр COMMIT=Y, утилита Импорт записы-
вает в таблицу порцию данных, прошедших импортирование, в против-
ном случае текущая таблица принимает первоначальный вид. (О пара-
метре COMMIT  см.   в  разделе  "Ключевые  слова  утилиты Импорт"
настоящей главы.)

    Ограничения

    Во время инициализации БД  ORACLE  создается  один  системный
сегмент восстановления (именуемый SYSTEM). СУБД ORACLE использует
этот сегмент только для тех транзакций, которые имеют дело с объ-
ектами, принадлежащими табличному пространству SYSTEM.  Это огра-
ничение не будет иметь для Вас значения,   если  Вы  импортируете
данные только в табличное пространство SYSTEM.  Однако,  если Вам
нужно произвести импортирование данных в другое табличное  прост-
ранство, Вы должны создать новый сегмент восстановления.  Подроб-
нее об этом см.  в главе 3,   раздел  "Создание  нового  сегмента
восстановления".

    Как пользоваться утилитой Импорт
    --------------------------------

    Вы можете вызывать утилиту Экспорт  на  выполнение  одним  из
следующих двух способов:
    * Командой IMP имя_пользователя/пароль,  открывая  тем  самым
      сеанс интерактивного  выбора  параметров  по запросам самой утилиты.
    * Командой  IMP  имя_пользователя/пароль,  за которой следуют
      аргументы, управляющие запуском утилиты.

    РИСУНОК 2-1    Экран помощи утилиты Импорт
Ъ---------------------------------------------------------------Дї
і You can let import prompt you for parameters by entering the   і
і IMP command followed by your username/password:                і
і     Example: IMP SCOTT/TIGER                                   і
і Or, you can control how import runs by entering the IMP commandі
і followed by various arguments. To specify parameters, you use  і
і keywords:                                                      і
і     Format:  IMP KEYWORD=value or KEYWORD=(value1,value2,...,  і
і              valueN)                                           і
і     Example: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N і
і                                                                і
і Keyword  Description (Default)      Keyword      Description   і
і                                                  (Default)     і
і ---------------------------------------------------------------і
і USERID   username/password          FULL         import entire і
і                                                  file (N)      і
і BUFFER   size of data buffer        FROMUSER     list of owner і
і                                                  usernames     і
і FILE     output file (EXPDAT.DMP)   TOUSER       list of       і
і                                                  usernames     і
і SHOW     just list file contents(N) TABLES       list of table і
і                                                  names         і

                                    -- 26 --



і IGNORE   ignore create errors (Y)   RECORDLENGTH length of 10  і
і                                                  records       і
і GRANTS   import grants (N)          INCTYPE      incremental   і
і                                                  import type   і
і INDEXES  import indexes (Y)         COMMIT       commit array  і
і                                                  insert (N)    і
і ROWS     import data rows (Y)       PARFILE      parameter     і
і                                                  filename      і
А---------------------------------------------------------------ДЩ

    Если Вы не укажете параметр имя_пользователя/пароль,  утилита
запросит его значение.  Таким способом Вы можете скрыть свой  па-
роль из поля зрения,  поскольку утилита Импорт не отображает дан-
ное значение при вводе.
    Утилита Импорт предоставляет интерактивную помощь.  Если ко-
мандная строка,  введенная Вами,  имеет вид IMP HELP=Y, на экране
появится информация, представленная на Рисунке 2-1.

    Метод задания командной строки

    Опытные пользователи  предпочитают задавать параметры утилиты
в командной строке,  поскольку этот метод обеспечивает более гиб-
кий и полный контроль над процедурой импортирования.  Если Вы ре-
шили задавать параметры (аргументы)  в командной строке, Вам сле-
дует для   каждого аргумента утилиты использовать соответствующее
ключевое слово. Общая форма командной строки:

    IMP КЛЮЧЕВОЕ_СЛОВО=значение или КЛЮЧЕВОЕ_СЛОВО=(значение) или
        КЛЮЧЕВОЕ_СЛОВО=(значение1, значение2, ...)
    Примеры задания аргументов в командной строке:
    IMP USERID=SCOTT/TIGER IGNORE=Y FULL=N TOUSER=JONES
    IMP SYSTEM/MANAGER FULL=Y FILE=NOV13.EXP IGNORE=N GRANTS=N

    Если команда  не помещается на одной строке и в Вашей системе
не поддерживается перенос на новую строку, Вы можете использовать
параметр PARFILE (рассматривается в следующем разделе).

    Ключевые слова утилиты Импорт

    Перечень ключевых слов, с помощью которых Вы можете управлять
ходом выполнения процедуры импортирования:

Ключевое слово   Значение по умолчанию   Описание
---------------------------------------------------------------ДД
USERID       не определено      Имя пользователя и пароль (разделенные символом 
                                "наклонная  черта"), идентифицирующие 
                                пользователя, выполняющего импорт данных.  Если 
                                эти значения определены в первом аргументе, 
                                ключевое слово USERID не требуется.

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

FILE         EXPDAT.DMP         Имя экспорт-файла, загружаемого утилитой 
                                Импорт.




                                    -- 27 --



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

IGNORE       Y                  Флаг, показывающий,  игнорировать ли 
                                возникновение ошибок создания в том случае, 
                                когда создаваемый объект уже  существует.

GRANTS       Y                  Флаг, показывающий, производить ли 
                                импортирование полномочий (привилегий).

INDEXES      Y                  Флаг, показывающий, производить ли 
                                импортирование индексов.

ROWS         Y                  Флаг, показывающий, производить ли 
                                импортирование строк таблиц.

FULL         N                  Флаг, показывающий, производить ли импортирова
                                ние всей базы  данных.  Значение FULL=N  
                                говорит о том,  что имена импор- тируемых 
                                объектов  будут сообщены по запросу утилиты.

FROMUSER     не определено      Список  имен тех пользователей, чьи объекты 
                                будут импортироваться.

TOUSER       не определено      Список имен тех пользователей, кому 
                                предназначены импортируемые данные.

TABLES       не определено      Список имен  импортируемых таблиц.     
                                Указание звездочки (*)   означает 
                                импортирование всех таблиц.

RECORDLENGTH зависит от системы Длина  записи  файла   в байтах.

INCTYPE      не определено      Тип пошагового  импорта.  Возможные значения - 
                                SYSTEM и RESTORE.

COMMIT       N                  Флаг, показывающий, регистрировать ли изменения 
                                в базе после каждого добавления данных. По 
                                умолчанию изменения  ре- гистрируются после  
                                загрузки каждой таблицы.

PARFILE      не определено      Имя файла параметров импортирования, содержа- 
                                щего спецификации одного или нескольких 
                                параметров.

    Важные моменты:
    1. Параметр BUFFER (размер буфера)  задает число строк в мас-
       сиве, выбираемом процедурой импортирования. Вы можете  вы-
       числить размер буфера, исходя из следующего:
       размер_буфера =          число_строк_в_массиве           *
       максимальный_размер_строки

    2. Если с существующей таблицей не связан какой-либо уникаль-
       ный индекс и если Вы указали параметр IGNORE=Y,  выгружен-
       ные из таблицы строки при  импортировании  могут  дублиро-

                                    -- 28 --



       ваться. К  пошаговому  импорту это не имеет отношения; при
       пошаговом импортировании загружаемые объекты прежде удаля-
       ются из системы.

    3. При интерактивном  выборе  параметров  значение  параметра
       INDEXES автоматически  принимается  равным  Y (выгруженные
       индексы всегда загружаются).  При задании параметров в ко-
       мандной строке  значение параметра INDEXES может быть выб-
       рано Вами.

    4. Значения параметров TOUSER,  RECORDLENGTH, INCTYPE, COMMIT
       и PARFILE могут указываться только в командной строке.

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

    6. Несмотря на то, что при экспортировании указание имен таб-
       лиц может  сопровождаться  указанием  имен  их  владельцев
       (например, SCOTT.EMP),  при импортировании это не допуска-
       ется. В следующем примере параметр TABLES задан неправиль-
       но:
       IMP SYSTEM/MANAGER TABLES=(SCOTT.EMP,SCOTT.DEPT)
       Если Вы хотите загрузить таблицы,   принадлежащие  другому
       пользователю, укажите   значения   параметров  FROMUSER  и
       TABLES, как это показано в следующем примере:
       IMP SYSTEM/MANAGER FROMUSER=SCOTT TABLES=(EMP,DEPT)

    7. Параметр RECORDLENGTH нужен тогда,  когда Вы  импортируете
       данные в другую операционную систему,  в которой использу-
       ется другое значение параметра по умолчанию (см.   "ORACLE
       Installation and User's Guide" для Вашей системы).

    8. Указав в командной строке значение  COMMIT=Y,   Вы  можете
       производить импортирование  по  частям.  Если при загрузке
       таблицы возникает фатальная ошибка,  все вызванные загруз-
       кой строк  к этому моменту изменения регистрируются в базе
       (и восстановление не производится).  При значительных раз-
       мерах таблиц  это  может  привести к существенной экономии
       времени. Если указано значение COMMIT=N, при возникновении
       ошибки восстанавливается исходное состояние таблицы.

    9. Параметр PARFILE используется в частности в  тех  случаях,
       когда импортирование  данных выполняется на регулярной ос-
       нове. Вы можете сохранить спецификации всех указанных Вами
       параметров в файле и в дальнейшем запускать утилиту Импорт
       командой IMP PARFILE=имя_файла.  Файл параметров имеет вид
       командного файла,   состоящего из параметров,  разделенных
       пробелами или символами возврата каретки,  как в следующем
       примере:
       SYSTEM/MANAGER
       FULL=Y
       FILE=DBA.EXP
       IGNORE=N
       GRANTS=N

    Метод интерактивного выбора параметров

                                    -- 29 --



    Утилита Импорт может собирать часть вышеуказанной  информации
с помощью серии интерактивных запросов, которые будут рассмотрены
ниже. (При  этом пошаговое импортирование не может выполняться  в
интерактивном режиме.    Нельзя использовать и новые параметры из
файла параметров.)  Некоторые из запросов сопровождаются подсказ-
кой ответа по умолчанию; если ответ по умолчанию Вас удовлетворя-
ет, нажмите клавишу ENTER или RETURN.
    Первый из запросов касается полного имени экспорт-файла, заг-
ружаемого утилитой Импорт,   которое  Вы  можете  указать  в  том
случае, если оно отличается от имени файла по умолчанию. Вы може-
те загружать данные из экспорт-файла, созданного другим пользова-
телем, если Вы имеете необходимые права доступа к этому файлу.

    Import file: EXPDAT.DMP >

    Следующий запрос  касается размера буфера,  используемого для
загрузки таблиц. Значения по умолчанию обычно достаточно, однако,
если загружаемые таблицы содержат столбцы типа LONG, это значение
может быть увеличено. Размер буфера должен быть не меньше размера
самой длинной строки.

    Enter insert buffer size (minimum is 4096): 10240 >

    Следующий запрос касается необходимости просмотра содержимого
экспорт-файла (если,  например, возникает вопрос, содержится ли в
файле нужная Вам таблица или нет). Для указания этой необходимос-
ти в режиме командной строки используется параметр SHOW.  Если Вы
дадите ответ "Нет" (N), утилита перейдет к следующему вопросу.
    Если Вы ответите "Да" (Y),  вместо импортирования  строк  Вам
будут заданы вопросы,  уточняющие, просматривать ли весь файл или
только отдельные его части. Утилита отображает содержащиеся в эк-
спорт-файле SQL-предложения  в том порядке,  в котором они должны
быть выполнены при импортировании.

    List contents of import file only (Y/N): N >

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

    Если Вы  дадите  отрицательный  ответ (N),  при возникновении
ошибки создания таблицы строки загружаться не будут. (Предполага-
емой причиной  возникновения  этой  ошибки является существование
таблицы к моменту вызова утилиты Импорт; Ваш ответ служит  указа-
нием на то, что в этом случае должна возникнуть ошибка.)

    Ignore create errors due to object existence (Y/N): Y >



                                    -- 30 --



В некоторых  ситуациях может потребоваться утвердительный ответ:
    * Если импортирование ведется в базу данных,  имеющую ограни-
      ченное свободное пространство,  следует позаботиться о сжа-
      тии данных  каждой крупной таблицы в один экстент или о пе-
      ремещении таблицы в другое табличное пространство. Если эк-
      стенту не хватит смежных блоков,  Вы получите следующее сообщение:
      ORA-01547: failed   to  allocate  extent  of  size  num  in
      tablespace 'name'
      (ORA-01547: не хватает места для размещения экстента разме-
      ром num в табличном пространстве с именем 'name')
      По завершении  сеанса  импортирования  Вам  следует вручную
      создать соответствующие таблицы с соответствующими парамет-
      рами хранения  и  повторить  импорт таблиц с утвердительным
      ответом на вышеуказанный вопрос.  Поскольку  все  остальные
      таблицы во время предыдущего сеанса были успешно загружены,
      на вопрос "Import entire export file ?" (Загружать  ли  все
      содержимое экспорт-файла ?) следует ответить "Нет" (N).

    * Ту же самую процедуру следует проделать в случае  возникно-
      вения следующей ошибки:
      ORA-01556: maximum number of extents exceeded
      (ORA-01556: превышено максимально-допустимое количество экстентов)
    Если на   следующий   вопрос   Вы  ответите  "Да"  (Y),   все
экспортированные полномочия будут загружены. Если экспортирование
велось в режиме пользователя,  в экспорт-файле содержатся и будут
загружены только полномочия первого уровня (то есть те,   которые
были выданы владельцем); если экспортирование проводилось в режи-
ме полной базы,  в экспорт-файле содержатся все полномочия, в том
числе и  полномочия  следующих  уровней (выданные пользователями,
которые получили привилегию по опции GRANT).

    Import grants (Y/N): Y >

    По умолчанию строки данных в процессе импортирования загружа-
ются. Однако,   если  на следующий вопрос будет дан отрицательный
ответ, утилита Импорт исполнит команды описания данных, такие как
CREATE TABLE и CREATE VIEW,  но не будет загружать строки данных.
Тем не менее, индексы и полномочия будут созданы.

    Import table data (Y/N): Y >

    Следующий запрос предоставляет Вам возможность выбирать,  ка-
кие таблицы будут загружаться из экспорт-файла.  Если Вы ответите
"Да" (Y)  (ответ по умолчанию), загружаться будут все экспортиро-
ванные таблицы; вопросы на этом прекратятся и после загрузки фай-
ла (целиком)  работа утилиты завершится.  Если Вы ответите  "Нет"
(N), утилита  запросит у Вас имя пользователя и имена загружаемых
таблиц, принадлежащих этому пользователю.

    Если в  какой-либо  строке  будут обнаружены неверные данные,
содержимое таблицы примет первоначальный вид.  (Избежать этого  в
режиме командной строки можно указанием значения COMMIT=Y.)  Если
во время загрузки одной таблицы возникает фатальная ошибка,  ути-
лита Импорт переходит к следующей таблице. (Причинами возникнове-
ния фатальных ошибок являются внутренние проблемы, а также исчер-
пание имеющихся ресурсов,  в частности, ресурсов памяти.) Измене-
ния в базе регистрируются после каждой таблицы.


                                    -- 31 --



    Import entire export file (Y/N): Y >

    Примеры работы утилиты Импорт
    -----------------------------
    Ниже будут рассмотрены примеры работы утилиты Импорт, демонс-
трирующие использование методов задания  параметров  в  командной
строке и их интерактивного выбора.

    Пример импортирования отдельных таблиц указанного пользователя

    В следующем примере,  используя файл, полученный в результате
экспортирования в режиме полной БД, администратор БД (DBA) импор-
тирует отдельные таблицы для указанного пользователя. Задавая па-
раметры в  режиме командной строки,  Вы указываете значение пара-
метра TABLES   в  формате  TABLES=(имя_пользователя.имя_таблицы).
Если имя   пользователя не указано,  по умолчанию в качестве него
принимается имя владельца последней импортированной таблицы.  Для
первой таблицы   в  качестве этого имени по умолчанию принимается
имя пользователя, выполняющего импортирование. В следующем приме-
ре для  таблиц  PEOPLE  и THINGS в качестве имени пользователя по
умолчанию принимается имя 'JOE'.
    Импортирование методом задания параметров в командной строке:

    IMP SYSTEM/MANAGER  FILE=DBA.DMP TABLES=(JOE.PLACES,  PEOPLE, THINGS)

    То же самое методом интерактивного выбора параметров:

    IMP SYSTEM/MANAGER
    Import: Version 6.0 - Production on Fri Apr 1 11:58:47 1988
    Copyright (c)   Oracle  Corporation  1979,  1988.  All rights reserved.

    Connected to: ORACLE TPS V6.0 - Production
    Import file: EXPDAT.DMP > dba.dmp
    Enter insert buffer size (minimum is 4096): 10240 > (RETURN)
    Export created by ORACLE version EXPORT: V6.0

    List contents of import file only (Y/N): N > (RETURN)
    Ignore create  errors  due  to  object  existence (Y/N):  Y > (RETURN)
    Import grants (Y/N): Y > (RETURN)
    Import table data (Y/N): Y > (RETURN)
    Import entire export file (Y/N): Y > n
    Username: joe
    Enter list of table names. Null list means all tables for user
    Enter table name or . if done: places
    Enter table name or . if done: people
    Enter table name or . if done: things
    Enter table name or . if done: .

    В процессе импортирования на экран выводится следующая информация:

    . importing JOE's objects into JOE
    .. importing table "PLACES"                50 rows imported
    .. importing table "PEOPLE"                100 rows imported
    .. importing table "THINGS"                666 rows imported

    Пример импортирования таблиц,  выгруженных другим пользователем



                                    -- 32 --



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

    IMP KEVIN/NEWYORK    FILE=ROSEMARY.DMP    TABLES=(APPLICANTS, CLIENTS)

    То же самое методом интерактивного выбора параметров:

    IMP KEVIN/NEWYORK

    Import: Version 6.0 - Production on Fri Apr 1 12:56:47 1988
    Copyright (c)   Oracle  Corporation  1979,  1988.  All rights
    reserved.

    Connected to: ORACLE TPS V6.0 - Production
    Import file: EXPDAT.DMP > rosemary.dmp
    Enter insert buffer size (minimum is 4096): 10240 > (RETURN)
    Export created by ORACLE version EXPORT: V6.0

    Warning: the objects were exported by ROSEMARY, not by you

    List contents of import file only (Y/N): N > (RETURN)
    Ignore create  errors  due  to  object  existence (Y/N):  Y >  (RETURN)
    Import grants (Y/N): Y > (RETURN)
    Import table data (Y/N): Y > (RETURN)
    Import entire export file (Y/N): Y > n
    Username: rosemary
    Enter list of table names. Null list means all tables for user
    Enter table name or . if done: applicants
    Enter table name or . if done: clients
    Enter table name or . if done: .

    В процессе импортирования на экран выводится следующая информация:
    . importing ROSEMARY's objects into KEVIN
    .. importing table "APPLICANTS"            28 rows imported
    .. importing table "CLIENTS"               102 rows imported

    Пример импортирования таблиц одного пользователя другому

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

    IMP SYSTEM/MANAGER       FILE=SCOTT.DMP        FROMUSER=SCOTT
    TOUSER=ROSEMARY TABLES=(*)     ("звездочка" обозначает импор-
                                    тирование всех таблиц)

В процессе импортирования на экран выводится следующая информация:

    Import: Version 6.0 - Production on Fri Apr 1 10:16:44 1988
    Copyright (c)   Oracle  Corporation  1979,  1988.  All rights reserved.

    Connected to: ORACLE TPS V6.0 - Production





                                    -- 33 --



    Export created by ORACLE version EXPORT: V6.0
    . importing user SCOTT into ROSEMARY
    .. importing table "BONUS"                 32 rows imported
    .. importing table "SALGRADE"              10 rows imported

    Пошаговый импорт
    ----------------
    Синтаксис командной строки
    Выполнять пошаговое импортирование имеют право только пользователи с 
привилегией DBA. При этом командная строка имеет следующий синтаксис:

    IMP имя_пользователя/пароль INCTYPE={SYSTEMіRESTORE}

    где:
    SYSTEM        Импортирование  системных  объектов  (объектов,
                  принадлежащих пользователю SYS) с использовани-
                  ем самой последней версии пошагового   экспорт-
                  файла. В  этом режиме пользовательские данные и
                  объекты не импортируются.  Пошаговое импортиро-
                  вание данного типа должно выполняться в качест-
                  ве первого шага при восстановлении БД на основе
                  использования результатов полного, кумулятивно-
                  го и пошагового экспорта.

    RESTORE       Импортирование всех пользовательских объектов и
                  данных, претерпевших изменения с  момента  пос-
                  леднего экспортирования,    с  обработкой  экс-
                  порт-файлов в хронологическом порядке.

    Загрузка результатов пошагового или кумулятивного экспортирования

    При восстановлении  объектов базы первым делом следует выпол-
нить загрузку системных объектов (INCTYPE=SYSTEM),  используя для
этого самую последнюю версию пошагового экспорт-файла. Затем про-
изводится загрузка данных из экспорт-файлов  с  их  обработкой  в
хронологическом порядке (INCTYPE=RESTORE), основанном на дате эк-
спортирования. При этом используется следующая последовательность
импортирования данных:
    1. Импортирование содержимого самой последней версии  пошаго-
       вого экспорт-файла (или кумулятивного экспорт-файла,  если
       пошаговое экспортирование не проводилось).
    2. Импортирование  содержимого самой последней версии полного
       экспорт-файла.
    3. Импортирование  содержимого всех кумулятивных экспорт-фай-
       лов, созданных позже последней версии полного экспорт-файла.
    4. Импортирование содержимого всех пошаговых  экспорт-файлов,
       созданных позже  последней  версии  кумулятивного экспорт- файла.

    Предположим, например, что Вы располагаете:
    * одним полным экспорт-файлом с именем X1
    * двумя кумулятивными экспорт-файлами с именами C1 и C2
    * тремя пошаговыми экспорт-файлами с именами I1, I2 и I3,
    тогда Вы должны выполнять импортирование в следующем порядке:

    IMP SYSTEM/MANAGER INCREMENTAL=SYSTEM  FULL=Y FILE=I3
    IMP SYSTEM/MANAGER INCREMENTAL=RESTORE FULL=Y FILE=X1
    IMP SYSTEM/MANAGER INCREMENTAL=RESTORE FULL=Y FILE=C1
    IMP SYSTEM/MANAGER INCREMENTAL=RESTORE FULL=Y FILE=C2

                                    -- 34 --



    IMP SYSTEM/MANAGER INCREMENTAL=RESTORE FULL=Y FILE=I1
    IMP SYSTEM/MANAGER INCREMENTAL=RESTORE FULL=Y FILE=I2
    IMP SYSTEM/MANAGER INCREMENTAL=RESTORE FULL=Y FILE=I3

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


















































                                    -- 35 --



        ГЛАВА 3  ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ ОБ ЭКСПОРТЕ/ИМПОРТЕ
        ------------------------------------------------------------Д

    В данной главе содержатся полезные советы по повышению эффек-
тивности использования утилит  Экспорт/Импорт.   Обсуждается  ряд
проблем, расширяющих Ваш кругозор и помогающих Вам находить выход
в разнообразных ситуациях,  возникающих при работе  с  указанными
утилитами.
    В настоящей главе рассматриваются следующие вопросы:
    * совместимость экспорт-файлов версии 5 с Импортом версии 6
    * создание  таблиц вручную непосредственно перед импортированием
    * реорганизация табличных пространств
    * создание новых сегментов восстановления
    * экспортирование/импортирование данных с утилитой SQL*Net
    * импортирование таблиц большого размера
    * импортирование данных типа LONG
    * сокращение фрагментации БД
    * обработка сообщений об ошибках.

    Использование экспорт-файлов версии 5
    -------------------------------------
    Поскольку в  6-й  версии СУБД ORACLE структура базы данных по
сравнению с 5-й версией претерпела изменения, в целях обеспечения
совместимости экспорт-файлов  старой версии с Импортом новой вер-
сии необходимо проведение  некоторой  адаптации.   Данный  вопрос
раскрывается в следующих положениях:
    1. Поскольку в 6-й версии утилита Импорт стремится установить
       соответствие между  разделами и табличными пространствами,
       она предпринимает попытку загрузить каждую таблицу в  таб-
       личное пространство,   имеющее  то  же имя,  что и раздел,
       содержащий таблицу в 5-й версии. Если пространства с таким
       именем нет, таблица загружается в то пространство, которое
       выбирается для данного пользователя по умолчанию.
    2. Индексы  импортируются  в то же самое табличное пространс-
       тво, что и соответствующие базовые таблицы, при этом пара-
       метры хранения  для  каждого  индекса являются параметрами
       хранения для данного пространства по умолчанию.
    3. Поскольку  в 6-й версии для каждого кластера требуется яв-
       ное создание кластерного индекса, утилита Импорт автомати-
       чески производит следующие действия:
       * после загрузки кластера и его таблиц создает  кластерный индекс
       * присваивает индексу имя,  состоящее из имени кластера и приставки I_
       * помещает кластерный индекс в то же табличное  пространс-
         тво, что и сам кластер.
    4. Указание параметра TOUSER не допускается.
    5. Если Вы располагаете таблицами,  созданными ранее,  и если
       Вами выбрано значение параметра IGNORE=Y, порядок располо-
       жения столбцов менять нельзя.
    Утилита Импорт 6-й версии выполняет только  чтение   экспорт-
файлов, созданных в СУРБД ORACLE версии 5.0 и более поздних.

    Создание таблиц вручную непосредственно перед импортированием
    -------------------------------------------------------------

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

                                    -- 36 --



Например, Вы  можете увеличивать размеры столбцов и менять их по-
рядок, но не можете добавлять столбцы типа NOT NULL, менять имена
столбцов или тип размещаемых в них данных на несовместимый  (нап-
ример, LONG на NUMBER).

    Реорганизация табличных пространств
    -----------------------------------

    Если для доступа к табличному пространству пользователю выда-
на привилегия RESOURCE,  таблицы пользователя загружаются в то же
самое табличное пространство, откуда они были экспортированы. Од-
нако, если  табличное  пространство по каким-либо причинам больше
не существует или если у пользователя  нет  привилегии  RESOURCE,
система выбирает  для  этого пользователя пространство по умолча-
нию. Если у пользователя нет привилегии RESOURCE и к пространству
по умолчанию,   таблицы  пользователя  не загружаются.  Вы можете
обойти это обстоятельство, переслав таблицы пользователя из одно-
го табличного пространства в другое.
    Предположим, что Вы - администратор БД,  собирающийся  произ-
вести полный экспорт базы и перенести таблицы пользователя JOE из
пространства A в пространство B. Выполните следующие шаги:
    1. Снимите  у  пользователя JOE привилегию доступа RESOURCE к
       пространству A и к пространству по умолчанию.
    2. Выполните полный экспорт БД.
    3. Выполните полный импорт БД.  (Таблицы пользователя JOE  не
       будут загружены.)
    4. Выдайте пользователю JOE привилегию  доступа  RESOURCE  по
       отношению к пространству B и сделайте это пространство его
       табличным пространством по умолчанию.
    5. Загрузите таблицы пользователя JOE, используя файл, содер-
       жащий результаты экспортирования полной БД.  (По умолчанию
       утилита Импорт  загрузит таблицы пользователя JOE в прост-
       ранство B.)
    Теперь предположим,   что Вы хотите получить тот же самый ре-
зультат, не выполняя полный экспорт базы.   Проделайте  следующие
действия:
    1. Снимите  у  пользователя JOE привилегию доступа RESOURCE к
       пространству A и к пространству по умолчанию.
    2. Выполните экспортирование таблиц пользователя JOE.
    3. Удалите таблицы пользователя JOE из БД.
    4. Выдайте пользователю JOE привилегию  доступа  RESOURCE  по
       отношению к пространству B и сделайте это пространство его
       табличным пространством по умолчанию.
    5. Загрузите таблицы пользователя JOE.  (По умолчанию утилита
       Импорт загрузит таблицы пользователя  JOE  в  пространство B.)

    Удаление табличного пространства

    Вы можете удалить табличное пространство, выполнив полный эк-
спорт базы и создав пустой (размером 0 блоков) файл с именем уда-
ляемого пространства.   Во  время импортирования команда создания
соответствующего пространства CREATE TABLESPACE не будет выполне-
на (поскольку  пространство  должно занимать по меньшей мере один
блок), тем самым восстановление ненужного больше пространства  не
произойдет. Все  объекты  из  этого  пространства  загружаются  в
пространства по умолчанию, принадлежащие владельцам объектов.



                                    -- 37 --



    Создание нового сегмента восстановления
    ---------------------------------------

    Во время  инициализации  БД перед выполнением полного импорта
базы система создает единственный системный сегмент  восстановле-
ния (именуемый   SYSTEM).  Этот сегмент используется системой при
обработке только тех транзакций, которые имеют дело с объектами в
табличном пространстве SYSTEM. Если Вы хотите загружать объекты в
другое табличное пространство,  Вам следует создать новый сегмент
восстановления. В  противном случае Вы получите следующее сообще-
ние об ошибке:

    ORA-1552: cannot use system rollback segment  for  non-system
    tablespace 'name'
    (ORA-1552: не могу создать системный  сегмент  восстановления
    для несистемного табличного пространства с именем 'name')

    Для того,  чтобы во время инициализации БД ORACLE создать но-
вый сегмент восстановления, необходимо выполнить следующие шаги:
    1. Создать  новую  или  переинициализировать  существующую БД
       (инструкции см.  в "ORACLE Installation and User's  Guide"
       для Вашей системы).  Перед переинициализацией существующей
       базы не забудьте закрыть ее и сделать резервную копию.
    2. Обеспечить  инсталляцию  необходимых  экспортных обзоров и
       словаря БД (см. "ORACLE Installation and User's Guide").
    3. Создать  новый  сегмент  восстановления в табличном прост-
       ранстве SYSTEM (первый несистемный сегмент  восстановления
       должен находиться в табличном пространстве SYSTEM, осталь-
       ные - необязательно).  Новый сегмент восстановления  может
       быть общим (public) или частным (private).
    4. Закрыть и демонтировать БД,  после чего завершить работу с
       экземпляром базы.   (Эти функции реализуются с помощью ко-
       манды администратора SHUTDOWN.)
    5. Занести  имя нового сегмента восстановления в массив пара-
       метров ROLLBACK_SEGMENTS в INIT.ORA  для  того,   чтобы  в
       дальнейшем оно распознавалось системой.  (Этот шаг необхо-
       дим в отношении частных сегментов и необязателен в отноше-
       нии общих сегментов.)
    6. Запустить экземпляр СУБД,  смонтировать  и  открыть  базу.
       (Эти функции  реализуются с помощью команды администратора
       STARTUP OPEN имя_базы.)
    7. Запустить утилиту Импорт.

    Пример выполнения указанных шагов:
    SQLDBA
    SQLDBA> STARTUP NOMOUNT
    SQLDBA> CREATE DATABASE MY_DB ...
    SQLDBA> CREATE PUBLIC ROLLBACK SEGMENT
         2  RBSEG2
         3  TABLESPACE SYSTEM
         4  STORAGE (INITIAL 50K NEXT 50K MINEXTENTS 2
         5  PCTINCREASE 0);
    SQLDBA> SHUTDOWN
    SQLDBA> STARTUP OPEN MY_DB
    SQLDBA> EXIT
    IMP SYSTEM/MANAGER ...



                                    -- 38 --



    В данном примере предполагается, что все необходимые экспорт-
ные обзоры  и  словарь  БД уже созданы (инструкции см.  в "ORACLE
Installation and User's Guide" для Вашей системы).

    Экспортирование/импортирование данных с утилитой SQL*Net
    -------------------------------------------------------------

    Устраняя в процессе организации сети существующие межмашинные
и межсистемные границы,  утилита SQL*Net создает  тем  самым  для
продуктов ORACLE условия распределенной обработки. Благодаря этой
утилите Вы получаете возможность  производить  экспортирование  и
импортирование на сетевом уровне.
    С помощью SQL*Net,  например, Вы можете экспортировать данные
из базы,   расположенной на локальной ПЭВМ,  на удаленную систему
для временного или постоянного хранения.
    Более того,  запустив утилиту Экспорт на локальной машине, Вы
получаете возможность переписывать данные из удаленной БД  в  ло-
кальный экспорт-файл. Или же запустив на локальной машине утилиту
Импорт, Вы можете считывать данные в удаленную БД.
    Для того,  чтобы связать экспорт и импорт с утилитой SQL*Net,
достаточно всего лишь в команду типа EXP или IMP добавить предло-
жение "@имя_удаленной_базы".  О синтаксисе вызова утилит в случае
использования различных протоколов см. в "SQL*Net User's Guide".

    Импортирование таблиц большого размера
    --------------------------------------

    Не исключена  возможность  того,   что перед загрузкой таблиц
большого размера Вам потребуется создать эти таблицы с надлежащи-
ми параметрами  хранения.   Причиной  таких  действий  может быть
стремление загрузить табличные  данные  в  оптимальную  табличную
структуру. В этом случае на вопрос
    Ignore create errors due to object existence (Y/N): Y > Y
Вы должны дать утвердительный ответ.
    Если же Вы работаете в режиме командной строки,  задайте зна-
чение:
    IGNORE=Y

    Импортирование данных типа LONG
    -------------------------------

    Для загрузки  таблиц,   имеющих  в  своем составе данные типа
LONG, может потребоваться большой буфер.  Если при попытке загру-
зить эти данные Вы получили сообщение
    IMP-00020 column (size num)  in export  file  too  large  for
    column buffer (size num)
    (IMP-00020 размер столбца (равный num) в экспорт-файле черес-
    чур велик для буфера столбца (размером num))
Вы можете последовательно увеличивать размер буфера загрузки каж-
дый раз на 10000 байт (например)  до 66000 байт и более.  Наращи-
вайте размер буфера постепенно, поскольку чересчур большой размер
буфера может породить аналогичную проблему.

    Сокращение фрагментации базы данных
    -----------------------------------




                                    -- 39 --



    Если свободное пространство в БД состоит  из  большого  числа
маленьких блоков,  БД именуется "фрагментированной". Фрагментиро-
ванная БД реорганизуется с целью увеличения размера участков сво-
бодного пространства. Один из способов, которыми администратор БД
может сократить фрагментацию базы, состоит в выполнении экспорта/
импорта базы по следующей схеме:
    1. Резервирование базы методом полного экспорта (FULL=Y).
    2. Проверка наличия активных пользователей командой админист-
       ратора MONITOR и закрытие базы после выхода  пользователей из системы.
    3. Воссоздание базы командой CREATE DATABASE.
    4. Восстановление базы методом полного импорта (FULL=Y).
    Более подробно о командах администратора и создании баз  данных 
см. в "ORACLE Database Administrator's Guide".

    Обработка сообщений об ошибках
    ------------------------------

    Если во время работы утилит Экспорт и Импорт возникают какие-
нибудь проблемы, пользователь оповещается об этом с помощью соот-
ветствующих сообщений об ошибках.  Некоторые из  ошибок  являются
"фатальными", при  их  возникновении  утилиты не могут продолжать
свою работу. Причиной их появления может быть какая-то внутренняя
проблема, а также отсутствие или исчерпание необходимого ресурса,
например, памяти. Так, например, в случае запуска утилиты Экспорт
без создания необходимых экспортных обзоров Вы получите следующее сообщение:
    EXP-00024: Export views not installed, please notify your DBA
    (EXP-00024: экспортные обзоры не созданы; пожалуйста, сообщи-
    те об этом Вашему администратору)

    Другие сообщения, именуемые "управляющими", содержат информа-
цию, которая  помогает Вам обнаружить ошибку в операторе и исправить ее.
    Сообщения об  ошибках собраны в Приложении A настоящего руко-
водства, в "ORACLE Error Messages and Codes Manual" и  в  "ORACLE
Installation and User's Guide" для Вашей системы.

























                                    -- 40 --



        ЧАСТЬ II  SQL*LOADER
        ____________________

    В Части   II   объясняется   порядок   использования  утилиты
SQL*Loader, средства загрузки данных из внешних файлов в  таблицы
БД ORACLE.   Утилита  SQL*Loader работает с самыми разнообразными
форматами исходных данных и предоставляет Вам возможность  управ-
лять процессом загрузки записей в таблицы базы.
    Если Вы никогда не работали с  программами-загрузчиками  дан-
ных, Вам  следует начать с введения,  содержащегося в главе 4,  и
после этого проделать упражнения,  приведенные в главе 5. Эти две
главы познакомят Вас с основными понятиями,  связанными с загруз-
кой данных. После того, как Вы усвоите эти понятия, Вы уже сможе-
те обратиться к главам 6 и 7, где получите ответы на все вопросы,
имеющие отношение к использованию утилиты SQL*Loader.
    Если же Вы уже знакомы с загрузчиком данных ORACLE (ODL)  или
другим аналогичным загрузчиком данных,  Вы можете начать изучение
порядка использования  утилиты  SQL*Loader  с  формата  командной
строки и синтаксиса управляющего файла,  приведенных в главах 6 и 7.
    Примеры управляющих файлов и файлов данных,   содержащиеся  в
данном руководстве, имеются на дистрибутивных носителях; Вы може-
те использовать их для простой тренировки.
    Найдите файлы со следующими именами:

    CASE1.CTL    (управляющий файл вместе с данными)
    CASE2.CTL    CASE2.DAT
    CASE3.CTL    (управляющий файл вместе с данными)
    CASE4.CTL    CASE4.DAT
    CASE5.CTL    CASE5.DAT


    ГЛАВА 4  ОСНОВНЫЕ ПОНЯТИЯ И ОСОБЕННОСТИ SQL*LOADER
    ------------------------------------------------------------Д

    В настоящей главе рассматриваются основные понятия, связанные
с загрузкой данных в БД ORACLE с помощью утилиты SQL*Loader.  По-
мимо представления  утилиты  и  описания  ее особенностей в главе
рассматриваются следующие вопросы:
    * исходные данные для SQL*Loader
    * подготовка БД
    * результаты работы утилиты.

    Что такое SQL*Loader ?
    ----------------------

    SQL*Loader представляет собой утилиту,   предназначенную  для
пересылки данных из внешних файлов в таблицы БД ORACLE.  Эта ути-
лита обладает многими особенностями, присущими утилите DB2 корпо-
рации IBM, и кроме того несколькими другими особенностями, увели-
чивающими ее функциональные возможности и гибкость.
    Утилита SQL*Loader  загружает данные самых разнообразных фор-
матов, выполняет  их  фильтрацию  (выборочную  загрузку  записей,
удовлетворяющих критериям),   а  также обеспечивает одновременную
загрузку нескольких таблиц.  Во время работы утилита создает  ре-
гистрационный файл,   содержащий  детализированную статистическую
информацию, характеризующую процесс загрузки, а также файл плохих
записей (содержащий  записи,  не прошедшие контроль на отсутствие
ошибок) и файл отсеянных записей (содержащий записи,  не удовлет-

                                    -- 41 --



воряющие указанным  Вами критериям).  Управление ходом выполнения
программы осуществляется через выбираемые пользователем параметры
загрузки.
    Утилита SQL*Loader может решать следующие задачи:
    * загрузка данных из нескольких файлов, имеющих разный формат
    * обработка записей фиксированного формата, свободного форма-
      та (с использованием разделителей) и переменной длины
    * поддержка разнообразных типов данных,  включая DATE, BINARY
      и PACKED DECIMAL
    * загрузка нескольких таблиц за один сеанс
    * объединение нескольких физических записей в одну логическую
    * обработка одной физической записи как нескольких логических
    * заполнение  указанных столбцов уникальными,  упорядоченными
      по ключу значениями
    * использование для доступа к файлам данных подсистемы управ-
      ления файлами, входящей в состав Вашей операционной системы
    * загрузка данных с диска или ленты
    * тщательное отслеживание ошибок,  облегчающее  приведение  в
      порядок и загрузку записей
    * использование управляющих файлов,  совместимых  с  утилитой
      IBM DB2 (в том числе созданных утилитой IBM DXT).
    Утилита SQL*Loader заменяет собой обладающий меньшими возмож-
ностями загрузчик  данных  в  БД ORACLE (ODL),  который работал в
предыдущих версиях СУРБД ORACLE.  (Если же у Вас остались данные,
построенные под  структуру ODL,  посмотрите в руководстве "ORACLE
Installation and User's Guide",  имеется ли для Вашей системы со-
ответствующая программа преобразования.)

    Исходные данные для SQL*Loader
    ------------------------------

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

    Управляющий файл

    Назначение этого  файла  заключается  в  описании загружаемых
данных. Среди прочего в нем описывается следующее:
    * имена файлов данных
    * формат файлов данных
    * информационные поля в этих файлах
    * порядок загрузки данных в таблицы (другими словами,   какие
      таблицы и столбцы следует загрузить).
    Часть информации является обязательной (например,  где  найти
данные и  как  они корреспондируют с таблицами БД).  Однако,  для
описания и обработки содержащихся в файлах данных имеются и  дру-
гие параметры.  Например, команды управляющего файла могут содер-
жать указания относительно того, как форматировать или отфильтро-
вывать данные, как генерировать уникальные идентификаторы.
    Данные и управляющая информация  могут  находиться  в  разных
файлах или вместе в одном файле.
    Утилита SQL*Loader использует язык загрузки данных, совмести-
мый снизу  вверх  с утилитой DB2,  разработанной корпорацией IBM.

                                    -- 42 --



Если Вы располагаете управляющим файлом для утилиты DB2, Вы може-
те использовать  его  и с утилитой SQL*Loader; о различиях в син-
таксисе см. в Приложении C.

    Данные

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

    Двоичный/символьный формат
    Вы можете загружать данные в двоичном или символьном формате.
Двоичный формат - это формат,  в котором данные хранятся в памяти
ЭВМ; Вы не сможете прочитать содержимое двоичного  файла  обычным
способом, так,  как Вы читаете содержимое файла в символьном фор-
мате.
    Символьный формат также называют внешним форматом.
    Данные, имеющие как двоичное, так и символьное представление,
могут располагаться  в файлах фиксированного и переменного формата.

    Фиксированный/переменный формат
    Записи данных  могут  иметь фиксированный или переменный фор-
мат. Если данные имеют фиксированный формат,  это означает,   что
они располагаются  в  записях  одного  и того же (фиксированного)
формата. Другими словами,  записи имеют фиксированную длину и ин-
формационные поля,  составляющие эти записи,  имеют фиксированные
длину, тип и местоположение.  Если,  например,   в  одной  записи
столбцы с 1-го по 6-й содержат символьные переменные, а столбцы с
7-го по 10-й целые, то это имеет место во всех записях.
    Если данные  имеют переменный формат (который иногда называют
потоковым форматом), каждая запись имеет ровно такую длину, кото-
рая необходима для размещения данных.  Так в случае с символьными
данными, если первый элемент столбца короче второго,  первая  за-
пись будет короче. Тип данных в каждой записи тоже может варьиро-
ваться. Одна запись может содержать строку  символов,   другая  -
семь целых чисел, третья - три десятичных и одно плавающее и т.д.
Операционными системами используется символ конца строки (перехо-
да на новую строку),  отмечающий окончание строк переменного формата.
    Данные свободного  формата,  использующие разделители,  могут
быть двух типов: имеющие разделитель на конце и заключенные между
парой разделителей.  В качестве разделителя, располагаемого после
элемента данных,  может использоваться специальный символ, напри-
мер, запятая:
    1,1,2,3,5,8,13
    В качестве парного разделителя,  окаймляющего элемент данных,
может использоваться другой специальный символ,  например, кавычки:
    "BUNKY"

    Логические и физические записи
    Последнее различие  касается логических и физических записей.
Под физической записью понимается запись или строка файла (фикси-
рованной длины  или  свободного формата).  С физическими записями
работает входящая в состав ОС подсистема управления файлами (нап-
ример, RMS корпорации DEC или SAM корпорации IBM).
    Логические записи, напротив, имеют отношение к строкам табли-
цы БД.  Иногда логические и физические записи совпадают между со-
бой; например,  в том случае,  когда в базу загружаются лишь нес-
колько коротких столбцов. В то же время иногда несколько физичес-

                                    -- 43 --



ких записей объединяются в одну логическую.  Например,  может су-
ществовать файл,   состоящий  из  записей  фиксированной длины (в
80-символьном формате),  каждая из которых  включает  в  себя  24
столбца размером по 10 символов; в этом случае три физических за-
писи составляют одну логическую.
    При работе с утилитой SQL*Loader, Вы сможете составлять логи-
ческие записи из нескольких  физических,   используя  т.н.   поля
продолжения. Физические  записи  объединяются  в  одну логическую
тогда, когда состояние поля продолжения имеет значение  "истина".
Указание о  необходимости объединения нескольких физических запи-
сей в одну логическую может иметь следующую форму:
    * N  физических записей всегда объединяются (конкатенируются)
      в одну логическую (поле продолжения не используется).
    * Физические записи добавляются в конец,  если поле продолже-
      ния содержит заданный набор литер (или  выполняется  другое
      условие, типа "не равно",  имеющее отношение к полю продолжения).
    * Физические записи добавляются в конец, если в них содержит-
      ся заданный символ (в качестве последнего символа, отлично-
      го от пробела).

    Подготовка базы данных
    ----------------------
    Загрузка данных производится в уже  существующие  таблицы  БД
ORACLE. Кроме  этого,  к таблицам не предъявляется больше никаких
специальных требований; они могут быть кластеризованными или  ин-
дексированными, могут иметь вид обзора с указанными полномочиями.
Следует отметить,  что загрузка идет быстрее, если индексы созда-
ются после  нее.  Таблицы могут уже содержать какие-то данные или
быть пустыми.

    Результаты работы утилиты
    -------------------------

    Наряду с загрузкой данных утилита SQL*Loader выполняет созда-
ние следующих трех файлов.

    Регистрационный файл

    Утилита SQL*Loader начинает работу с создания регистрационно-
го (LOG) файла. Если этот файл утилите создать не удается, утили-
та прекращает работу.  Регистрационный  файл  содержит  детальное
описание хода выполнения загрузки и состоит из нескольких секций.
    Секция заголовка включает в себя следующую информацию:
    * дату запуска
    * номер версии программы
    Секция глобальных данных содержит следующую информацию:
    * имена файлов ввода-вывода
    * значения аргументов командной строки
    * спецификация символа продолжения
    Секция табличных данных содержит следующую информацию по каж-
дой из загружаемых таблиц:
    * имя таблицы
    * условия выполнения загрузки,  если таковые имеются (другими
      словами, загружать  ли  все  записи или только те,  которые
      удовлетворяют критерию, заданному в предложении WHEN)
    * условие  INSERT (вставить),  APPEND (добавить в конец)  или
      REPLACE (заменить)
    * следующую информацию по каждому столбцу:

                                    -- 44 --



         * если он имеется в файле данных:  расположение,  длина,
           тип данных и ограничитель
         * состояние RECNUM, SEQUENCE или CONSTANT, если указано
         * состояние DEFAULTIF или NULLIF, если указано
    Секция корректности содержимого файла данных появляется толь-
ко в   случае обнаружения в файле данных ошибок и включает в себя
следующую информацию:
    * описание ошибки SQL*Loader/ORACLE
    * не прошедшие контроль записи

    Секция статистических сведений по  загрузке  таблиц  содержит
следующие данные по каждой из загруженных таблиц:
    * количество загруженных строк
    * количество строк, отвергнутых из-за наличия ошибок
    * количество строк, отсеянных из-за того, что они не удовлет-
      воряют критериям, заданным в предложении WHEN
    * количество строк, все поля в которых являются пустыми
    Секция итоговой статистики содержит следующую информацию:
    * объем используемого пространства:
         * для  двоичного массива (фактически используемый размер
           с учетом значения, указанного в аргументе BINDSIZE)
         * другие накладные расходы (всегда используемые и не за-
           висящие от значения BINDSIZE)
    * статистические  итоги  загрузки.  Включают общее количество
      строк по всем файлам данных:
         * пропущенных
         * считанных
         * отвергнутых
         * отсеянных
    * время начала и окончания работы
    * суммарное затраченное время
    * суммарное  процессорное время (включает время,  затраченное
      на файловый обмен данными, но без времени фонового выполне-
      ния программ системы ORACLE)
    Большая часть приведенной информации включается в регистраци-
онный файл в случае успешного завершения работы утилиты.  Однако,
возникновение тех или иных ошибок может отразиться на  содержимом
секций файла.  Например, если регистрационный файл сам по себе не
удается создать,  утилита SQL*Loader прекращает работу.   Ошибки,
обнаруженные при  синтаксическом разборе содержимого управляющего
файла, появляются в регистрационном файле,  в отличие от  ошибок,
обнаруженных в командной строке.

    Файл плохих записей

    Во время  работы  утилита  создает  файл т.н.  плохих записей
(BAD). В него включаются все записи, которые утилите загрузить не
удается. Такие записи называются отвергнутыми.
    Запись отвергается,  если имеет место одно из следующих условий:
    * При загрузке записи возникла ошибка СУРБД ORACLE (например,
      несоответствие типа  данных,  повторяющееся значение в уни-
      кальном индексе, значение "пусто" в поле NOT NULL).
    * Утилита SQL*Loader не может установить приемлемость данных.
      Другими словами,  она не в состоянии определить, удовлетво-
      ряет ли запись критерию,  заданному в предложении WHEN, или
      нет, как в случае с появлением вложенных данных с несбалан-
      сированными ограничителями. Например, если в качестве огра-


                                    -- 45 --



      ничителей используются двойные кавычки,  следующая последо-
      вательность символов будет отвергнута утилитой:
      ,"U G,

    Если же несмотря на несбалансированность ограничителей данные
все-таки поддаются оценке на соответствие критерию,  заданному  в
предложении WHEN, в случае успеха они могут быть загружены.
    Если при вставке запись отвергается, ни целиком, ни по частям
она уже не будет загружена ни в одну из таблиц.  Например,  когда
содержимое записи загружается в несколько таблиц и  удовлетворяет
условиям по всем таблицам, кроме одной, вставка записи отвергает-
ся в целом. При этом запись помещается в файл плохих записей, где
ее можно  корректировать  и после корректировки при желании пере-
загрузить. На ранее загруженные записи возникновение ошибки влия-
ния не оказывает.
    Описание каждой ошибки помещается в регистрационный файл.
    Файл плохих записей создается утилитой SQL*Loader всегда; ес-
ли ни одна из записей не отвергается,  он остается пустым. Формат
файла совпадает с форматом файла данных, поэтому после редактиро-
вания и внесения всех  необходимых  изменений  отвергнутые  ранее
данные могут быть загружены вновь с использованием того же самого
управляющего файла.

    Файл отсеянных записей

    В некоторых случаях утилита SQL*Loader прибегает  к  созданию
файла т.н.  отсеянных записей. Этот файл создается тогда, когда в
командной строке Вами выбирается один из следующих параметров:
    DISCARD=имя_файла
    DISCARDMAX=nn
или тогда, когда в управляющем файле Вы указываете одно из следу-
ющих значений:
    DISCARDFILE имя_файла
    DISCARDDN имя_файла
    DISCARDS n
    DISCARDMAX n
    Таким образом, файл отсеянных записей создается, когда Вы яв-
но (с указанием имени)  или неявно (установив верхний  предел  на
число отсеиваемых записей)  потребуете его создания.  В последнем
случае имя файла совпадает с именем файла данных, тип файла (рас-
ширение имени) по умолчанию - DSC.
    Записи помещаются в файл отсеянных записей,  если имеет место
одно из следующих условий:
    * Загружаемые записи не удовлетворяют хотя бы одному из  кри-
      териев, заданных в предложениях WHEN.
    * Условия,  заданные в предложении WHEN,  удовлетворяются, но
      все поля являются пустыми либо вследствие состояния NULLIF,
      либо в результате появления пустой строки.
    Если содержимое  записи  помещается в одну из таблиц,  в файл
отсеянных записей она уже не попадает.  Формат файла совпадает  с
форматом файла данных. После редактирования и внесения всех необ-
ходимых изменений отсеянные ранее  данные  могут  быть  загружены
вновь с использованием того же самого управляющего файла.

KOAP Open Portal 2000