Программа RMAN появилась в версии 8 СУБД Oracle как единое для всех платформ
  средство организации резервного копирования и восстановления данных на физическом
  уровне. По отношению к традиционным базовым возможностям резервирования и восстановления
  в Oracle, у программы RMAN есть некоторые преимущества, делающие ее в некоторых
  ситуациях (например, при больших объемах данных) практически незаменимой. К
  сожалению, наличие этих преимуществ не лишает RMAN и ряда существенных недостатков:
  собственной системы понятий, собственного командного языка и интерфейса общения
  с администратором. И то, и другое, и третье выполнено в плохих традициях разработчиков
  Oracle – не вполне логично, запутано и непоследовательно, – что затрудняет
  освоение этой программы. Назначение этой статьи – помочь перешагнуть через
  эти недостатки ради выгод, которые можно извлечь из RMAN.
Возможности RMAN включают следующее:
  
    | - | выполнение полного резервирования и резервирования изменений | 
  
    | - | выполнение холодного/горячего резервирования, причем во втором случае
      табличные пространства не переводятся в режим backup, что позволяет избежать
    дополнительной нагрузки на журнал | 
  
    | - | обнаружение поврежденных блоков | 
  
    | - | параллельное выполнения операций ввода/вывода | 
  
    | - | автоматическое протоколирование операций копирования и восстановления | 
Уровни выполнения резервного копирования/восстановления с помощью RMAN:
  -  база данных
-  табличные пространства
-  файлы табличных пространств
-  служебные файлы БД (контрольные, архивные)
Основные понятия
В число основных понятий RMAN входят следующие:
  
    | - | Канал (channel). Серверный процесс, возникающий при установлении
      связи с устройством ввода/вывода (диск или магнитная лента) для записи
    или чтения файлов резервирования | 
  
    | - | Целевая БД (target database). БД, для которой снимается резервная копия,
    или которая восстанавливается по ранее снятой копии | 
  
    | - | Каталог (recovery catalog). Отдельная схема в БД (чаще в отдельной БД),
      которую можно заводить для хранения служебная информации о целевых базах,
      снятых копиях и процедурах восстановления. Альтернативой каталогу является
      индивидуальная работа с каждой целевой БД, когда служебная информация помещается
    в контрольный файл этой БД. | 
  
    | - | Копия (RMAN backup). Резервная копия какого-нибудь элемента БД, получаемая
    командой RMAN backup. | 
  
    | - | Резервный набор (backup set). Логически именует набор файлов, сформированных
    во время резервного копирования. | 
  
    | - | Резервный файл (backup piece). Двоичный файл с резервной информацией. | 
Синтаксис командного языка RMAN в версии 9 имеет определенные отличия от версии
  8, но все основные конструкции сохранены. Кроме этого, в RMAN для версии 9
  допускается целый ряд упрощений записи команд. 
Возможность работы с RMAN включена также в последние версии OEM без необходимости
  знания командного языка.
В тексте ниже для лаконичности предпочтение будет отдаваться синтаксису версии
  9. Кроме этого для простоты рассматривается работа без каталога RMAN.
Простейший пример снятия резервной копии (холодное копирование – вся БД –
  работа без каталога) иллюстрируется следующей последовательностью команд (здесь
  команда CONNECT TARGET соединяет RMAN с СУБД версии 8):
RMAN NOCATALOG
  RMAN> CONNECT TARGET internal/oracle
  RMAN> SHUTDOWN IMMEDIATE
  RMAN> STARTUP MOUNT
  RMAN> RUN {
  2> ALLOCATE CHANNEL d1 TYPE DISK;
  3> BACKUP FULL FORMAT 'd:\oracle\oradata\teacher\rman-backup\rman_%d_%U.bus'
  4> DATABASE;
  4> }
  RMAN> 
В каталоге D:\ORACLE\ORADATA\TEACHER\RMAN-BACKUP появился файл RMAN_ TEACHER
  _02DGA6F0_1_1.BUS (реальное имя может варьироваться). Теперь можно удалить
  файлы с табличными пространствами и выполнить восстановление:
RMAN> RUN {
  2> ALLOCATE CHANNEL d1 TYPE DISK;
  3> RESTORE DATABASE;
  4> RECOVER DATABASE;
  5> ALTER DATABASE OPEN;
  6> }
База восстановлена и открыта. 
В версии RMAN для версии 9 описанное выше резервирование можно было бы выполнить
  так:
RMAN> BACKUP DATABASE FORMAT 
  2> 'd:\oracle\oradata\teacher\rman-backup\rman_%d_%U.bus';
а восстановление так:
RMAN> RESTORE DATABASE;
  RMAN> RECOVER DATABASE;
  RMAN> ALTER DATABASE OPEN;
Здесь подразумевается использование неявного канала по умолчанию, так что
  объявлять его стало необязательно. 
