ヘッダーをスキップ
Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
11g リリース2(11.2)
B56269-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 RMANクライアントの起動および操作

この章では、RMANコマンドライン・インタフェースを起動する方法およびデータベースに接続する方法について説明します。この章の内容は次のとおりです。

RMANの起動および終了

このRMAN実行可能ファイルは、データベースとともに自動的にインストールされ、通常、他のデータベース実行可能ファイルと同じディレクトリに配置されます。たとえば、Linuxの場合、RMANクライアントは$ORACLE_HOME/binに配置されています。RMANを起動する場合、次の基本的なオプションがあります。

  • オペレーティング・システムのコマンドラインで、接続オプションを指定せずにRMAN実行可能ファイルを起動します。次に例を示します。

    % rman
    
  • ターゲット・データベースおよび(場合によっては)リカバリ・カタログに接続している間に、オペレーティング・システムのコマンドラインでRMAN実行可能ファイルを起動します。次に例を示します。

    % rman TARGET /                       # operating system authentication
    % rman TARGET SYS@prod NOCATALOG      # RMAN prompts for SYS password
    % rman TARGET / CATALOG rco@catdb     # RMAN prompts for rco password
    

注意:

ほとんどのRMANコマンドでは、有効な作業を実行するためにRMANが1つ以上のターゲット・データベースに接続している必要があります。RMANを様々なタイプのデータベースに接続する方法の詳細は、「RMANによるデータベース接続の確立」を参照してください。

RMANやプログラムを終了するには、RMANプロンプトでEXITまたはQUITと入力します。

RMAN> EXIT

関連項目:

RMANコマンドラインの構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

RMAN出力の場所の指定

デフォルトでは、RMANはコマンド出力を標準出力に書き込みます。出力をログ・ファイルにリダイレクトするには、次の例に示すように、RMANの起動時にコマンドラインでLOGパラメータを入力します。

% rman LOG /tmp/rman.log

この場合、RMANによってコマンド入力は表示されますが、RMAN出力は表示されません。RMAN出力をログ・ファイルと標準出力の両方に送信する場合は、Linuxのteeコマンドまたは同等のコマンドを使用する方法が最も簡単です。たとえば、次の方法で、入力と出力の両方をRMANコマンドライン・インタフェース内に表示できます。

% rman | tee rman.log
RMAN>

関連項目:

RMANコマンドライン・オプションについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

RMANのグローバリゼーション・サポート環境変数の設定

RMANを起動する前に、NLS_DATE_FORMATおよびNLS_LANG環境変数を設定すると役立つ場合があります。これらの変数では、RMANのRESTORERECOVERREPORTなどのコマンドの時間パラメータに使用される書式を決定します。

次に、一般的な言語および日付書式の設定例を示します。

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_DATE_FORMATを適用して、サーバー初期化ファイル内のサーバーのデフォルト設定を上書きするには、環境変数NLS_LANGの設定も必要です。


参照:

  • NLS_LANGおよびNLS_DATE_FORMATパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • Oracle Databaseグローバリゼーション・サポート・ガイド


RMANコマンドの入力

RMANコマンドは、RMANプロンプトから直接入力するか、またはテキスト・ファイルから読み取ることができます。

この項の内容は、次のとおりです。

RMANプロンプトでのRMANコマンドの入力

RMANクライアントでコマンドを受け入れる準備が整うと、次の例に示すようなコマンド・プロンプトが表示されます。

RMAN> 

RMANで実行するコマンドを入力します。次に例を示します。

RMAN> CONNECT TARGET
RMAN> BACKUP DATABASE;

RMANのほとんどのコマンドでは、いくつかのパラメータを使用し、末尾にセミコロンを付ける必要があります。STARTUPSHUTDOWNCONNECTなどのいくつかのコマンドは、セミコロンの有無に関係なく使用できます。

完全なコマンドではないテキスト行を入力すると、RMANは、行番号を表示して入力の継続を求めます。次に例を示します。

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

RMANでのコマンド・ファイルの使用

