この章では、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の起動時にコマンドラインでLOG
パラメータを入力します。
% rman LOG /tmp/rman.log
この場合、RMANによってコマンド入力は表示されますが、RMAN出力は表示されません。RMAN出力をログ・ファイルと標準出力の両方に送信する場合は、Linuxのtee
コマンドまたは同等のコマンドを使用する方法が最も簡単です。たとえば、次の方法で、入力と出力の両方をRMANコマンドライン・インタフェース内に表示できます。
% rman | tee rman.log RMAN>
関連項目: RMANコマンドライン・オプションについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 |
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_DATE_FORMAT
を適用して、サーバー初期化ファイル内のサーバーのデフォルト設定を上書きするには、環境変数NLS_LANG
の設定も必要です。
参照:
|
RMANコマンドは、RMANプロンプトから直接入力するか、またはテキスト・ファイルから読み取ることができます。
この項の内容は、次のとおりです。
RMANクライアントでコマンドを受け入れる準備が整うと、次の例に示すようなコマンド・プロンプトが表示されます。
RMAN>
RMANで実行するコマンドを入力します。次に例を示します。
RMAN> CONNECT TARGET RMAN> BACKUP DATABASE;
RMANのほとんどのコマンドでは、いくつかのパラメータを使用し、末尾にセミコロンを付ける必要があります。STARTUP
、SHUTDOWN
、CONNECT
などのいくつかのコマンドは、セミコロンの有無に関係なく使用できます。
完全なコマンドではないテキスト行を入力すると、RMANは、行番号を表示して入力の継続を求めます。次に例を示します。
RMAN> BACKUP DATABASE 2> INCLUDE CURRENT 3> CONTROLFILE 4> ;
繰返し作業の場合は、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でのコメント文字は、シャープ記号(#
)です。行のシャープ記号から最後までのテキストはすべて無視されます。たとえば、次のコマンド・ファイルの内容は、データベースおよびアーカイブ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
になります。
次の手順では、置換変数を含むコマンド・ファイルをコールする動的シェル・スクリプトを作成および使用する方法について説明します。
動的シェル・スクリプトを作成および使用する手順
置換変数を使用する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;
前の手順で作成した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
前の手順で作成したシェル・スクリプトを実行します。コマンドラインで適切な引数を指定します。
次の例では、runbackup.sh
シェル・スクリプトを実行し、メディア・ファミリ名としてarchival_backup
、書式文字列としてbck0906
、リストア・ポイント名としてFY06Q3
を渡します。
% runbackup.sh archival_backup bck0906 FY06Q3
関連項目: @の構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』 を参照してください。 |
RMANコマンドを実行せずに、その構文の正しさをテストする必要がある場合があります。コマンドライン引数CHECKSYNTAX
を使用して、RMANクライアントを起動します。これによって、入力したコマンドの解析のみが行われ、有効なRMAN構文ではないコマンドに対してRMAN-00558
エラーが戻されます。
関連項目: CHECKSYNTAXコマンドライン・オプションについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』 を参照してください。 |
コマンドを実際には実行せずに、RMANコマンドの構文を対話形式で確認できます。
RMAN構文をコマンドラインで確認する手順
CHECKSYNTAX
パラメータを使用して、RMANを起動します。
たとえば、次のコマンドを入力します。
% rman CHECKSYNTAX
確認する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>
コマンド・ファイル内のコマンドをテストするには、CHECKSYNTAX
パラメータを指定してRMANを起動し、@
コマンドを使用して、渡すコマンド・ファイルの名前を指定します。
コマンド・ファイル内のコマンドをテストする手順
テキスト・エディタを使用してコマンド・ファイルを作成します。
次の内容の/tmp/goodcmdfile
を作成するとします。
# command file with legal syntax RESTORE DATABASE; RECOVER DATABASE;
次の内容の別のコマンド・ファイル/tmp/badcmdfile
を作成するとします。
# command file with bad syntax commands RESTORE DATABASE RECOVER DATABASE
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
文字列mybackup
はCOPIES
の有効な引数ではないため、RMANは構文エラーを示します。
この項では、ターゲット・データベースにRMANクライアントを接続する方法について説明します。この項では次の項目を取り上げます。
適切な作業を行うために、RMANクライアントをデータベースに接続する必要があります。次の表に、RMANで確立できるデータベース接続のタイプを示します。
表4-1 RMANによるデータベース接続の概要
データベース接続のタイプ | キーワード | 説明 |
---|---|---|
|
|
RMANによってバックアップまたはリストアされるデータベース |
|
|
制御ファイルとは別の、RMANリポジトリのオプションのバックアップ先となるデータベース |
|
フィジカル・スタンバイ・データベース、または複製データベースの作成、表領域のトランスポート、表領域のPoint-in-Timeリカバリ(TSPITR)の実行などの特定の作業を実行するために作成されたデータベース・インスタンス 補助データベースを使用する多くのタスクとして、RMANは、タスク実行中に使用する自動補助インスタンスを作成し、そのインスタンスに接続してタスクを実行し、タスクの完了時にそのインスタンスを破棄します。自動補助インスタンスに接続するために明示的なコマンドは指定しません。 |
RMANによるデータベースへの接続は、SQL*Plusによるデータベースへの接続と同じ方法で指定および認証します。RMANによるターゲット・データベースまたは補助データベースへの接続にはSYSDBA
権限が必要である点のみが異なります。AS SYSDBA
キーワードは、ターゲット接続および補助接続に対して暗黙的に指定され、明示的には指定できません。
リカバリ・カタログへの接続では、SYSDBA
権限は必要ありません。カタログ・スキーマの所有者には、RECOVERY_CATALOG_OWNER
ロールを付与する必要があります。
関連項目: SQL*Plusを使用する場合のデータベース接続オプションについては、『Oracle Database管理者ガイド』を参照してください。 |
オペレーティング・システム認証を使用してデータベースに接続するには、Oracle SIDを指定する環境変数を設定する必要があります。たとえば、UNIXシェルでSIDをprod
に設定するには、次のように入力します。
% ORACLE_SID=prod; export ORACLE_SID
オペレーティング・システム認証を使用すると、特別なオペレーティング・システム・グループによってSYSDBA
接続が制御されます。通常、このグループはOSDBAと呼ばれます。このグループは、データベースのインストール・プロセスの一環として作成され、特定の名前が割り当てられます。この特定の名前は、オペレーティング・システムによって異なります。
現行のオペレーティング・システム・ユーザーがOSDBAグループのメンバーで、Oracle SIDが設定されている場合は、次のように入力すると、RMANがSYSDBA
権限でこのデータベースに接続できます。
% rman TARGET /
データベースでパスワード・ファイルが使用されている場合、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プロンプトが表示されたら、コマンドの実行を開始できます。
表4-2に、この章の例で使用される一般的な値の意味を示します。
表4-2 例の値
例で使用される値 | 意味 |
---|---|
|
|
|
ターゲット・データベースのネット・サービス名。 |
|
リカバリ・カタログのスキーマを所有するユーザー。このユーザーは、 |
|
リカバリ・カタログ・データベースのネット・サービス名。 |
|
補助インスタンスのネット・サービス名。 |
例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プロンプトでCONNECT TARGET
コマンドを発行してターゲット・データベースに接続してから、便利な処理の実行を開始する必要があります。
RMANプロンプトからデータベース接続を確立する手順
オペレーティング・システムのコマンドラインで、データベース接続を確立せずにRMANクライアントを起動します。たとえば、rman
を次のように入力します。
% rman RMAN>
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バックアップおよびリカバリ・リファレンス』 を参照してください。 |
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)
関連項目:
|
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で発生したエラーを診断する際、SQL*Plusを使用してこれらのデータベースに直接接続すると、接続情報またはデータベースに関する根本的な問題を検出できます。
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コマンドを実行する手順
ターゲット・データベースに接続し(必須)、PIPE
オプションを指定してRMANを起動します。たとえば、次のように入力します。
% rman PIPE abc TARGET /
TIMEOUT
オプションを指定することもできます。このオプションを指定すると、指定した時間内(秒単位)に入力パイプから入力を受信しなかった場合、RMANが強制終了されます。たとえば、次のように入力します。
% rman PIPE abc TARGET / TIMEOUT 60
ターゲット・データベースに接続し、DBMS_PIPE.PACK_MESSAGE
およびDBMS_PIPE.SEND_MESSAGE
を使用して目的のコマンドを入力パイプに入力します。パイプ・モードでは、RMANで入力の受入れ準備が完了すると、標準RMANプロンプトではなくRMAN-00572
メッセージが表示されます。
DBMS_PIPE.RECEIVE_MESSAGE
およびDBMS_PIPE.UNPACK_MESSAGE
を使用して、出力パイプからRMAN出力を読み取ります。
手順2と3を繰り返し、手順1で起動したRMANインスタンスで他のコマンドを実行します。
RMANの起動時にTIMEOUT
オプションを使用した場合は、指定した時間内に入力を受信しなければRMANが自動的に終了します。すぐにRMANを終了するには、EXIT
コマンドを送信します。
この例では、RMANを制御するアプリケーションで1つ以上のコマンドを単一ジョブとして実行します。パイプに入力されたコマンドの実行後、RMANが終了します。
パイプを介して単一ジョブでRMANコマンドを実行する手順
ターゲット・データベースへの接続後、パイプを作成します(ORA$RMAN_
pipe_IN
という名前のパイプが存在しない場合)。
目的のコマンドを入力パイプに入力します。パイプ・モードでは、RMANで入力の受入れ準備が完了すると、標準RMANプロンプトではなくRMAN-00572
メッセージが表示されます。
PIPE
オプションを使用してRMANを起動し、TIMEOUT
0
を指定します。たとえば、次のように入力します。
% rman PIPE abc TARGET / TIMEOUT 0
DBMS_PIPE.PACK_MESSAGE
およびDBMS_PIPE.SEND_MESSAGE
を使用して、パイプに入力されたコマンドを読み取り、実行します。入力パイプのすべてのコマンドを実行すると、RMANはすぐに終了します。
DBMS_PIPE.RECEIVE_MESSAGE
およびDBMS_PIPE.UNPACK_MESSAGE
を使用して、出力パイプからRMAN出力を読み取ります。
関連項目: DBMS_PIPEパッケージのドキュメントについては、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』 を参照してください。 |