Процедуры резервного копирования и восстановления oracle rman. Резервное копирование Oracle. Бэкап базы Oracle с Bacula Enterprise. Как сделать бэкап Oracle с помощью Handy Backup

Основные характеристики:

Образ Диска, Бэкап на NAS, Бэкап Открытых Файлов (VSS), Бессрочная Лицензия
Starting from € 29

FREE BACKUP SOFTWARE FOR SERVER AND WORKSTATIONS

BACKUP FREE AND PROFESSIONAL SOLUTIONS

Iperius is a complete Windows utility for data backup. You can use the Freeware version (also for Windows Server) to back up files to NAS, external disks, RDX drives, etc. without any time limitation - or choose an enterprise version, with plenty of backup functions and advanced features: copy of open files (VSS), Drive Image for disaster recovery, backup of ESXi and Hyper-V virtual machines, SQL Server and MySQL database backup, Exchange Server backup, backup to LTO Tape, backup to Cloud (Google Drive, Amazon S3, etc.), backup to FTP/SFTP . Starting from Iperius Free, a trial of the Full version can be activated to test all the features of the software.

Iperius Console

KEEP UNDER CONTROL ALL THE BACKUPS IN A SHOT

Iperius Console is the advanced tool for centralized management and monitoring of your computers and backup. Using either the dedicated desktop application or just the web portal, you can view the results of your backup operations, examine the details of any errors, set and customize the backup schedulings and also run backup jobs remotely. The console integrates perfectly with all the products of Iperius Suite, allowing also to remotely update Iperius Backup to the latest version. The large amount of information provided keeps users updated about the status of every PC and Server where Iperius is installed, making Iperius Console an extremely useful IT Monitoring tool, both for your customers and your company.

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

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

2. Физическое резервное копирование - выполняется после установки базы и предполагает копирование файлов данных, управляющих фай­лов, оперативных журналов повтора и файла init.ora с настройками базы.

3. Оперативное резервное копирование - осуществляется в базе, функционирующей в режиме ARCHIVELOG. В этом режиме производит­ся архивация оперативных журналов повтора и ведется журнал всех транзакций.

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

Рассмотрим пример типовых профилей. Для начала решим наиболее распространенную задачу - создание резервной копии одной или несколь­ких схем. В качестве примера рассмотрим копирование схемы STUDENT с учебным примером. Для этого создадим текстовый файл exp_stud.prm, содержащий следующие строки:

USERID = имя/пароль
LOG = oralOstud.log FILE = oralOstud.dmp 0WNER= STUDENT

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

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

Для выполнения полного экспорта профиль немного изменится:

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

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

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

USERID = student/student LOG = oralOstudimp.log FILE = oralOstud.dmp
ROWS = Y
GRANTS = Y
INDEXES = Y
FR0MUSER= STUDENT
T0USER= STUDENT

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

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

Рассмотрим несколько типичных ситуаций, встречающихся на практи­ке:

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

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

У IMP есть одна интересная функция - вместо выполнения команд в базе данных эта утилита выводит их в протокол, генерируя тем са­мым скрипты, содержащие DML-операторы. Для включения этой функ­ции необходимо указать параметр SHOW=Y.

Создать резервную копию данных базы oracle можно двумя способами:

  • Используя средства операционной системы.
  • Используя утилиты самой базы данных.

У каждого из этих способов есть преимущества и недостатки. В случае создания резервной копии средствами операционной системы необходимо, что бы на всём протяжении процесса создания резервной копии экземпляр был остановлен во избежание рассогласования данных, что недопустимо в случае необходимости функционирования системы в режиме 24/7. Второй основной недостаток это сложность администрирования большого количества резервных и трудоёмкость их проверки на ошибки.

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

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

Самой же мощной, созданной компанией oracle специально для создания резервных копий баз данных, является утилита RMAN. Которая позволяет создавать полную копию базы данных без остановки экземпляра и восстанавливать её на любой момент в прошлом, сама следит за устаревшими копиями и удаляет их при необходимости, а так же проверяет их на наличие ошибок. Но при этом имеет серьёзный недостаток сложна в настройке и администрировании. Познакомимся поближе с настройкой и администрированием этой утилиты.

Утилита RMAN появилась в версии 8g и совершенствовалась в последующих. Настроим эту утилиту для регулярного создания резервных копий нашей базы данных.

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

  • табличные пространства;
  • управляющие файлы;
  • журналы повторного выполнения;
  • файлы данных (init.ora, spfile, tnsnames.ora, listener.ora, orapwd);

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

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

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

Select log_mode from v$database; от любого пользователя с правами sysdba. Если запрос вернул archivelog то всё в порядке переходим к следующему пункту, если noarchivelog то нужно перезапустить базу в режиме archivelog. Для этого нужно перезапустить базу в режиме mount командой:
startup mount immediate и выполнить команду
alter database archivelog; она активирует режим archivelog, после этого остаётся только открыть базу данных командой:
alter database open;

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

После того как мы перевели базу данных в режим archivelog необходимо задать ей параметры области пакетного восстановления. Проверим не заданы ли они уже запросом:

Select name, value from v$parameter where name like "db_recovery_file_dest%"; если не заданы то задаём командами:
alter system set db_recovery_file_dest_size=50G scope=both; задаёт максимальный размер области пакетного восстановления и
alter system set db_recovery_file_dest="/storage/recovery_area" scope=both; задаёт расположение области пакетного восстановления в файловой системе. Создание области пакетного восстановления необходимо для того что бы rman мог самостоятельно удалять устаревшие копии, а так же отслеживать оставшееся свободное дисковое пространство и предупреждать если его остаётся мало.

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

