Резервное копирование Oracle DB

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

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

В список необходимых для резервного копирования конфигурационных файлов входят:

  • $ORACLE_HOME/network/admin — сетевые конфигурации
  • $ORACLE_HOME/dbs — конфигурационные файлы экземпляров баз данных, файлы паролей
  • /etc/oratab — файл соответствия экземпляров баз данных и соответствующих $ORACLE_HOME
  • /etc/oraInst.loc — файл, содержащий путь к глобальному Oracle Inventory
  • Oracle Inventory — контейнер с информацией по установленным на системе экземплярах бинарных файлов Oracle

(Файлы и директории указаны для Linux систем, но общие принципы и структура файлов идентичная по всем системам).

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

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

  1. DataPump

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

Резервное копирование базы данных Oracle производится посредством команды expdb. Для полной копии используемой базы данных можно использовать следующую команду, адаптировав необходимые параметры под целевую систему:

SQL> create directory DPDATA as '/stage/database/backup';
sh> expdp userid='" /as sysdba"' LOGFILE=dbname_export_$(date +%F-%H-%M).log \
DIRECTORY=DPDATA \
DUMPFILE=dbname_export_FULL_%U.dmp \
FILESIZE=20G \
PARALLEL=4 \
FULL=y \
JOB_NAME=dbname_export_FULL \
flashback_time=systimestamp

Резервная копия базы данных будет записана в файлы dbname_export_FULL_%U.dmp в директории /stage/database/backup. %U будет заменено порядковыми номерами дамп файлов в формате 00-99. Каждый будет не больше 20G, как указано в соответствующем параметре.

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

impdp userid='" /as sysdba"' LOGFILE=dbname_import_$(date +%F--%H-%M).log \
FULL=y \
DUMPFILE=dbname_export_FULL_%U.dmp \
DIRECTORY=DPDATA \
PARALLEL=20

  1. Холодная копия системы

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

Перед выполнение процедуры необходимо собрать информацию о требуемых файлах для резервирования:

SQL> show parameter control_files
SQL> show parameter spfile
SQL> select file_name from dba_data_files;
SQL> select file_name from dba_temp_files;
SQL> select member from v$logfile;
SQL> create pfile=’ from spfile;

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

  1. Копия посредство Backup Mode

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

Для решения данной проблемы можно воспользоваться режимом резервирования — BACKUP MODE. Такой режим можно выставить на уровне базы данных или для конкретного табличного пространства.

SQL> ALTER TABLESPACE ... BEGIN BACKUP
SQL> ALTER DATABASE BEGIN BACKUP

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

Выключается режим аналогичными командами:

SQL> ALTER TABLESPACE ... END BACKUP
SQL> ALTER DATABASE END BACKUP

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

  1. Технология snapshot

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

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

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

  1. Резервирование с помощью утилиты RMAN

И, напоследок, невозможно упомянуть о стандартном механизме для резервирования баз данных — RMAN. Это встроенная утилита появилась в Oracle RDBMS с версии 8i. Стандартный механизм по резервированию Oracle баз данных.

Учитывая тот факт, что утилита является стандартной и разработана компанией Oracle, более того входит в каждый дистрибутив Oracle RDBMS, все механизмы внутренней работы утилиты отточены на работу с низким уровнем хранения данных в рамках базы данных – блоками данных.

С помощью RMAN можно произвести резервное копирование как на работающей системы, так и на остановленной. Для резервирования работающей системы необходимо, чтобы в базе данных был включен архивный режим.

Также утилита RMAN позволяет создавать инкрементальные копии база данных, а именно не полные копии, которые будут в себе содержать только те изменения, которые произошли с момента предыдущего резервирования.

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

Управление утилитой RMAN производится посредством через консольное приложение:

SH> rman target /

Пример команды по резервному копированию базы данных :

Утилита является наиболее подходящим механизмом для резервирования данных в марках Oracle DB.

RMAN> RUN
{
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK FORMAT = '/backup/df/%U';
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK FORMAT = '/backup/cf/%U';
ALLOCATE CHANNEL ch3 DEVICE TYPE sbt;
BACKUP AS BACKUPSET # all output files are in backup sets
# channel ch1 backs up datafiles to /backup/df directory
DATAFILE 1,2,3,4
CHANNEL ch1
# channel ch2 backs up control file copy to /backup/cf directory
CONTROLFILECOPY '/tmp/control01.ctl'
CHANNEL ch2;
BACKUP AS BACKUPSET
# channel ch3 backs up archived redo logs to tape
ARCHIVELOG FROM TIME 'SYSDATE-14'
CHANNEL ch3;
}

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

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*