ヘッダーをスキップ

Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
11g リリース1(11.1)

E05700-03
目次
目次
索引
索引

戻る 次へ

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

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

Recovery Managerの起動および終了

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

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

RMAN> EXIT

参照:

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

Recovery Manager出力の場所の指定

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

% rman LOG /tmp/rman.log

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

% rman | tee rman.log
RMAN>

参照:

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

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

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

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

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

Recovery Managerを使用してマウントされていないデータベースに接続し、その後、Recovery Managerが接続された状態でそのデータベースをマウントする場合は、NLS_LANG環境変数にデータベースが使用するキャラクタ・セットを指定してください。

マウントされていないデータベースのキャラクタ・セットは、デフォルトのUS7ASCIIとみなされます。キャラクタ・セットがデフォルトと異なる場合、Recovery Managerは、データベースのマウント後にエラーを戻します。たとえば、キャラクタ・セットがWE8DECの場合は、NLS_LANG変数を次のように設定できます。

NLS_LANG=american_america.we8dec

NLS_LANGおよびNLS_DATE_FORMATは、使用されるNLS_DATE_FORMATに対して設定する必要があります。

参照

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

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

 

Recovery Managerコマンドの入力

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

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

Recovery ManagerプロンプトでのRecovery Managerコマンドの入力

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

RMAN> 

Recovery Managerで実行するコマンドを入力します。たとえば、次のように入力します。

RMAN> CONNECT TARGET
RMAN> BACKUP DATABASE;

ほとんどのRecovery Managerコマンドでは、多くのパラメータを指定し、セミコロンで終了する必要があります。STARTUPSHUTDOWNCONNECTなどの一部のコマンドは、セミコロンで終了しているかどうかに関係なく使用できます。

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

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

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

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

BACKUP DATABASE PLUS ARCHIVELOG;

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

% rman TARGET / @cmdfile1

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

Recovery Managerコマンド・プロンプトで@を使用して、Recovery Managerセッション中にコマンド・ファイルの内容を実行することもできます。Recovery Managerは、ファイルを読み取り、ファイル内のコマンドを実行します。たとえば、次のように入力します。

RMAN> @cmdfile1

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

RMAN>  **end-of-file**

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

参照:

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

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

Recovery Managerでのコメント文字は、シャープ記号(#)です。行のシャープ記号から最後までのテキストはすべて無視されます。たとえば、次のコマンド・ファイルの内容は、データベースおよびアーカイブ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;

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

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

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

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

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

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

動的シェル・スクリプトを作成および使用する手順
  1. 置換変数を使用するRecovery Managerコマンド・ファイルを作成します。

    次に、四半期ごとに実行される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. 前の手順で作成したRecovery Managerコマンド・ファイルを実行するために使用できるシェル・スクリプトを作成します。

    次の例では、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バックアップおよびリカバリ・リファレンス』を参照してください。 

Recovery Manager構文の確認

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

参照:

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

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

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

Recovery Manager構文をコマンドラインで確認する手順
  1. CHECKSYNTAXパラメータを使用して、Recovery Managerを起動します。

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

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

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

    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>
    

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

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

コマンド・ファイル内のコマンドをテストする手順
  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. Recovery Managerプロンプトから次の形式でコマンド・ファイルを実行します。ここで、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
    
    

「コマンド・ファイルでの置換変数の使用」の説明に従って、置換変数を使用してコマンド・ファイルを動的にします。置換変数を含むコマンド・ファイルの構文を確認する場合は、Recovery Managerによって値を入力するように求められます。例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の有効な引数ではないため、Recovery Managerは構文エラーを示します。

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

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

Recovery Managerによるデータベース接続

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

表4-1    Recovery Managerによるデータベース接続の概要 
データベース接続のタイプ  キーワード  説明 

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

TARGET 

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

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

CATALOG 

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

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

AUXILIARY 

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

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

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

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

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

参照:

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

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

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

% ORACLE_SID=prod; export ORACLE_SID

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

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

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

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


注意:

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


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

% rman TARGET SYS@prod

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

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

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

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

表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認証を使用するターゲット・データベースへの接続を示しています。Recovery Managerによってパスワードの入力を求められます。

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

% rman TARGET SYS@prod NOCATALOG

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

RMAN>

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

例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を指定せずにRecovery Managerを起動することもできます。コマンドラインでNOCATALOGを指定しなかった場合およびRecovery Managerの起動後にCONNECT CATALOGを指定しなかった場合、Recovery Managerリポジトリを使用する必要があるコマンドを初めて実行すると、Recovery ManagerはデフォルトでNOCATALOGモードに設定されます。


注意:

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


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

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

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

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

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

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

    RMAN> CONNECT TARGET /
    
    

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

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

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

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

    参照:

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

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

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


注意:

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


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

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

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

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

参照:

 

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

データベース・レベルの接続情報(ユーザー名およびパスワード)とともにCONNECTコマンドを記述してRecovery Managerコマンド・ファイルを作成した場合、このファイルへの読取り権限を持っているすべてのユーザーがこのパスワードを参照できます。パスワードを含めたCONNECT文字列を、コマンド・ファイルに安全に組み込む方法はありません。

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

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

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

% 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
===================
. . .

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

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

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

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

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

RMAN> CONNECT TARGET /

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

SQL> CONNECT / AS SYSDBA

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

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

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

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

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

% rman PIPE abc TARGET /

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

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

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


注意:

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


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

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

パイプを介してRecovery Managerコマンドを実行する手順
  1. ターゲット・データベースに接続し(必須)、PIPEオプションを指定してRecovery Managerを起動します。たとえば、次のように入力します。

    % rman PIPE abc TARGET /
    
    

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

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

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

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

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

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

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

パイプを介して単一ジョブでRecovery Managerコマンドを実行する手順
  1. ターゲット・データベースへの接続後、パイプを作成します(ORA$RMAN_pipe_INという名前のパイプが存在しない場合)。

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

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

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

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

    参照:

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


戻る 次へ
Oracle
Copyright © 2003, 2008, Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引