Rman connect target user/pass@sid выполняем команду
show all;

первым делом конфигурируем параметры сохранности резервных копий это делается либо параметром CONFIGURE RETENTION POLICY либо устанавливается количество копий которые одновременно хранятся, либо указывается период в который копия считается актуальной. Установим параметр recovery window равный 7 дням командой:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; включим автобэкап контрл файла при каждом создании резервной копии будет создаваться копия контрл файла:
CONFIGURE CONTROLFILE AUTOBACKUP ON; активируем оптимизацию что бы rman не создавал копии файлов уже существуют резервные копии идентичные существующей:
CONFIGURE BACKUP OPTIMIZATION ON; и распараллелим на 2 канала процесс создания резервной копии:
CONFIGURE DEVICE TYPE DISK PARALLELISM 2; Параметры устройства на которое сохраняется информация, шифрования, сжатия, формат автобэкапа контрл файла и максимальный размер файла копии мы менять не будем.

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

Для воскресения:

#!/bin/bash export ORACLE_HOME=/u01/11g/ export NLS_LANG=american_america.AL32UTF8 export ORACLE_SID=kagu1251 rman connect target user/pass BACKUP INCREMENTAL LEVEL 0 DATABASE; BACKUP DATAFILE "/oradata/db/admin/kagu/pfile/ init.ora.6302012163819"; BACKUP DATAFILE "/u01/11g/network/admin/ listener.ora"; BACKUP DATAFILE "/u01/11g/network/admin/ tnsnames.ora"; BACKUP DATAFILE "/u01/11g/dbs/spfilekagu.ora"; BACKUP DATAFILE "/u01/11g/dbs/orapwkagu1251";

Для остальных дней:

#!/bin/bash export ORACLE_HOME=/u01/11g/ export NLS_LANG=american_america.AL32UTF8 export ORACLE_SID=kagu1251 rman connect target user/pass BACKUP INCREMENTAL LEVEL 1 DATABASE; BACKUP DATAFILE "/oradata/db/admin/kagu/pfile/ init.ora.6302012163819"; BACKUP DATAFILE "/u01/11g/network/admin/ listener.ora"; BACKUP DATAFILE "/u01/11g/network/admin/ tnsnames.ora"; BACKUP DATAFILE "/u01/11g/dbs/spfilekagu.ora"; BACKUP DATAFILE "/u01/11g/dbs/orapwkagu1251";

Для восстановления всей базы данных после полного их изчезновения применяется команда RESTORE DATABASE, после её выполнения необходимо синхронизировать данные с помощью архивных журналов командой RECOVER DATABASE, восстановление происходит в режиме mount.

Для восстановления конкретного табличного пространства необходимо сначало перевести его в режим OFFLINE командой:

ALTER TABLESPACE user OFFLINE;

После этого выполнить его восстановление и синхронизацию:

RESTORE TABLESPACE user; RECOVER TABLESPACE user; По завершении перевести его в режим online командой:
ALTER TABLESPACE user ONLINE;

Так же можно откатить базу данных на определённым момент времени назад для этого выполняется команда:

SET UNTIL TIME "Jan 29 2013 20:00:00";

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

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

Здравствуйте, уважаемые читатели блога сайт! Представляю вашему вниманию статью о бэкапе и воссатновлении бд Oracle. Думаю, этот материал будет полезен для админов, выполняющих бэкапы и восстановление на сервере Оракл посредством Менеджера Восстановления (RMAN).

Бэкап и Восстановление

Для понимания статьи желательно иметь представление в следующих областях:

  • Концепции реляционных баз данных и основы администрирования.
  • Среда ОС, под которой запущена база Оракл.

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

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

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

Физические и Логические Бэкапы

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

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

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

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

Далее термин “бэкап” в данной статье о бэкапе и восстановлении будет означать прежде всего именно физические бэкапы (если не конкретизировано, о каких бэкапах идет речь), и сделать бэкап части или всей бд будет означать – сделать один из видов физического бэкапа. Акцент в статье делается в основном на физических бэкапах.

Ошибки и Сбои, требующие Восстановление из Бэкапа

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

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

Ошибки пользователей

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

Выход из строя носителей информации

Сбой носителя – это сбой при чтении или записи файла на диске, который требуется для работы базы, из-за физической проблемы с диском. например выъод из строя головки. Любой файл БД может быть поврежден из-за сбоя носителя.

Подходящий способ восстановления после сбоя носителя зависит от того, на какие файлы повлиял сбой, а также от типов доступных бэкапов.

Решения Oracle для Бэкапа и Восстановления: RMAN и Пользовательские Бэкапы

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

  • Менеджер Восстановления – инструмент (работает из командной строки, либо из графического интерфейса Enterprise Manager), который интегрируется с сессиями, запущенными на сервере Oracle для выполнения ряда действий, связанных с бэкапом и восстановлением, а также для поддержания хранения истории о ваших бэкапах
  • Традиционный пользовательский бэкап и восстановление (т.е. осуществляемый и контролируемый самим пользователем), когда Вы напрямую управляете файлами, составляющими вашу бд, используя при этом команды ОС и возможности SQL*Plus, связанные с бэкапом и восстановлением

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

Большая часть статьи будет фокусироваться на бэкапе и восстановлении посредством RMAN. Пользовательские методы бэкапа и восстановления я планирую описать в будущих статьях о бэкапе и восстановлении.

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

Спасибо за внимание! Не пропустите продолжение темы о бэкапе и восстановлении в будущих статьях, которые я постараюсь написать в ближайшем будущем. Удачи!.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то