Кроме этого в версии 9 появилась команда CONFIGURE, с помощью которой (помимо
  прочего) можно связать с каналом направление и маску имени файлов для резервного
  набора:
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 
  2> 'd:\oracle\oradata\teacher\rman-backup\rman_%d_%U.bus';
В этом случае команда снятия резервной копии может выглядеть еще проще:
RMAN> BACKUP DATABASE;
Горячее резервирование 
  
    | - | может выполняться в состоянии СУБД OPEN | 
  
    | - | может выполняться только при включенном режиме архивирования журналов | 
Если выполнено и то, и другое, сами действия по резервированию выглядят как
обычно. Пример в синтаксисе версии 9.0:
RMAN> BACKUP DATABASE FORMAT 
  2> 'd:\oracle\oradata\teacher\rman-backup\rman_%d_%t_%U.bus';
Пример в синтаксисе версии 9.0:
RMAN> BACKUP TABLESPACE system, users FORMAT 
  2> 'd:\oracle\oradata\teacher\rman-backup\rman_%d_%t_%U.bus';
Пример в синтаксисе версии 9.0:
RMAN> BACKUP DATAFILE 1, 2;
или
RMAN> BACKUP FORMAT 
  2> 'd:\oracle\oradata\teacher\rman-backup\rman_%d_%t_%U.bus'
  3> 'd:\oracle\oradata\teacher\system01.dbf’,
  4> 'd:\oracle\oradata\teacher\users01.dbf’;
Если временное табличное пространство локально управляемо, оно автоматически
  не резервируется. Восстанавливать (воссоздавать) при необходимости его придется
  самостоятельно.
Обычное резервирование контрольного файла приходится выполнять отдельно. Пример
  явного резервирования в синтаксисе версии 9.0:
RMAN> BACKUP CURRENT CONTROLFILE;
В версии 9 можно, однако, перевести RMAN в режим, когда копии контрольного
  файла будут сниматься автоматически при всякой выдаче команд BACKUP или COPY:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
Оперативные (онлайновые) файлы журнала автоматически не резервируются. Для
  сохранения либо следует их
а) копировать отдельно, либо
  б) перед полным резервированием БД отправлять в архив.
Файлы архивных копий журнала резервируются всегда в отдельные от прочих файлы
  резервного набора и в общем случае их нужно резервировать отдельной командой.
  Пример в синтаксисе версии 9.0:
RMAN> BACKUP ARCHIVELOG ALL;
Пример того, как в версии 9.0 архивные файлы можно включить в состав резервного
  набора БД:
RMAN> BACKUP DATABASE FORMAT 
  2> 'd:\oracle\oradata\teacher\rman-backup\rman_%U.bus' PLUS ARCHIVELOG;
Для резервирования изменений в Oracle используется традиционная многоуровневая
  модель с конкретным числом уровней копии 5 (от 0 до 4). Точкой отсчета для
  копирования изменений обязана стать снятая ранее полная копия БД уровня 0.
Пример резервирования блоков, изменившихся со времени резервирования на уровнях
  3, 2, 1 и 0 (разностное, «дифференциального» резервирование) в синтаксисе версии
  9:
RMAN> BACKUP INCREMENTAL LEVEL 3 DATABASE;
Пример резервирования блоков, изменившихся со времени последнего резервирования
  на уровнях 2, 1 и 0 (разностно-накопительное, «кумулятивное» резервирование)
  с пропуском табличных пространств, закрытых для записи (синтаксис версии 9):
RMAN> BACKUP INCREMENTAL LEVEL 3 CUMULATIVE DATABASE
  2> SKIP READONLY;
Разностно-накопительное (кумулятивное) резервирование уровня N отличается
  от разностного (дифференциального) тем, что резервирует изменения произошедшие
  после выполнения резервирования всех уровней < N, в то время как просто
  разностное – изменения, произошедшие после резервирования уровней <= N. 
Выполняется специальными командами LIST и REPORT, а также разновидностью команды
  RESTORE. Примеры приводятся ниже.
Выдача подробного списка всех снятых копий:
RMAN> LIST BACKUP;
Выдача списка резервных наборов, содержащих табличное пространство SYSTEM:
RMAN> LIST BACKUP OF TABLESPACE system;
Вариант выдачи того же самого, но в обобщенном виде (версия 9):
RMAN> LIST BACKUP OF TABLESPACE system SUMMARY;
Выдача информации о копиях, снятых с архивов журналов:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
Выдача резервных копий, оказавшихся устаревшими:
RMAN> REPORT OBSOLETE;
Выдача файлов с данными БД, для восстановления которых потребуются архивы
  журналов 2-х дневной давности и более:
