3.11 RMAN

目的

RMANコマンドを使用すると、オペレーティング・システムのコマンドラインからRMANを起動できます。

前提条件

RMANコマンドと任意のオプションは、RMANプロンプトではなく、オペレーティング・システムのコマンドラインで発行する必要があります。

RMANによるデータベースへの接続は、SQL*Plusによるデータベースへの接続と同じ方法で指定および認証します。RMANによるターゲット・データベースまたは補助データベースへの接続にはSYSBACKUP権限が必要である点のみが異なります。

関連項目:

注意:

適切なセキュリティ・プラクティスとして、コマンドラインにプレーン・テキストでパスワードを入力しないことが必要です。RMANでは、RMANプロンプトで要求された場合にのみパスワードを入力してください。パスワード保護については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

使用上の注意

オペレーティング・システムのプロンプトで入力するコマンド名は、オペレーティング・システムによって異なります。たとえば、LinuxシステムおよびUNIXシステムでは、小文字でrmanと入力します。

オペレーティング・システムのコマンドラインでCATALOGまたはNOCATALOGを指定せずにRMANを起動した場合、CONNECT CATALOGコマンドを実行しないかぎり、RMANセッションはNOCATALOGモードになります(例3-48を参照)。リカバリ・カタログを保持する場合は、RMAN操作を実行する前にリカバリ・カタログに接続することをお薦めします。

構文

cmdLine::=

セマンティクス

cmdLine

構文要素 説明

APPEND

新規出力をメッセージ・ログ・ファイルの終わりに追加させます。このパラメータを指定せず、かつメッセージ・ログ・ファイルと同じ名前のファイルがある場合、RMANはそのファイルを上書きします。

CHECKSYNTAX

入力されたコマンドに対して構文エラーをチェックするモードでRecover Managerを起動させますが、それ以外の処理は実行しません(例3-51を参照)。引数CMDFILEまたは@とともに使用すると、RMANクライアントが起動し、ファイル内のすべてのコマンドをチェックしてから終了します。コマンド・ファイルを指定せずに使用すると、RMANによって、入力が求められ、ユーザーがRMANクライアントを終了するまで各コマンドが解析されます。

RMANは、構文が正しくないそれぞれのコマンドに対してエラーRMAN-0558をレポートします。

AUXILIARY connectStringSpec

補助データベースへの接続文字列を指定します(例: AUXILIARY sbu@dupdb)。

関連項目: connectStringSpecを参照してください

CATALOG connectStringSpec

リカバリ・カタログを格納するデータベースへの接続文字列を指定します(例: CATALOG rco@inst2)。

関連項目: connectStringSpecを参照してください

CMDFILE filename

ファイル内のすべてのRMANコマンドを解析し、コンパイルしてから、順番に実行します。解析フェーズで構文エラーが発生するか、実行フェーズでランタイム・エラーが発生すると、RMANは終了します。エラーが見つからなければ、RMANはジョブの完了後に終了します。

ファイル名の最初の文字がアルファベットの場合は、ファイル名を囲む引用符を省略できます。コマンド・ファイルの内容は、RMANプロンプトに入力した内容と同じです。

注意: コマンド・ファイルをオペレーティング・システムのコマンドラインでオプションとして実行するのではなく、RMANプロンプトから実行すると、ファイルは1つのジョブとして実行されません。RMANは各行を順次読み込んで実行し、スクリプトの最終行に達した場合にのみ終了します。

@filename

CMDFILEと同じです。

   {string_or_identifier   | integer}

USING構文の後に指定されているオプションと同じです。

LOG filename

RMANがその出力として、処理済のコマンドとその結果を記録するファイルを指定します。RMANはプロンプトにコマンド入力を表示しますが、コマンドの出力は表示せずにログ・ファイルに書き込みます。デフォルトでは、RMANはメッセージ・ログ・ファイルを標準出力に書き出します。

また、RMAN出力は、V$RMAN_OUTPUTビュー(実行中のジョブのメモリー専用ビュー)およびV$RMAN_STATUSビュー(完了したジョブおよび実行中のジョブの制御ファイル・ビュー)内にも格納されます。

