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

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

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

3-1. Запуск клиента RMAN

Клиент RMAN представляет собой исполняемый файл rman, всегда находящийся в каталоге $ORACLE_HOME/bin. Если была правильно установлена переменная $ORACLE_HOME, запустить RMAN можно из любого места, просто введя rman в командной строке:

[oracle@alfa ~]$ rman

Recovery Manager: Release 10.2.0.3.0 - Production on Thu Apr 21 13:22:05 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Учитывайте, что появление подсказки RMAN вовсе не означает, что произошло подключение клиента к целевой, вспомогательной базе данных или к каталогу восстановления. Если попытаться на данном этапе выполнить какую либо команду, то RMAN будет использовать репозитарий в nocatalog режиме. Дальнейшее подключение к каталогу восстановления в этом случае будет невозможно и придётся перезапускать клиент RMAN, чтобы в дальнейшем можно было без проблем подсоединиться к каталогу.

[oracle@alfa ~]$ rman
Recovery Manager: Release 10.2.0.3.0 - Production on Thu Apr 21 13:31:09 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
RMAN> show all;
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of show command at 04/21/2011 13:31:15
RMAN-06171: not connected to target database
RMAN> connect catalog system/Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-06445: cannot connect to recovery catalog after NOCATALOG has been used

Когда работа с RMAN закончена, достаточно просто ввести команду exit для закрытия клиента RMAN:

RMAN> exit
Recovery Manager complete.

Кроме этого, можно использовать команду quit для прерывания RMAN сессии.

RMAN> quit;
Recovery Manager complete.

3-2. Ввод команд RMAN

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

RMAN> backup database;

Если вводится неполная команда и нажимается ENTER, RMAN всегда запросит, нужно ли продолжать ввод команды. При этом будет произведён переход на новую строку с отображением её номера. К примеру, следующая команда резервирует базу данных вместе с ее контрольным файлом:

RMAN> backup database 
2> include current
3> controlfile 
4> ;

Когда осуществляется ввод команды в таком виде, RMAN буферизует каждую строку, которая заканчивается ENTER, до тех пор, пока не встретится строка заканчивающаяся точкой с запятой. После этого RMAN выполняет введённую команду.

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

# this command will be run daily
backup incremental level 1
for recover of copy # uses incrementally updated backups
database;

Хотя предполагается, что резервные слова не будут использованы в качестве части аргументов команд, всё же такая возможность в RMAN есть. Для этого, достаточно в процессе ввода команды заключить подобные слова в одинарные или двойные кавычки:

RMAN> run{
2> allocate channel 'backup' device type disk;
3> }

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

3-3. Запись вывода RMAN в текстовый файл

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

RMAN> spool log to 'backup.log';
RMAN> backup datafile 1;
RMAN> spool log off;
Spooling for log turned off
Recovery Manager10.2.0.3.0

Заботиться о предварительном наличии файла журнала не стоит. Клиент RMAN сам создаст файл, если он не существует. Если же файл с таким именем уже присутствует в каталоге, то содержимое его будет полностью заменено. Чтобы этого не случилось, можно использовать следующий синтаксис команды spool:

RMAN> spool log to 'backup.log' append;

В данном примере информация будет добавляться в конец файла журнала backup.log. Если необходимо, что бы журнализация RMAN начиналась непосредственно с начала запуска клиента RMAN, в аргумент команды запуска можно добавить ключ «log» с указанием имени файла журнала. Правда надо учитывать, что RMAN в этом случае будет интерактивным. В следующем примере RMAN выполняет командный файл commandfile1.rcv с записью вывода результатов в файл журнала backup.log:

[oracle@alfa ~]$ rman target / cmdfile commandfile1.rcv log backup.log

Файл журнала в данном примере будет перезаписываться при каждом запуске RMAN. Если в дальнейшем потребуется сохранять выходную информацию RMAN в один и тот же журнальный файл, то в командную строку запуска клиента надо добавить аргумент append:

[oracle@alfa ~]$ rman target / cmdfile commandfile2.rcv log backup.log append

Журнализация RMAN, начиная с командной строки, хотя и позволяет сохранять информацию в файл, но она не отображает эту информацию на экране. Если такое отображение всё же требуется, то для таких случаев можно использовать команду «tee» (Unix/Linux), перенаправляя на неё поток стандартного вывода RMAN:

[oracle@alfa ~]$ rman | tee backup.log

Даже если файл журнала не был заранее задан, это вовсе не означает, что нельзя увидеть сообщения производимые RMAN. Существует динамическое представление v$rman_output, в котором эти сообщения дублируются:

SQL> SELECT recid, output FROM v$rman_output
 
RECID OUTPUT
----- -----------------------------------------------------------------------
connected to target database: ORCL (DBID=1265664822)
2
3     backup datafile 1;
4
5                                                                  
6     Starting backup at 26-APR-11 
7     using target database control file instead of recovery catalog
8     allocated channel: ORA_DISK_1
9     channel ORA_DISK_1: sid=140 devtype=DISK
10    channel ORA_DISK_1: starting full datafile backupset
11    channel ORA_DISK_1: specifying datafile(s) in backupset
12    input datafile fno=00001 name=/u02/oradata/orcl/system01.dbf
13    channel ORA_DISK_1: starting piece 1 at 26-APR-11
14    channel ORA_DISK_1: finished piece 1 at 26-APR-11
15    piece 
handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_04_26/o1_mf_nnndf_TAG20110
426T121322_6vdzo2nr_.bkp tag=TAG2
16    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
17    channel ORA_DISK_1: starting full datafile backupset
18    channel ORA_DISK_1: specifying datafile(s) in backupset
19    including current control file in backupset
20    including current SPFILE in backupset
21    channel ORA_DISK_1: starting piece 1 at 26-APR-11
22    channel ORA_DISK_1: finished piece 1 at 26-APR-11
23    piece 
handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_04_26/o1_mf_ncsnf_TAG20110
426T121322_6vdzoxjl_.bkp tag=TAG2
24    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
25    Finished backup at 26-APR-11
26
27

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