Командные файлы Менеджера Восстановления и проверка команд, установка переменных среды, команды и способы запуска RMAN

Рубрика: Oracle

Здравствуйте, уважаемые читатели блога okITgo.ru! В этой статье (и нескольких последующих рубрики Oracle) я хочу рассказать, как начать работать с клиентом RMAN, а также как подготовить среду RMAN, установив переменные среды (NLS_LANG и др.), для выполнения вашей стратегии бэкапа и восстановления. Вы узнаете об использовании командных файлов, о возможности проверки команд посредством ключевого слова checksyntax, которое также применимо для проверки командных файлов. Будут показаны примеры команд RMAN, а также способы запуска RMAN.

Замечание:
Хотя Ретроспективная База Данных Oracle и гарантированные точки реставрации и не являются в действительности настоящими бэкапами базы данных, они могут быть важной составляющей вашей стратегии защиты данных. Эти возможности могут потребовать некоторой начальной установки, в зависимости от того, каким образом Вы включаете их в вашу стратегию бэкапа. В ближайшее время я планирую подробно описать, как настроить вашу базу данных для использования этих возможностей (подписаться на обновления блога по RSS/Email).


Обзор Взаимодействия с Клиентом RMAN

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

Запуск RMAN и Выход из него

У Вас есть несколько основных способов запуска RMAN:

  • Запуск испольнительного файла RMAN из командной строки ОС без указания каких-либо опций соединения, как в этом примере:
    % rman
  • Запуск испольнительного файла RMAN из командной строки ОС с подключением к целевой базы данных и, возможно, к каталогу восстановления, как в этих примерах:
    % rman TARGET /
    % rman TARGET SYS/oracle@trgt NOCATALOG
    % rman TARGET / CATALOG rman/cat@catdb
Замечание:
Большинство команд RMAN требуют подключения RMAN по крайней мере к целевой базе данных для выполнения полезной работы. В следующей статье рубрики Oracle я подробнее напишу про подключение RMAN к различным типам баз данных.

Замечание 2:
При подключении RMAN к целевой БД, будет выведен ее DBID.
Из SQL Plus DBID базы можно узнать, используя запрос:
    SELECT db.dbid,
        db.version_time,
        db.controlfile_created
    FROM v$database db

Чтобы выйти из RMAN и завершить программу, напечатайте EXIT или QUIT в командной строке RMAN (приглашение или подсказка Менеджера Восстановления выглядит как RMAN>). Например:

RMAN> EXIT

Установка Переменных Среды Поддержки Глобализации для RMAN

Перед тем, как использовать (invoking) RMAN, может оказаться полезным установить переменные среды NLS_DATE_FORMAT и NLS_LANG. Эти переменные определяют формат, используемый для параметров времени в комадах RMAN, таких как RESTORE, RECOVER и REPORT.

Следующий пример показывает типичные настройки языка и даты:

NLS_LANG=american
NLS_DATE_FORMAT=’Mon DD YYYY HH24:MI:SS’

Если Вы собираетесь использовать RMAN для подключения к несмонтированной базе данных и монтировать ее позже в то время, как RMAN еще по прежнему подключен, то установите переменную среды NLS_LANG так, чтобы она также указывала кодировку (набор символов), используемую базой данных.

База данных, которая не смонтирована, предполагает кодировку по умолчанию, т.е. US7ASCII. Если ваша кодировка будет отличаться от кодировки по умолчанию, то RMAN возвращает ошибки после того, как база данных будет смонтирована. Например, если кодировка равна WE8DEC, Вы можете установить параметр NLS_LANG следующим образом:

NLS_LANG=american_america.we8dec

NLS_LANG и NLS_DATE_FORMAT должны быть установлены для использования NLS_DATE_FORMAT.

Ввод Команд RMAN в Командной Строке

Когда клиент RMAN готов для ввода ваших команд, он отображает подсказку командной строки, как в этом примере:

RMAN>

Можно вводить команды, которые должен выполнить RMAN. Например:

RMAN> CONNECT TARGET /
RMAN> CONNECT CATALOG rman/rman@inst2

RMAN> BACKUP DATABASE ;

Большинство команд RMAN имеют ряд параметров и должны оканчиваться точкой с запятой. (С несколькими исключениями, такими как STARTUP, SHUTDOWN и CONNECT, которые могут использоваться с или без точки с запятой.)

Когда Вы вводите строку текста, которая не является завершенной командой, RMAN приглашает продолжить ввод, добавляя номер строки. Например:

RMAN> BACKUP DATABASE
2> INCLUDE CURRENT
3> CONTROLFILE
4> ;

Использование Командных Файлов с RMAN

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

BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;

Вы можете запустить этот командный файл из командной строки, как показано в этом примере, и команда, содержащаяся в нем, будет выполнена:

% rman TARGET / @cmdfile1

После выполнения команды, приложение RMAN завершается.

Вы также можете использовать команду @ в самой командной строке RMAN для выполнения содержимого командного файла во время сеанса RMAN. RMAN читает этот файл и выполняет команды в нем. Например:

RMAN> @cmdfile1

После того, как будет выполнены все команды в командном файле, RMAN показывает следующее сообщение:

RMAN> **end-of-file**

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

Синтаксическая Проверка Команд RMAN и Командных Файлов: CHECKSYNTAX

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

% rman CHECKSYNTAX
Recovery Manager: Release 10.2.0.1.0 - Production on Sun Jun 12 02:41:03 2005
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
RMAN> run [ backup database; ] 
 
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01006: error signalled during parse 
RMAN-02001: unrecognized punctuation symbol "["
 
RMAN> run { backup database; }

The command has no syntax errors

RMAN>

Проверка Синтаксиса RMAN в Командных Файлах: Пример

Чтобы протестировать команды в командном файле, запустите RMAN с параметром CHECKSYNTAX и используйте аргумент @ для указания имени командного файла, который требуется разобрать. Например, используйте текстовый редактор для создания командного файла /tmp/goodcmdfile со следующим содержанием:

#командный файл с корректным синтаксисом
restore database;
recover database;

Также создайте другой командный файл, /tmp/badcmdfile, с таким содержанием:

#командный файл с неправильными
#синтаксическими командами
restore database
recover database

Когда Вы запускаете командные файлы через RMAN с CHECKSYNTAX, вывод будет:

% rman CHECKSYNTAX @/tmp/goodcmdfile
Recovery Manager: Release 10.2.0.1.0 - Production on Sun Jun 12 02:41:03 2005
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
RMAN> # командный файл с корректным синтаксисом
2> restore database;
3> recover database;
4>
The cmdfile has no syntax errors
 
Recovery Manager complete.



% rman checksyntax @/tmp/badcmdfile
Recovery Manager: Release 10.2.0.1.0 - Production on Sun Jun 12 02:41:03 2005
 
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
RMAN> #командный файл с синтаксической ошибкой
2> restore database
3> recover
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01005: syntax error: found "recover": expecting one of: "archivelog, 
      channel, check, controlfile, clone, database, datafile, device, 
      from, force, high, (, preview, ;, skip, spfile, standby, tablespace, 
      until, validate"
RMAN-01007: at line 3 column 1 file: /tmp/badcmdfile

В следующей статье по Oracle я расскажу о подключении клиента RMAN к базам данных. Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.

Рубрика: Oracle