LOGパラメータを指定すると、指定したファイルをオープンできない場合にもRMANは終了しません。かわりに、RMANによって標準出力が書き込まれます。

注意: RMANの出力をログ・ファイルと標準出力の両方に送信する最も簡単な方法は、Linuxのteeコマンドまたはこれに相当するコマンドを使用することです。例:

% rman | tee rman.log

MSGNO

RMANは、すべてのコマンドに対してRMAN-xxxxの形式でメッセージ番号を出力します。デフォルトでは、RMANはRMAN-xxxx接頭辞を出力しません。

NOCATALOG

リカバリ・カタログなしでRMANを使用するように指定します。

SEND 'command'

ベンダー固有のコマンド文字列を割り当てられたチャネルすべてに送信します。

関連項目: この機能のサポートの有無は、メディア管理ソフトウェアのドキュメントおよびSENDを参照してください。

PIPE pipe_name

RMANパイプ・インタフェースを起動します。RMANでは、コマンドの受信用と出力の送信用に1つずつ、2つのパブリック・パイプが使用されます。パイプの名前はPIPEパラメータの値から導出されます。たとえば、オプションPIPE rpi TARGET /を指定してRMANパイプ・インタフェースを起動できます。

RMANはターゲット・データベース内で次のパイプをオープンします。

  • ORA$RMAN_RPI_IN。RMANはこのパイプを使用してユーザー・コマンドを受信します。

  • ORA$RMAN_RPI_OUT。RMANはこのパイプを使用してすべての出力を送信します。

入力と出力の両方のパイプでは、すべてのメッセージはVARCHAR2型です。

関連項目: パイプを通じてRMANにコマンドを渡す方法については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

SCRIPT script_name

ストアド・スクリプトの名前を指定します。

RMANは、ターゲット・データベースおよびリカバリ・カタログ(TARGETおよびCATALOGオプションを使用して指定する必要がある)に接続した後、指定したストアド・スクリプトをリカバリ・カタログからターゲット・データベースに対して実行します。ターゲット・データベースにscript_nameという名前を持つグローバル・スクリプトとローカル・ストアド・スクリプトの両方が存在する場合、RMANはローカル・スクリプトを実行します。

ストアド・スクリプト名が数字またはRMANの予約語で始まる場合は、そのスクリプト名を一重引用符で囲む必要があります(RMANの予約語を参照)。このような名前は使用しないようにします。

関連項目: ストアド・スクリプトの詳細は、CREATE SCRIPTを参照してください。

TARGET connectStringSpec

ターゲット・データベースへの接続文字列を指定します。たとえば、TARGET /のように指定します。

関連項目: connectStringSpecを参照してください

TIMEOUT integer

integer秒以内に入力パイプから入力を受け取らなかった場合に、RMANを自動的に終了させます。TIMEOUTを使用する場合は、PIPEパラメータを指定する必要があります。

関連項目: パイプを通じてRMANにコマンドを渡す方法については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

USING {string_or_identifier | integer}

コマンド・ファイルの置換変数で使用する値を1つ以上指定します。SQL*Plusの場合と同じく、&1は最初の値を配置する場所を示し、&2は2番目の値を配置する場所を示し、以降も同様に値が示されます。USING句で指定した値をRMANコマンド・ファイルに渡す方法は、例3-50で説明します。

置換変数の構文は、&integerの後にオプションでドットが続きます(&1.3など)。オプションのドットは変数の一部であり、値と置換されますので、置換テキストの直後に別の整数を続けることができます。たとえば、置換変数&1.3が含まれているコマンド・ファイルに値mybackupを渡すと、その置換結果はmybackup3になります。

関連項目: ストアド・スクリプトを実行する場合のUSING句の指定方法は、EXECUTE SCRIPTを参照してください。

例3-48 デフォルトのNOCATALOGモードでのターゲット・データベースへのRMANの接続