繰返し作業の場合は、RMANコマンドを含むテキスト・ファイルを作成し、@引数の後にファイル名を続けてRMANクライアントを起動します。たとえば、現行のディレクトリに次のテキスト行を含むテキスト・ファイルcmdfile1を作成します。

BACKUP DATABASE PLUS ARCHIVELOG;

このコマンド・ファイルをコマンドラインから実行すると、コマンド・ファイルに含まれているコマンドが実行されます。次に例を示します。

% rman TARGET / @cmdfile1

コマンドの完了後、RMANは終了します。

また、RMANコマンド・プロンプトで@コマンドを使用すると、RMANセッション中にコマンド・ファイルの内容を実行できます。RMANは、ファイルを読み取って、その中のコマンドを実行します。次に例を示します。

RMAN> @cmdfile1

RMANは、コマンド・ファイル内のコマンドの実行後、次のメッセージを表示します。

RMAN>  **end-of-file**

オペレーティング・システムのコマンドラインからコマンド・ファイルを実行した場合と異なり、RMANは終了しません。


関連項目:

RMANコマンドラインの構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

RMANコマンド・ファイルへのコメントの入力

RMANでのコメント文字は、シャープ記号(#)です。行のシャープ記号から最後までのテキストはすべて無視されます。たとえば、次のコマンド・ファイルの内容は、データベースおよびアーカイブREDOログをバックアップし、コメントを追加します。

# Command file name: mybackup.rman
# The following command backs up the database
BACKUP DATABASE;
# The following command backs up the archived redo logs
BACKUP ARCHIVELOG ALL;

次の例では、単一のRMANコマンドを複数の行に分割できることを示します。

RMAN> BACKUP # this is a comment
2> SPFILE;

Starting backup at 30-APR-07
allocated channel: ORA_DISK_1
     .
     .
     .

コマンド・ファイルでの置換変数の使用

コマンド・ファイルの実行時に、コマンド・ファイル内の置換変数で使用される1つ以上の値をUSING句に指定できます。この方法で、コマンド・ファイルを動的にすることができます。

SQL*Plusの場合と同様に、&1は最初の値を配置する場所を示し、&2は2番目の値を配置する場所を示します。それ以降も同様です。置換変数の構文では、&integerの後にオプションのピリオドが続きます。たとえば、&1.3のようになります。オプションのピリオドは変数の一部であり、値と置換されます。したがって、置換テキストの直後に別の整数を続けることができます。たとえば、値mybackupを変数&1.3を含むコマンド・ファイルに渡すと、置換の結果はmybackup3になります。

次の手順では、置換変数を含むコマンド・ファイルをコールする動的シェル・スクリプトを作成および使用する方法について説明します。

動的シェル・スクリプトを作成および使用する手順

  1. 置換変数を使用するRMANコマンド・ファイルを作成します。

    次に、四半期ごとに実行されるquarterly_backup.cmdという名前のコマンド・ファイルの内容の例を示します。このスクリプトでは、テープ・セットの名前、FORMAT指定内の文字列および作成するリストア・ポイントの名前の置換変数が使用されています。

    # quarterly_backup.cmd
    CONNECT TARGET /
    RUN
    {
      ALLOCATE CHANNEL c1
        DEVICE TYPE sbt
        PARMS 'ENV=(OB_MEDIA_FAMILY=&1)';
      BACKUP DATABASE 
        TAG &2 
        FORMAT '/disk2/bck/&1%U.bck'
        KEEP FOREVER 
        RESTORE POINT &3;
    }
    EXIT;
    
  2. 前の手順で作成したRMANコマンド・ファイルを実行するために使用できるシェル・スクリプトを作成します。

    次の例では、runbackup.shというシェル・スクリプトを作成します。この例では、書式およびリストア・ポイント名のシェル変数を作成し、これらの変数の値をスクリプトへのコマンドライン引数として受け入れます。

    #!/bin/tcsh
    # name: runbackup.sh
    # usage: use the tag name and number of copies as arguments
    set media_family = $argv[1]
    set format = $argv[2]set restore_point = $argv[3]
    rman @'/disk1/scripts/whole_db.cmd' USING $media_family $format $restore_point
    
  3. 前の手順で作成したシェル・スクリプトを実行します。コマンドラインで適切な引数を指定します。

    次の例では、runbackup.shシェル・スクリプトを実行し、メディア・ファミリ名としてarchival_backup、書式文字列としてbck0906、リストア・ポイント名としてFY06Q3を渡します。

    % runbackup.sh archival_backup bck0906 FY06Q3
    

関連項目:

@の構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

RMAN構文の確認

RMANコマンドを実行せずに、その構文の正しさをテストする必要がある場合があります。コマンドライン引数CHECKSYNTAXを使用して、RMANクライアントを起動します。これによって、入力したコマンドの解析のみが行われ、有効なRMAN構文ではないコマンドに対してRMAN-00558エラーが戻されます。


関連項目:

CHECKSYNTAXコマンドライン・オプションについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

コマンドラインでのRMAN構文の確認

コマンドを実際には実行せずに、RMANコマンドの構文を対話形式で確認できます。

RMAN構文をコマンドラインで確認する手順

  1. CHECKSYNTAXパラメータを使用して、RMANを起動します。

    たとえば、次のコマンドを入力します。

    % rman CHECKSYNTAX
    
  2. 確認するRMANコマンドを入力します。

    次に、対話形式のセッションの例を示します。ユーザーが入力するテキストは太字になっています。

    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 signaled during parse 
     RMAN-02001: unrecognized punctuation symbol "["
     
    RMAN> run { backup database; }
    
    The command has no syntax errors
    
    RMAN>
    

コマンド・ファイル内のRMAN構文の確認

コマンド・ファイル内のコマンドをテストするには、CHECKSYNTAXパラメータを指定してRMANを起動し、@コマンドを使用して、渡すコマンド・ファイルの名前を指定します。

コマンド・ファイル内のコマンドをテストする手順

  1. テキスト・エディタを使用してコマンド・ファイルを作成します。

    次の内容の/tmp/goodcmdfileを作成するとします。

    # command file with legal syntax
    RESTORE DATABASE; 
    RECOVER DATABASE;
    

    次の内容の別のコマンド・ファイル/tmp/badcmdfileを作成するとします。

    # command file with bad syntax commands
    RESTORE DATABASE
    RECOVER DATABASE
    
  2. RMANプロンプトから次の形式でコマンド・ファイルを実行します。ここで、filenameはコマンド・ファイルの名前です。

    % rman CHECKSYNTAX @filename
    

    次の例は、CHECKSYNTAXを使用して/tmp/goodcmdfileを実行した場合の出力を示しています。

    RMAN> # command file with legal syntax
    2> restore database;
    3> recover database;
    4>
    The cmdfile has no syntax errors
     
    Recovery Manager complete.
    

    これに対して、次の例は、CHECKSYNTAXを使用して/tmp/badcmdfileを実行した場合の出力を示しています。

    RMAN> #command file with syntax error
    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
    

「コマンド・ファイルでの置換変数の使用」の説明に従って、置換変数を使用してコマンド・ファイルを動的にします。置換変数を含むコマンド・ファイルの構文を確認する場合は、RMANによって値を入力するように求められます。例4-1は、動的コマンド・ファイルの構文を確認する際に無効な値を入力した場合を示しています。太字のテキストは、プロンプトとして入力されたテキストを示しています。

例4-1 無効な構文が含まれているコマンド・ファイルの構文の確認

RMAN> CONNECT TARGET *
2> BACKUP TAG 
Enter value for 1: mybackup
abc COPIES 
Enter value for 2: mybackup
abc
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "integer"
RMAN-01008: the bad identifier was: mybackup
RMAN-01007: at line 2 column 25 file: /tmp/whole_db.cmd

文字列mybackupCOPIESの有効な引数ではないため、RMANは構文エラーを示します。

RMANによるデータベース接続の確立

この項では、ターゲット・データベースにRMANクライアントを接続する方法について説明します。この項では次の項目を取り上げます。

RMANによるデータベース接続

適切な作業を行うために、RMANクライアントをデータベースに接続する必要があります。次の表に、RMANで確立できるデータベース接続のタイプを示します。

表4-1 RMANによるデータベース接続の概要

データベース接続のタイプ キーワード 説明

ターゲット・データベース


TARGET

RMANによってバックアップまたはリストアされるデータベース

リカバリ・カタログ・データベース


CATALOG

制御ファイルとは別の、RMANリポジトリのオプションのバックアップ先となるデータベース

補助インスタンスまたは補助データベース

AUXILIARY

フィジカル・スタンバイ・データベース、または複製データベースの作成、表領域のトランスポート、表領域のPoint-in-Timeリカバリ(TSPITR)の実行などの特定の作業を実行するために作成されたデータベース・インスタンス

補助データベースを使用する多くのタスクとして、RMANは、タスク実行中に使用する自動補助インスタンスを作成し、そのインスタンスに接続してタスクを実行し、タスクの完了時にそのインスタンスを破棄します。自動補助インスタンスに接続するために明示的なコマンドは指定しません。


RMANによるデータベース接続の認証

RMANによるデータベースへの接続は、SQL*Plusによるデータベースへの接続と同じ方法で指定および認証します。RMANによるターゲット・データベースまたは補助データベースへの接続にはSYSDBA権限が必要である点のみが異なります。AS SYSDBAキーワードは、ターゲット接続および補助接続に対して暗黙的に指定され、明示的には指定できません。

リカバリ・カタログへの接続では、SYSDBA権限は必要ありません。カタログ・スキーマの所有者には、RECOVERY_CATALOG_OWNERロールを付与する必要があります。


関連項目:

SQL*Plusを使用する場合のデータベース接続オプションについては、『Oracle Database管理者ガイド』を参照してください。

オペレーティング・システムを使用した、RMANによるデータベース接続の認証

オペレーティング・システム認証を使用してデータベースに接続するには、Oracle SIDを指定する環境変数を設定する必要があります。たとえば、UNIXシェルでSIDをprodに設定するには、次のように入力します。

% ORACLE_SID=prod; export ORACLE_SID

オペレーティング・システム認証を使用すると、特別なオペレーティング・システム・グループによってSYSDBA接続が制御されます。通常、このグループはOSDBAと呼ばれます。このグループは、データベースのインストール・プロセスの一環として作成され、特定の名前が割り当てられます。この特定の名前は、オペレーティング・システムによって異なります。

現行のオペレーティング・システム・ユーザーがOSDBAグループのメンバーで、Oracle SIDが設定されている場合は、次のように入力すると、RMANがSYSDBA権限でこのデータベースに接続できます。

% rman TARGET /
パスワード・ファイルを使用した、RMANによるデータベース接続の認証

データベースでパスワード・ファイルが使用されている場合、RMANはパスワードを使用してこのデータベースに接続できます。パスワード・ファイルは、ローカルまたはリモート・アクセスに使用します。ネット・サービス名を指定してSYSDBAでリモート接続する場合は、パスワード・ファイルを使用する必要があります。


注意:

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

RMANは、次の例のように、接続文字列にパスワードを含めずに起動できます。

% rman TARGET SYS@prod

target database Password: password
connected to target database: PROD1 (DBID=39525561)

RMANによってパスワードの入力が求められますが、文字はエコーされません。

オペレーティング・システムのコマンドラインからのRMANによるデータベース接続の確立

オペレーティング・システムのコマンドラインからターゲット・データベースに接続するには、rmanコマンドの後に接続情報を続けて入力します。RMANプロンプトが表示されたら、コマンドの実行を開始できます。

表4-2に、この章の例で使用される一般的な値の意味を示します。

表4-2 例の値

例で使用される値 意味

SYS

SYSDBA権限を持つユーザー

prod

ターゲット・データベースのネット・サービス名。

rco

リカバリ・カタログのスキーマを所有するユーザー。このユーザーは、RECOVERY_CATALOG_OWNERロールが付与されているリカバリ・カタログ・データベースで定義されています。

catdb

リカバリ・カタログ・データベースのネット・サービス名。

aux

補助インスタンスのネット・サービス名。


例4-2は、オペレーティング・システム認証を使用するターゲット・データベースへの接続を示しています。NOCATALOGオプションは、セッションでリカバリ・カタログが使用されないことを示します。

例4-2 システム・プロンプトからのターゲット・データベースへの接続

% rman TARGET / NOCATALOG

connected to target database: PROD (DBID=39525561)
using target database control file instead of recovery catalog
 
RMAN>

例4-3は、Oracle Net認証を使用するターゲット・データベースへの接続を示しています。RMANによってパスワードの入力を求められます。

例4-3 システム・プロンプトからのターゲット・データベースへの接続

% rman TARGET SYS@prod NOCATALOG

target database Password: password
connected to target database: PROD (DBID=39525561)

RMAN>

CATALOGキーワードを使用してリカバリ・カタログに接続します。例4-4は、ターゲット・データベースおよびリカバリ・カタログ・データベースに対してOracle Net認証を使用する接続を示しています。いずれの場合も、RMANによってパスワードの入力を求められます。

例4-4 システム・プロンプトからのターゲット・データベースおよびカタログ・データベースへの接続

% rman TARGET SYS@prod CATALOG rco@catdb

target database Password: password
connected to target database: PROD (DBID=39525561)
recovery catalog database Password: password
connected to recovery catalog database

RMAN>

NOCATALOGまたはCATALOGを指定せずにRMANを起動することもできます。コマンドラインでNOCATALOGを指定しない場合、およびRMANの起動後にCONNECT CATALOGを指定しない場合、RMANリポジトリの使用を必要とするコマンドを初めて実行したときに、RMANはデフォルトでNOCATALOGモードになります。


注意:

RMANリポジトリを使用するコマンドをNOCATALOGモードで実行した後で、リカバリ・カタログに接続するには、RMANを終了して再起動する必要があります。

オペレーティング・システムのコマンドラインでターゲット・データベースに接続する場合は、RMANプロンプトが表示された後で、コマンドの実行を開始できます。

RMANプロンプトからのデータベース接続の確立

ターゲット・データベースに接続せずにRMANを起動する場合は、RMANプロンプトでCONNECT TARGETコマンドを発行してターゲット・データベースに接続してから、便利な処理の実行を開始する必要があります。

RMANプロンプトからデータベース接続を確立する手順

  1. オペレーティング・システムのコマンドラインで、データベース接続を確立せずにRMANクライアントを起動します。たとえば、rmanを次のように入力します。

    % rman
    RMAN>
    
  2. RMANプロンプトで、1つ以上のCONNECTコマンドを入力します。

    次の例では、オペレーティング・システム認証を使用してターゲット・データベースに接続します。

    RMAN> CONNECT TARGET /
    

    次の例では、ターゲット・データベースに接続した後、リカバリ・カタログに接続します。ターゲット接続ではオペレーティング・システム認証が使用され、カタログ・データベース接続ではOracle Net認証が使用されます。RMANによって、リカバリ・カタログ・ユーザーのパスワードの入力を求められます。

    RMAN> CONNECT TARGET /
    RMAN> CONNECT CATALOG rco@catdb
    
    recovery catalog database Password: password
    connected to recovery catalog database
    

    次の例では、データベース・レベルの資格証明でターゲット・データベースに接続します。RMANによってSYSパスワードの入力を求められます。

    % rman
    RMAN> CONNECT TARGET SYS@prod
    
    target database Password: password
    connected to target database: PROD (DBID=39525561)
    

関連項目:

CONNECTコマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。

RMANによる補助データベースへの接続

DUPLICATEコマンドを使用するには、補助インスタンスに接続する必要があります。RMANの表領域のPoint-in-Timeリカバリ(TSPITR)を実行する場合も、補助インスタンスへの接続が必要になることがあります。


注意:

DUPLICATE ... FROM ACTIVE DATABASEコマンドを使用する場合は、ネット・サービス名が必要です。詳細は、「手順5: 初期化パラメータ・ファイルの作成と補助インスタンスの起動」を参照してください。

補助接続の形式はターゲット・データベース接続と同じですが、TARGETキーワードのかわりにAUXILIARYキーワードを使用します。例4-5では、RMANプロンプトからターゲット・データベースおよび補助インスタンスに接続しています。

例4-5 RMANプロンプトからのターゲットおよび補助データベースへの接続

% rman
RMAN> CONNECT TARGET /
RMAN> CONNECT AUXILIARY SYS@aux

auxiliary database Password: password
connected to auxiliary database: PROD (DBID=30472568)

関連項目:


コマンド・ファイル内でのRMANによるデータベース接続の確立

CONNECTコマンドとともにデータベース・レベルの資格証明(ユーザー名とパスワード)を使用するRMANコマンド・ファイルを作成した場合、このファイルへの読取りアクセスを持つすべてのユーザーがパスワードを知ることができます。CONNECT文字列とパスワードをコマンド・ファイルに組み込む安全な方法はありません。

CONNECTコマンドを使用するRMANコマンド・ファイルを作成した場合に、@コマンドを使用してそのコマンド・ファイルを実行すると、RMANは接続文字列をエコーしません。この動作により、RMANの出力を含むどのログ・ファイルにも接続文字列が記録されなくなります。たとえば、次のように、コマンド・ファイルlistbkup.rmanを作成するとします。

cat > listbkup.rman << EOF
CONNECT TARGET /
LIST BACKUP;
EOF

RMANを@コマンドライン・オプションを指定して実行し、このスクリプトを実行します。

% rman @listbkup.rman

このコマンド・ファイルを実行すると、次の出力に示すように、接続文字列がアスタリスクに置き換えられます。

RMAN> CONNECT TARGET *
2> LIST BACKUP;
3>
connected to target database: RDBMS (DBID=771530996)

using target database control file instead of recovery catalog

List of Backup Sets
===================
. . .

RMANによる接続で発生した問題の診断

ターゲット・データベース、カタログ・データベースおよび補助データベースへの接続時にRMANで発生したエラーを診断する際、SQL*Plusを使用してこれらのデータベースに直接接続すると、接続情報またはデータベースに関する根本的な問題を検出できます。

ターゲット・データベースおよび補助データベースへの接続時に発生した問題の診断

RMANは、常にSYSDBA権限を使用してターゲット・データベースおよび補助データベースに接続します。このため、SQL*Plusを使用してターゲット・データベースおよび補助データベースへの接続時に発生した問題を診断する場合は、SYSDBA接続を要求して、RMANの動作を再現します。

たとえば、次のRMANコマンドで接続エラーが発生したとします。

RMAN> CONNECT TARGET /

この場合、次のSQL*Plusコマンドを使用して前の接続操作を再現します。

SQL> CONNECT / AS SYSDBA

リカバリ・カタログへの接続時に発生した問題の診断

RMANでリカバリ・カタログ・データベースに接続する場合、SYSDBA権限は使用されません。そのため、SQL*Plusを使用してリカバリ・カタログ・データベースへの接続時に発生した問題を診断する場合は、RMANに入力したものと同じデータベース接続文字列を入力する必要があります。AS SYSDBAは指定しないでください。

RMANのパイプ・インタフェースの使用

RMANにコマンドを発行してそれらのコマンドから出力を受信するかわりに、RMANのパイプ・インタフェースを使用できます。このインタフェースを使用すると、RMANは、オペレーティング・システム・シェルではなくDBMS_PIPE PL/SQLパッケージによってコマンドを取得し、出力を送信します。このインタフェースを使用することによって、RMANへのポータブル・プログラム・インタフェースを作成できます。

パイプ・インタフェースを起動するには、RMANクライアントのPIPEコマンドライン・パラメータを使用します。RMANは2つのプライベート・パイプを使用します。1つはコマンドの受信用、もう1つは出力の送信用です。パイプの名前はPIPEパラメータの値から導出されます。たとえば、次のコマンドでRMANを起動できます。

% rman PIPE abc TARGET /

RMANは、ターゲット・データベースで2つのパイプをオープンします。ORA$RMAN_ABC_INはユーザー・コマンドの受信に使用するパイプ、ORA$RMAN_ABC_OUTはすべての出力をRMANに戻すために使用するパイプです。入力と出力の両方のパイプでは、すべてのメッセージはVARCHAR2型です。

セキュリティの問題が発生する可能性があるため、RMANでは、パイプ・インタフェースをパブリック・パイプで使用することはできません。パブリック・パイプの場合、パイプ名を知っているすべてのユーザーが、RMANにコマンドを送信してその出力を取得できます。

パイプは、初期化されていない場合はプライベート・パイプとして作成されます。 RMANの起動前に入力パイプにコマンドを入力する場合は、DBMS_PIPE.CREATE_PIPEをコールして最初にパイプを作成しておく必要があります。パイプは、プライベート・パイプとして明示的に作成しないと、そのパイプへの最初のアクセス時に自動的にパブリック・パイプとして作成されます。RMANでパブリック・パイプを使用しようとすると、エラーが戻されます。


注意:

複数のRMANセッションをターゲット・データベースに対して実行する場合は、各RMANセッションに一意のパイプ名を使用する必要があります。一意のパイプ名を生成する方法の1つとして、DBMS_PIPE.UNIQUE_SESSION_NAMEファンクションを使用できます。

パイプを介した複数のRMANコマンドの連続実行の例

この例では、RMANを制御するアプリケーションで複数のコマンドを連続実行します。パイプに各コマンドが送信および実行されて出力が戻されると、RMANは一時停止して次のコマンドを待機します。

パイプを介してRMANコマンドを実行する手順

  1. ターゲット・データベースに接続し(必須)、PIPEオプションを指定してRMANを起動します。たとえば、次のように入力します。

    % rman PIPE abc TARGET /
    

    TIMEOUTオプションを指定することもできます。このオプションを指定すると、指定した時間内(秒単位)に入力パイプから入力を受信しなかった場合、RMANが強制終了されます。たとえば、次のように入力します。

    % rman PIPE abc TARGET / TIMEOUT 60
    
  2. ターゲット・データベースに接続し、DBMS_PIPE.PACK_MESSAGEおよびDBMS_PIPE.SEND_MESSAGEを使用して目的のコマンドを入力パイプに入力します。パイプ・モードでは、RMANで入力の受入れ準備が完了すると、標準RMANプロンプトではなくRMAN-00572メッセージが表示されます。

  3. DBMS_PIPE.RECEIVE_MESSAGEおよびDBMS_PIPE.UNPACK_MESSAGEを使用して、出力パイプからRMAN出力を読み取ります。

  4. 手順2と3を繰り返し、手順1で起動したRMANインスタンスで他のコマンドを実行します。

  5. RMANの起動時にTIMEOUTオプションを使用した場合は、指定した時間内に入力を受信しなければRMANが自動的に終了します。すぐにRMANを終了するには、EXITコマンドを送信します。

パイプを介したRMANコマンドの単一ジョブでの実行の例

この例では、RMANを制御するアプリケーションで1つ以上のコマンドを単一ジョブとして実行します。パイプに入力されたコマンドの実行後、RMANが終了します。

パイプを介して単一ジョブでRMANコマンドを実行する手順

  1. ターゲット・データベースへの接続後、パイプを作成します(ORA$RMAN_pipe_INという名前のパイプが存在しない場合)。

  2. 目的のコマンドを入力パイプに入力します。パイプ・モードでは、RMANで入力の受入れ準備が完了すると、標準RMANプロンプトではなくRMAN-00572メッセージが表示されます。

  3. PIPEオプションを使用してRMANを起動し、TIMEOUT 0を指定します。たとえば、次のように入力します。

    % rman PIPE abc TARGET / TIMEOUT 0
    
  4. DBMS_PIPE.PACK_MESSAGEおよびDBMS_PIPE.SEND_MESSAGEを使用して、パイプに入力されたコマンドを読み取り、実行します。入力パイプのすべてのコマンドを実行すると、RMANはすぐに終了します。

  5. DBMS_PIPE.RECEIVE_MESSAGEおよびDBMS_PIPE.UNPACK_MESSAGEを使用して、出力パイプからRMAN出力を読み取ります。


    関連項目:

    DBMS_PIPEパッケージのドキュメントについては、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。