Для того чтобы начать применение 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 строк.