Резервное копирование и восстановление БД Oracle

Операции резервного копирования и восстановления в Oracle можно разделить на три вида:

  1. Логическое резервное копирование — производится при помощи входящей в состав Oracle утилиты ехр, которая позволяет экспортиро­вать всю базу, заданные схемы или таблицы. В случае экспорта всей базы выполняется так называемый полный экспорт (при этом экс­портируются все таблицы базы данных) или инкрементный (выгру­жаются таблицы, изменившиеся с момента последнего экспорта). Для Oracle 10g ХЕ, в котором объем базы не превышает 4 Гбайт, можно пользоваться полным экспортом.
  2. Физическое резервное копирование — выполняется после установки базы и предполагает копирование файлов данных, управляющих фай­лов, оперативных журналов повтора и файла init.ora с настройками базы.
  3. Оперативное резервное копирование — осуществляется в базе, функционирующей в режиме ARCHIVELOG. В этом режиме производит­ся архивация оперативных журналов повтора и ведется журнал всех транзакций.

Для небольших баз данных наиболее простым и на­дежным является полное логическое резервное копирование и фи­зическое резервное копирование.

Логическое резервное копирование (экспорт)

Логическое резервное копирование выполняется при помощи утилиты ехр.ехе, размещенной в папке oraclexe\app\oracle\product\10.2.0\server\BIN\. Утилита является консольным приложением, получающим параметры через командную строку. Поскольку параметров обычно бывает много (5-10 штук), удоб­но создать профиль с параметрами и затем передать его утилите экспорта при помощи параметра parfile.

Рассмотрим пример типовых профилей.

Для этого создадим текстовый файл exp.prm, содержащий следующие строки:

USERID = имя/пароль
LOG = oralOfull.log FILE = oralOfull.dmp FULL = Y

В нашем случае параметр USERID содержит имя и пароль для доступа к базе данных, параметр LOG задает имя файла, в который записывается протокол работы, параметр FILE задает имя файла резервной копии.

Важным моментом является то, что экспорт конкретной схемы можно выполнять от имени ее владельца, но для полного экспорта необходимо обладать ролью DBA, в противном случае попытка полного экспорта завершится ошибкой ЕХР-00023 с сообщением «Must be a DBA to do Full Database or Tablespace export».

Затем произведем экспорт, выполнив команду ехр parfile=exp.prm, в результате чего будет создан файл oralOfull.dmp, содержащий полную резервную копию БД. Этот файл имеет бинарный формат и очень хорошо сжимается любым архиватором, поэтому для автоматизации процедуры резервного копирования удобно создать ВАТ- файл, содержащий команду экспорта и вызов архиватора для сжатия полученного дампа.

Логический импорт

Логический импорт является зеркальной операцией по отношению к экспорту и выполняется при помощи утилиты IMP. В ходе импорта необя­зательно импортировать всю имеющуюся в дампе информацию — можно произвести импорт заданных схем или таблиц. Параметры утилиты IMP удобно размещать в профилях, например для импорта схемы TEST можно применить профиль следующего вида:

Cоздадим текстовый файл imp.prm, содержащий следующие строки:

USERID = логин/пароль
LOG = oralOfulldmp.log
FILE = oralOfull.dmp
ROWS = Y
GRANTS = Y
INDEXES = Y
FROMUSER= TEST
TOUSER= TEST

Затем произведем импорт, выполнив команду imp parfile=imp.prm

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

Параметры ROWS (строки таблиц), GRANTS (полномочия на объекты), INDEXES (индексы) указывают, какие типы объектов импортируются.

Если необходимо импортировать объекты учетной записи TEST в учетную запись TEST1. В этом случае следует задать параметры FROMUSER=TEST и TOUSER= TEST1.

Перед импортом необходимо удалить все объекты из схемы, иначе в процессе импорта будут выдаваться ошибки IMP-00015 для каждой импортируемой таблицы (импорт данных в этом случае не производится). Если по каким-либо причинам необходимо загрузить данные в существующую таблицу, то можно применить параметр IGNORE=Y. что приведет к игнорированию ошибок при создании объектов и к продолжению импорта данных. Однако в случае применения параметра IGNORE=Y необходимо учитывать, что в таблицах без первичного ключа может возникнуть удвоение записей (так как каждая операция импорта загружает новые данные, а старые при этом не уничтожаются). У IMP есть одна интересная функция — вместо выполнения команд в базе данных эта утилита выводит их в протокол, генерируя тем самым скрипты, содержащие DML-операторы. Для включения этой функции необходимо указать параметр SHOW=Y.

Добавить комментарий