この章では、RMANコマンドライン・インタフェースを起動する方法およびデータベースに接続する方法について説明します。この章の内容は次のとおりです。
この項の内容は、次のとおりです。
適切な作業を行うために、RMANクライアントをデータベースに接続する必要があります。表4-1に、RMANで確立できるデータベース接続のタイプを示します。
表4-1 RMANによるデータベース接続の概要
データベース接続のタイプ | キーワード | 説明 |
---|---|---|
|
RMANによってバックアップまたはリカバリするデータベース |
|
|
制御ファイルとは別の、RMANリポジトリのオプションのバックアップ先となるデータベース |
|
|
フィジカル・スタンバイ・データベース、または複製データベースの作成、表領域のトランスポート、表領域のPoint-in-Timeリカバリ(TSPITR)の実行などの特定の作業を実行するために作成されたデータベース・インスタンス 補助データベースを使用する多くのタスクとして、RMANは、タスク実行中に使用する自動補助インスタンスを作成し、そのインスタンスに接続してタスクを実行し、タスクの完了時にそのインスタンスを破棄します。自動補助インスタンスに接続するために明示的なコマンドは指定しません。 |
RMANを使用してターゲットまたは補助データベースに接続するユーザーは、SYSDBA
またはSYSBACKUP
システム権限が必要です。リカバリ・カタログへの接続では、これらの権限は必要ありません。カタログ・スキーマの所有者には、RECOVERY_CATALOG_OWNER
ロールを付与する必要があります。ユーザーは、リカバリ・カタログの所有者によって作成されたVPC資格証明を使用してリカバリ・カタログに接続することもできます。
SQL*Plusで使用できる認証オプションと同じものがRMANでも使用できます。ターゲット・データベースおよび補助データベースで認証する最も一般的な方法は、次のとおりです。
オペレーティング・システム認証
オペレーティング・システム認証を使用した接続の前提条件については、「オペレーティング・システムを使用した認証」を参照してください。
パスワード・ファイル認証
パスワード・ファイル認証を使用した接続の前提条件については、「パスワード・ファイルを使用した認証」を参照してください。
いずれの方法でもデータベースをオープンする必要はありません。オペレーティング・システム認証は、ローカルでの接続にのみ使用されます。パスワード・ファイル認証は、ローカルまたはリモートの接続に使用できます。
関連項目:
SQL*Plusを使用する場合のデータベース接続オプションについては、『Oracle Database管理者ガイド』を参照してください。
SYSDBA
およびSYSBACKUP
システム権限の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
オペレーティング・システム認証(OS認証)を使用して、データベースに接続するための前提条件は、次のとおりです。
ORACLE_SID
環境変数を設定して、データベースのシステム識別子(SID)を指定する必要があります。
たとえば、UNIXシェルでSIDをprod
に設定するには、次のように入力します。
% ORACLE_SID=prod; export ORACLE_SID
SYSDBA
権限で接続するには、OSDBAオペレーティング・システム・グループのメンバーである必要があり、SYSBACKUP
権限で接続するには、OSBACKUPDBAオペレーティング・システム・グループのメンバーである必要があります。
UNIXおよびLinuxでは、OSDBAグループは通常dba
という名前で、OSBACKUPDBAグループは通常backupdba
という名前です。これらの名前は、データベース・インストール中に割り当てられます。
関連項目:
オペレーティング・システム・グループについては、『Oracle Database管理者ガイド』を参照してください。
次の例は、オペレーティング・システム認証を使用したターゲット・データベースへの接続方法を示します。
例4-1 SYSDBA権限でのOS認証 - 明示的
% rman target '"/ as sysdba"'
例4-2 SYSBACKUP権限でのOS認証 - 明示的
% rman target '"/ as sysbackup"'
例4-3 SYSDBA権限でのOS認証 - 暗黙的
rman target /
接続文字列でAS SYSBACKUP
またはAS SYSDBA
のどちらも指定していしていないと、デフォルトのAS SYSDBA
が使用されます。
データベースがパスワード・ファイルを使用して、管理ユーザーを認証する場合、RMANはパスワードを使用して接続できます。パスワード・ファイルは、ローカルまたはリモート・アクセスに使用します。
ネット・サービス名を使用してリモートで接続するには、データベースではパスワード・ファイルを使用する必要があります。
注意:
適切なセキュリティ・プラクティスとして、コマンドラインにパスワードを入力するときは、プレーン・テキストで入力しないでください。RMANでは、RMANプロンプトで要求された場合にのみパスワードを入力します。パスワード保護については、『Oracle Databaseセキュリティ・ガイド』を参照してください。
ユーザーにSYSDBA
またはSYSBACKUP
権限を付与すると、データベースによってパスワード・ファイルにエントリが作成されます。その後、データベースがオープンしていない場合でも、このユーザーとしてターゲット・データベースまたは補助データベースに接続できます。
SYSBACKUP
権限でのパスワード・ファイルを介した接続をサポートするには、パスワード・ファイルをOracle Database 12cリリース1 (12.1)以上の形式で作成またはアップグレードする必要があります。
接続文字列でAS SYSBACKUP
またはAS SYSDBA
のどちらも指定していしていないと、デフォルトのAS SYSDBA
が使用されます。この場合、引用符で囲む必要はありません。
関連項目:
パスワード・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。
例4-4 SYSDBAとしてのパスワード・ファイル認証 - 明示的
この例では、sdba
ユーザーにSYSDBA
権限が付与されています。
% rman target '"sdba@prod1 as sysdba"'
target database Password: password
connected to target database: PROD1 (DBID=39525561)
例4-5 SYSBACKUPとしてのパスワード・ファイル認証 - 明示的
この例では、ターゲット・データベースで、sbu
ユーザーにSYSBACKUP
権限が付与されています。
% rman target '"sbu@prod1 as sysbackup"'
target database Password: password
connected to target database: PROD1 (DBID=39525561)
例4-6 SYSDBAとしてのパスワード・ファイル認証 - 暗黙的
% rman target sbu@prod1
target database Password: password
connected to target database: PROD1 (DBID=39525561)
このRMAN実行可能ファイルは、データベースとともに自動的にインストールされ、通常、他のデータベース実行可能ファイルと同じディレクトリに配置されます。たとえば、Linuxの場合、RMANクライアントは$ORACLE_HOME/bin
に配置されています。RMANを起動する場合、次の基本的なオプションがあります。
オペレーティング・システムのコマンドラインで、接続オプションを指定せずにRMAN実行可能ファイルを起動します。次に例を示します。
% rman
「RMANプロンプトからのデータベース接続の確立」を参照してください。
オペレーティング・システムのコマンドラインで、RMAN実行可能ファイルを起動します。次に例を示します。
% rman TARGET / % rman TARGET sbu@prod NOCATALOG
RMANやプログラムを終了するには、RMANプロンプトでEXIT
またはQUIT
と入力します。
RMAN> EXIT
関連項目:
RMANコマンドラインの構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
オペレーティング・システム・コマンドラインに接続文字列なしでRMANを起動する場合、ターゲット・データベースに接続するには、RMANプロンプトでCONNECT TARGET
コマンドを発行する必要があります。
RMANプロンプトからデータベース接続を確立する手順
例4-7 OS認証を使用した接続 - 暗黙的
RMAN> connect target /
システム権限が指定されていないため、AS
SYSDBA
と想定されます。
例4-8 OS認証を使用した接続 - 明示的
RMAN> connect target "/ as sysdba"
システム権限を含める場合、引用符(一重または二重)で囲む必要があります。
例4-9 パスワード・ファイル認証を使用した接続
RMAN> connect target "sbu@prod AS SYSBACKUP" target database Password: password connected to target database: PROD (DBID=39525561)
例4-10 ターゲットおよびリカバリ・カタログへの接続
この例では、ターゲット接続にオペレーティング・システム認証を、リカバリ・カタログ・データベース接続にサービス名およびパスワード・ファイル認証を使用しています。リカバリ・カタログ所有者は、ユーザーrco
です。RMANによって、リカバリ・カタログ・ユーザーのパスワードの入力を求められます。
RMAN> connect target / RMAN> connect catalog rco@catdb recovery catalog database Password: password connected to recovery catalog database
関連項目:
CONNECT
コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
オペレーティング・システムのコマンドラインからターゲット・データベースに接続するには、rman
コマンドの後に接続情報を続けて入力します。RMANプロンプトが表示されたら、コマンドの実行を開始できます。
CATALOG
キーワードを使用してリカバリ・カタログに接続します。NOCATALOG
またはCATALOG
を指定せずにRMANを起動することもできます。コマンドラインでNOCATALOG
を指定しない場合、およびRMANの起動後にCONNECT CATALOG
を指定しない場合、RMANリポジトリの使用を必要とするコマンドを初めて実行したときに、RMANはデフォルトでNOCATALOG
モードになります。
注意:
RMANリポジトリを使用するコマンドをNOCATALOG
モードで実行した後で、リカバリ・カタログに接続するには、RMANを終了して再起動する必要があります。
オペレーティング・システムのコマンドラインでターゲット・データベースに接続する場合は、RMANプロンプトが表示された後で、コマンドの実行を開始できます。
例4-11 システム・プロンプトからのターゲット・データベースへの接続
この例は、オペレーティング・システム認証を使用するターゲット・データベースへの接続を示しています。NOCATALOG
オプションは、セッションでリカバリ・カタログが使用されないことを示します。
% rman TARGET / NOCATALOG connected to target database: PROD (DBID=39525561) using target database control file instead of recovery catalog RMAN>
例4-12 ネット・サービス名を使用したシステム・プロンプトからのターゲット・データベースへの接続
この例は、ネット・サービス名およびパスワード・ファイル認証を使用したターゲット・データベースへの接続を示しています。RMANによってパスワードの入力を求められます。
% rman TARGET sbu@prod NOCATALOG
target database Password: password
connected to target database: PROD (DBID=39525561)
RMAN>
例4-13 システム・プロンプトからのターゲットおよびリカバリ・カタログへの接続
この例は、ターゲット・データベースおよびリカバリ・カタログ・データベースに対してOracle Net認証を使用する接続を示しています。いずれの場合も、RMANによってパスワードの入力を求められます。
% rman TARGET sbu@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>
DUPLICATE
コマンドを使用するには、補助インスタンスに接続する必要があります。RMAN表領域のPoint-in-Timeリカバリ(TSPITR)を実行する場合にも、補助インスタンスに接続する必要がある場合があります。
注意:
DUPLICATE ... FROM ACTIVE DATABASE
コマンドを使用する場合は、ネット・サービス名が必要です。詳細は、「手順7: 初期化パラメータ・ファイルの作成と補助インスタンスの起動」を参照してください。
補助接続の形式はターゲット・データベース接続と同じですが、TARGET
キーワードのかわりにAUXILIARY
キーワードを使用します。
関連項目:
DUPLICATE
コマンドの使用方法の詳細は、「データベースの複製」を参照してください
TSPITRの実行方法の詳細は、「RMANの表領域のPoint-in-Timeリカバリ(TSPITR)の実行」を参照してください
例4-14 RMANプロンプトからのターゲットおよび補助データベースへの接続
この例では、ターゲット・データベースへの接続にはオペレーティング・システム認証を、補助データベースへの接続にはネット・サービス名およびパスワード・ファイル認証を使用しています。
% rman
RMAN> CONNECT TARGET /
RMAN> CONNECT AUXILIARY sbu@aux
auxiliary database Password: password
connected to auxiliary database: AUX (DBID=30472568)
例4-15 システム・プロンプトからのターゲットおよび補助データベースへの接続
この例は、システム・プロンプトからのターゲット・データベースおよび補助データベースへの接続を示しています。ターゲット接続にはオペレーティング・システム認証を、補助データベース接続にはネット・サービス名およびパスワード・ファイル認証を使用しています。
% rman target / auxiliary sbu@aux
auxiliary database Password: password
connected to auxiliary database: AUX (DBID=30472568)
CDB全体、rootのみまたは1つ以上のPDBで、RMAN操作を実行できます。次のルールに従って、CDBへのRMAN接続を確立します。
CDB全体での操作(CDB全体のバックアップなど)を実行するには、ターゲットとしてrootに接続します。
rootのみでの操作(rootのバックアップなど)を実行するには、ターゲットとしてrootに接続します。
単一のPDBでの操作を実行するには、ターゲットとして、rootまたは直接PDBのいずれかに接続することができます。
rootに接続する場合、RMANコマンドでPLUGGABLE
DATABASE
構文を使用する必要があります。たとえば、PDBをバックアップするには、BACKUP
PLUGGABLE
DATABASE
コマンドを使用します。
または、直接PDBに接続した場合は、非CDBへの接続時に使用するものと同じコマンドを使用できます。たとえば、PDBをバックアップするには、BACKUP
DATABASE
コマンドを使用します。
単一のコマンドで2つ以上のPDBで操作を実行するには、ターゲットとしてrootに接続します。
たとえば、sales
およびhr
PDBをバックアップするには、rootに接続して、次のコマンドを発行します。
BACKUP PLUGGABLE DATABASE sales, hr;
注意:
オペレーティング・システム認証を使用してターゲットとしてCDBに接続する場合は、rootに接続します。
ターゲットとして直接PDBに接続している場合には、次の操作は使用できません。
アーカイブ・ログのバックアップ
アーカイブ・ログの削除
アーカイブ・ログのバックアップの削除
アーカイブ・ログのリストア(必要に応じて、メディア・リカバリ中にRMANによってアーカイブ・ログがリストアされます。)
Point-in-Timeリカバリ(PITR)
TSPITR
表のリカバリ
データベースの複製
フラッシュバック操作
データ・リカバリ・アドバイザの実行
不要なもののレポート/削除
データベースの登録
カタログのインポート
データベースのリセット
RMAN環境の構成(CONFIGURE
コマンドを使用)
注意:
TARGET
としてPDBに接続すると、リカバリ・カタログには接続できません。
ターゲットとしてrootに接続する方法がいくつかあります。最も一般的は方法は次の3つです。
共通ユーザーとしてのローカル接続は、例4-16を参照
オペレーティング・システム認証を使用した接続は、例4-17を参照
共通ユーザーとしてOracle Net Servicesを介してネット・サービス名を使用した接続は、例4-18を参照
いずれの場合でも、SYSDBA
またはSYSBACKUP
権限を持つユーザーとして接続する必要があります。
例4-16 Rootへのローカルでの接続
この例では、共通ユーザーであるSYS
ユーザーを使用して、rootにローカルに接続します。接続はSYSDBA
権限を使用して確立されます。
rman target sys
target database Password: password
connected to target database: CDB (DBID=659628168)
例4-17 オペレーティング・システム認証を使用したrootへの接続
この例では、オペレーティング・システム認証を使用してrootにローカルに接続します。接続はSYSDBA
権限を持つSYS
ユーザーとして確立されます。
rman target / connected to target database: CDB (DBID=659628168)
例4-18 ネット・サービス名を使用したrootへの接続
この例では、rootへのデータベース・サービスに変換されるsales
ネット・サービス名があり、SYSBACKUP
権限を持つc##bkuser
という名前の共通ユーザーがいることを想定しています。
rman target c##bkuser@sales
target database Password: password
connected to target database: CDB (DBID=659628168)
ターゲットとしてPDBへ接続するには、次を実行する必要があります。
例4-19に、PDBへの接続を示します。次のことを想定しています。
hrpdb
という名前のPDBで、RMAN操作を実行します。
ネット・サービス名hrpdb
は、hrpdb
PDBのデータベース・サービスに変換されます。
hrpdb
PDBにローカル・ユーザーhrbkup
が作成され、SYSDBA
権限が付与されました。
例4-19 ターゲットとしてのPDBへの接続
rman target hrbkup@hrpdb
target database Password: password
connected to target database: CDB (DBID=659628168)
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は、SYSDBA
またはSYSBACKUP
権限を使用して、ターゲットおよび補助データベースに接続します。このため、SQL*Plusを使用してターゲット・データベースまたは補助データベースへの接続時に発生した問題を診断する場合は、SYSDBA
またはSYSBACKUP
接続を要求して、RMANの動作を再現します。
たとえば、次のRMANコマンドで接続エラーが発生したとします。
RMAN> CONNECT TARGET /
この場合、次のSQL*Plusコマンドを使用して前の接続操作を再現します。
SQL> CONNECT / AS SYSBACKUP
デフォルトでは、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
の設定も必要です。
関連項目:
NLS_LANGおよびNLS_DATE_FORMATパラメータの詳細は、『Oracle Databaseリファレンス』
を参照してください。
Oracle Databaseグローバリゼーション・サポート・ガイド
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;
コマンド・ファイルの実行時に、コマンド・ファイル内の置換変数で使用される1つ以上の値をUSING
句に指定できます。この方法で、コマンド・ファイルを動的にすることができます。
SQL*Plusの場合と同様に、&1
は最初の値を配置する場所を示し、&2
は2番目の値を配置する場所を示します。それ以降も同様です。置換変数の構文では、&
integer
の後にオプションのピリオドが続きます。たとえば、&1.3
のようになります。オプションのピリオドは変数の一部であり、値と置換されます。したがって、置換テキストの直後に別の整数を続けることができます。たとえば、値mybackup
を変数&1.3
を含むコマンド・ファイルに渡すと、置換の結果はmybackup3
になります。
次の手順では、置換変数を含むコマンド・ファイルをコールする動的シェル・スクリプトを作成および使用する方法について説明します。
動的シェル・スクリプトを作成および使用する手順
関連項目:
@の構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
RMANコマンドを実行せずに、その構文の正しさをテストする必要がある場合があります。コマンドライン引数CHECKSYNTAX
を使用して、RMANクライアントを起動します。これによって、入力したコマンドの解析のみが行われ、有効なRMAN構文ではないコマンドに対してRMAN-00558
エラーが戻されます。
この項の内容は、次のとおりです。
関連項目:
CHECKSYNTAX
コマンドライン・オプションについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
コマンドを実際には実行せずに、RMANコマンドの構文を対話形式で確認できます。
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-20は、動的コマンド・ファイルの構文を確認する際に無効な値を入力した場合を示しています。太字のテキストは、プロンプトに入力されたテキストを示しています。
例4-20 無効な構文が含まれているコマンド・ファイルの構文の確認
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は構文エラーを示します。
Recovery Managerにコマンドを発行してそれらのコマンドから出力を受信するかわりに、Recovery Managerのパイプ・インタフェースを使用できます。このインタフェースを使用すると、RMANは、オペレーティング・システム・シェルではなくDBMS_PIPE
PL/SQLパッケージによってコマンドを取得し、出力を送信します。このインタフェースを使用することによって、Recovery Managerへのポータブル・プログラム・インタフェースを作成できます。
パイプ・インタフェースを起動するには、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
をコールして最初にパイプを作成しておく必要があります。パイプは、プライベート・パイプとして明示的に作成しないと、そのパイプへの最初のアクセス時に自動的にパブリック・パイプとして作成されます。Recovery Managerでパブリック・パイプを使用しようとすると、エラーが戻されます。
注意:
複数のRMANセッションをターゲット・データベースに対して実行する場合は、各RMANセッションに一意のパイプ名を使用する必要があります。一意のパイプ名を生成する方法の1つとして、DBMS_PIPE.UNIQUE_SESSION_NAME
ファンクションを使用できます。
この項の内容は、次のとおりです。
この例では、RMANを制御するアプリケーションで複数のコマンドを連続実行します。パイプに各コマンドが送信および実行されて出力が戻されると、RMANは一時停止して次のコマンドを待機します。
パイプを介してRMANコマンドを実行する手順