この例では、オペレーティング・システム・プロンプトでデータベース接続オプションを指定せずにRMANクライアントを起動します。RMANプロンプトで、CONNECTコマンドを実行してターゲット・データベースに接続します。CONNECT CATALOGがRMANプロンプトで実行されなかったため、RMANはリポジトリ接続を必要とする最初のコマンド(この場合は、BACKUP DATABASEコマンド)の実行時にデフォルトのNOCATALOGモードで接続します。

% rman
RMAN> CONNECT TARGET /
RMAN> BACKUP DATABASE;

例3-49 補助データベース・インスタンスへのRMANの接続

この例では、ターゲット・データベースprodおよびリカバリ・カタログ・データベースcatdbにはネット・サービス名を使用して接続し、補助データベース・インスタンスにはオペレーティング・システム認証を使用して接続します。sbuは、SYSBACKUP権限を付与されたユーザーです。

$ RMAN TARGET "sbu@prod AS SYSBACKUP"
 
Recovery Manager: Release 12.1.0.1.0 - Production on Wed Jan 16 09:29:02 2013
 
Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.
 
target database Password: password
connected to target database: REL12 (DBID=3152825380)
 
RMAN> CONNECT CATALOG rco@catdb
 
recovery catalog database Password: password
connected to recovery catalog database
 
RMAN> CONNECT AUXILIARY /
 
connected to auxiliary database: REL12 (DBID=3152825380)

例3-50 置換変数の指定

データベースをバックアップするLinuxシェル・スクリプトを作成するとします。シェル変数を使用して、実行時にRMANのバックアップ・スクリプトに引数を渡すことができるようにします。置換変数を使用すると、この問題が解決します。最初に、次のような内容で、whole_db.cmdという名前のコマンド・ファイルを作成します。

cat > /tmp/whole_db.cmd <<EOF
# name: whole_db.cmd
CONNECT TARGET /
BACKUP TAG &1 COPIES &2 DATABASE FORMAT '/disk2/db_%U';
EXIT;
EOF

次に、cshシェル変数のtagnameおよびcopiesを設定するLinuxシェル・スクリプトを次のように記述します。シェル・スクリプトにより、RMANが起動され、ターゲット・データベースprod1に接続され、whole_db.cmdが実行されます。USING句は、実行時に変数tagnameおよびcopiesの値をRMANコマンド・ファイルに渡します。

#!/bin/csh
# name: runbackup.sh
# usage: use the tag name and number of copies as arguments
set tagname = $argv[1]
set copies = $argv[2]
rman @'/tmp/whole_db.cmd' USING $tagname $copies LOG /tmp/runbackup.out
# the preceding line is equivalent to:
# rman @'/tmp/whole_db.cmd' $tagname $copies LOG /tmp/runbackup.out

最後に、次のようにLinuxシェルからシェル・スクリプトrunbackup.shを実行し、タグQ106を使用してデータベースのバックアップを2つ作成します。

% runbackup.sh Q106 2

例3-51 コマンド・ファイルの構文のチェック

次のように、コマンド・ファイルbackup_db.cmdを作成するとします。

cat > /tmp/backup_db.cmd <<EOF
CONNECT TARGET /
BACKUP DATABASE;
EXIT;
EOF

次の例では、コマンド・ファイルbackup_db.cmdの内容を構文チェックします(例には出力例も含まれます)。

% rman CHECKSYNTAX @'/tmp/backup_db.cmd'

Recovery Manager: Release 12.1.0.1.0 - Production on Wed Jan 16 17:51:30 2013
 
Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.
 
RMAN> CONNECT TARGET *
2> BACKUP DATABASE;
3> EXIT;
The cmdfile has no syntax errors
 
Recovery Manager complete.

例3-52 ストアド・スクリプトの実行とメッセージ・ログへの出力の追加

この例では、オペレーティング・システム認証を使用してターゲット・データベースに接続した後、ストアド・スクリプトwdbbを実行します。RMANにより、出力がメッセージ・ログ/tmp/wdbb.logに書き込まれます。

% rman TARGET / SCRIPT wdbb LOG /tmp/wdbb.log

例3-53 RMANパイプ・インタフェースの起動

この例では、タイムアウト・オプションで90秒を指定して、RMANパイプnewpipeを起動します。

% rman PIPE newpipe TARGET / TIMEOUT 90