RMAN> REPORT NEED BACKUP DAYS 2 DATABASE;
Те же сведения, но только для пространства SYSTEM:
RMAN> REPORT NEED BACKUP DAYS 2 TABLESPACE system;
Выдача информации о том, годны ли файлы резервного набора для восстановления:
RMAN> RUN {ALLOCATE CHANNEL d1 TYPE DISK;
  2> RESTORE DATABASE VALIDATE; }
Выполняется командой DELETE. В простейшем варианте удаление устаревших копий
  может выглядеть так:
RMAN> DELETE OBSOLETE;
Обратите внимание, что RMAN удалил ненужные файлы резервных наборов. Вам не
  нужно автоматизировать удаление старых файлов, как раньше!
Файлы резервных наборов могут оказаться испорченными или поврежденными. Это
  можно отметить в справочнике (в контрольном файле или в каталоге RMAN) с помощью
  команды CROSSCHECK, в результате чего они будут помечены там как EXPIRED. Последующая
  команда DELETE EXPIRED удалит ставшие ненужными из-за этого файлы:
RMAN> CROSSCHECK BACKUP;
  …
  RMAN> DELETE EXPIRED BACKUP OF DATABASE;
  …
  RMAN> DELETE BACKUP OF DATABASE;
Более сложный пример удаления устаревших резервных копий:
RMAN> DELETE OBSOLETE RECOVERY WINDOW OF 14 DAYS;
  
    | - | Для восстановления данных целевая БД должна находиться в состоянии NOMOUNT/
    MOUNT/ OPEN в зависимости от характера восстановления, например | 
  
    | - | 
      NOMOUNT: для восстановления контрольных файлов БД (фактически – СУБД)  | 
  
    | - | 
      MOUNT: для восстановления БД целиком или табличного пространства SYSTEM | 
  
    | - | 
      OPEN: для восстановление табличных пространств, помимо SYSTEM (в этом
          случае перед процедурой восстановления само табличное пространство потребуется
        перевести в состояние OFFLINE). | 
  
    | - | Восстановление файлов (с данными и служебных) выполняется в RMAN командой
    RESTORE. | 
  
    | - | Восстановление данных выполняется либо в RMAN, либо в SQL*Plus командами
    RECOVER при условии наличия восстановленных файлов. | 
Некоторые примеры восстановления:
RMAN> RECOVER DATABASE;
RMAN> RECOVER TABLESPACE users;
RMAN> RECOVER DATAFILE 'd:\oracle\oradata\teacher\users01.dbf’;
RMAN> RESTORE CONTROLFILE;
RMAN> RUN {
  2> SET ARCHIVELOG DESTINATION TO ‘d:\oracle\oradata\archive’;
  3> RESTORE ARCHIVELOG ALL; }
Восстановление пространств, закрытых на запись:
RMAN> SQL "ALTER TABLESPACE lookup_data OFFLINE";
  RMAN> RECOVER TABLESPACE lookup_data;
  RMAN> SQL "ALTER TABLESPACE lookup_data ONLINE";
БД, работающую в режиме архивирования журнала, можно восстанавливать до определенного
  указанного момента с помощью фраз UNTIL {TIME … | SCN … | SEQUENCE … THREAD…}.
  Пример:
RMAN> RESTORE DATABASE;	# восстановили файлы
  RMAN> RECOVER DATABASE UNTIL SCN 375831;	# восстановили БД
  RMAN> ALTER DATABASE OPEN RESETLOGS;	# сбросили журнал
Восстановление БД (вторая и третья строчки выше) можно выполнить и в SQL*Plus: 
SQL > RECOVER DATABASE UNTIL CANCEL;
  SQL> ALTER DATABASE OPEN RESETLOGS;
При таком восстановлении необходимо сбросить онлайновый журнал. После этого,
  как и при традиционном восстановлении со сбросом журналов (RESETLOGS), необходимо
  снять полную копию БД, так как с этого момента восстановление с более ранних
  резервных копий станет невозможным из-за того, что история журнальных записей
  прерывается.
Автоматизировать выполнение задач с RMAN можно как внешними средствами (язык
  командной оболочки), так и внутренними. Внутренние средства RMAN допускают
  указание файла сценария при вызове этой программы, а также организацию хранимого
  сценария.
Пусть в файле listbackup.rcm находятся строки:
CONNECT TARGET /
  LIST BACKUP;
  EXIT
Тогда следующие два эквивалентные по результату обращения в ОС приведут ко
  входу в RMAN, выполнению этого сценария и выходу:
RMAN CMDFILE=listback.rcm NOCATALOG
RMAN @listback.rcm NOCATALOG
При использовании каталога RMAN возможно к тому же использование хранимого
  сценария:
RMAN> REPLACE SCRIPT reportobsolete { REPORT OBSOLETE; }
Пример обращения в хранимому в каталоге сценарию:
RMAN> RUN { EXECUTE SCRIPT reportobsolete; }