4 RMANクライアントの起動および操作
マルチテナント・コンテナ・データベース(CDB)、プラガブル・データベース(PDB)またはアプリケーション・ルートに接続するには、RMANコマンドライン・インタフェースを使用します。
4.1 RMANの起動および終了
この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バックアップおよびリカバリ・リファレンス』を参照してください。
4.2 RMANによるデータベース接続の確立
ルートまたはプラガブル・データベース(PDB)への接続を作成できます。データベースへの接続およびそれらの接続の認証を行う方法は複数あります。
4.2.1 RMANデータベース接続タイプの概要
適切な作業を行うために、RMANクライアントをデータベースに接続する必要があります。
表4-1に、RMANで確立できるデータベース接続のタイプを示します。
表4-1 RMANによるデータベース接続の概要
データベース接続のタイプ | キーワード | 説明 |
---|---|---|
|
RMANによってバックアップまたはリカバリするデータベース |
|
|
制御ファイルとは別の、RMANリポジトリのオプションのバックアップ先となるデータベース |
|
|
フィジカル・スタンバイ・データベース、または複製データベースの作成、表領域のトランスポート、表領域のPoint-in-Timeリカバリ(TSPITR)の実行などの特定の作業を実行するために作成されたデータベース・インスタンス 補助データベースを使用する多くのタスクとして、RMANは、タスク実行中に使用する自動補助インスタンスを作成し、そのインスタンスに接続してタスクを実行し、タスクの完了時にそのインスタンスを破棄します。自動補助インスタンスに接続するために明示的なコマンドは指定しません。 |
4.2.2 RMANによるデータベース接続の認証について
RMANを使用してターゲットまたは補助データベースに接続するユーザーは、SYSDBA
またはSYSBACKUP
システム権限が必要です。
リカバリ・カタログへの接続では、これらの権限は必要ありません。カタログ・スキーマの所有者には、RECOVERY_CATALOG_OWNER
ロールを付与する必要があります。ユーザーは、リカバリ・カタログの所有者によって作成されたVPC資格証明を使用してリカバリ・カタログに接続することもできます。
SQL*Plusで使用できる認証オプションと同じものがRMANでも使用できます。ターゲット・データベースおよび補助データベースで認証する最も一般的な方法は、次のとおりです。
-
オペレーティング・システム認証
オペレーティング・システム認証を使用した接続の前提条件については、「オペレーティング・システムを使用した認証」を参照してください。
-
パスワード・ファイル認証
パスワード・ファイル認証を使用した接続の前提条件については、「パスワード・ファイルを使用した認証」を参照してください。
いずれの方法でもデータベースをオープンする必要はありません。オペレーティング・システム認証は、ローカルでの接続にのみ使用されます。パスワード・ファイル認証は、ローカルまたはリモートの接続に使用できます。
関連項目:
-
SQL*Plusを使用する場合のデータベース接続オプションについては、『Oracle Database管理者ガイド』を参照してください
-
SYSDBA
およびSYSBACKUP
システム権限の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください
4.2.2.1 オペレーティング・システムを使用した認証
オペレーティング・システム認証を使用して、ターゲット・データベースまたは補助データベースへのRMAN接続を確立できます。
オペレーティング・システム認証(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.2.2.2 パスワード・ファイルを使用した認証
パスワード・ファイルは、ローカルまたはリモート・アクセスに使用します。データベースがパスワード・ファイルを使用して、管理ユーザーを認証する場合、RMANはパスワードを使用して接続できます。
ネット・サービス名を使用してリモートで接続するには、データベースではパスワード・ファイルを使用する必要があります。
注意:
適切なセキュリティ・プラクティスとして、コマンドラインにパスワードを入力するときは、プレーン・テキストで入力しないでください。RMANでは、RMANプロンプトで要求された場合にのみパスワードを入力してください。パスワード保護については、『Oracle Databaseセキュリティ・ガイド』を参照してください。
ユーザーにSYSDBA
またはSYSBACKUP
権限を付与すると、データベースによってパスワード・ファイルにエントリが作成されます。その後、データベースがオープンしていない場合でも、このユーザーとしてターゲット・データベースまたは補助データベースに接続できます。
SYSBACKUP
権限を使用してパスワード・ファイルを介した接続をサポートするには、パスワード・ファイルをOracle Database 12cリリース1 (12.1)以上の形式で作成するか、この形式にアップグレードする必要があります。
接続文字列でAS SYSBACKUP
またはAS SYSDBA
のどちらも指定していしていないと、デフォルトのAS SYSDBA
が使用されます。この場合、引用符で囲む必要はありません。
関連項目:
パスワード・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。
例4-1 SYSDBAとしてのパスワード・ファイル認証 - 明示的
この例では、sdba
ユーザーにSYSDBA
権限が付与されています。
% rman target '"sdba@prod1 as sysdba"'
target database Password: password
connected to target database: PROD1 (DBID=39525561)
例4-2 SYSBACKUPとしてのパスワード・ファイル認証 - 明示的
この例では、ターゲット・データベースで、sbu
ユーザーにSYSBACKUP
権限が付与されています。
% rman target '"sbu@prod1 as sysbackup"'
target database Password: password
connected to target database: PROD1 (DBID=39525561)
例4-3 SYSDBAとしてのパスワード・ファイル認証 - 暗黙的
% rman target sbu@prod1
target database Password: password
connected to target database: PROD1 (DBID=39525561)
4.2.3 RMANのデータベース接続を確立する方法
データベース接続は、RMANクライアントまたはオペレーティング・システムのコマンドラインから確立できます。パスワード・ファイルまたはオペレーティング・システム認証を使用して、これらの接続を認証できます。
4.2.3.1 RMANプロンプトからのデータベース接続の確立
オペレーティング・システム・コマンドラインに接続文字列なしでRMANを起動する場合、ターゲット・データベースに接続するには、RMANプロンプトでCONNECT TARGET
コマンドを発行する必要があります。
RMANプロンプトからデータベース接続を確立する手順
例4-4 OS認証を使用したRMANプロンプトからの接続 - 暗黙的
RMAN> connect target /
システム権限が指定されていないため、 AS
SYSDBA
と想定されます。
例4-5 OS認証を使用したRMANプロンプトからの接続 - 明示的
RMAN> connect target "/ as sysdba"
システム権限を含める場合、引用符(一重または二重)で囲む必要があります。
関連項目:
CONNECT
コマンドの詳細は、Oracle Databaseバックアップおよびリカバリ・リファレンスを参照してください。
4.2.3.2 オペレーティング・システムのコマンドラインからのRMAN接続の確立
ルート・コンテナへのRMAN接続は、オペレーティング・システムのコマンドラインから行うことができます。
オペレーティング・システムのコマンドラインからデータベース接続を確立するには、次の手順を実行します。
-
オペレーティング・システムを使用した認証で説明されている前提条件を満たしていることを確認します。
-
rman
コマンドに続けて接続情報を入力します。CATALOG
キーワードを使用してリカバリ・カタログに接続します。NOCATALOG
またはCATALOG
を指定せずにRMANを起動することもできます。コマンドラインでNOCATALOG
を指定しない場合、およびRMANの起動後にCONNECT CATALOG
を指定しない場合、RMANリポジトリの使用を必要とするコマンドを初めて実行したときに、RMANはデフォルトでNOCATALOG
モードになります。 -
RMANプロンプトが表示されたら、必要なRMANコマンドを実行します。
注意:
RMANリポジトリを使用するコマンドをNOCATALOG
モードで実行した後で、リカバリ・カタログに接続するには、RMANを終了して再起動する必要があります。
例4-6 オペレーティング・システム認証を使用したシステム・プロンプトからのターゲット・データベースへの接続
この例は、オペレーティング・システム認証を使用したターゲット・データベースのルート・コンテナへの接続を示しています。NOCATALOG
オプションは、セッションでリカバリ・カタログが使用されないことを示します。
% rman TARGET / NOCATALOG connected to target database: PROD (DBID=39525561) using target database control file instead of recovery catalog
例4-7 ネット・サービス名を使用したシステム・プロンプトからのターゲット・データベースへの接続
この例は、ネット・サービス名およびパスワード・ファイル認証を使用したターゲット・データベースへの接続を示しています。RMANによってパスワードの入力を求められます。
% rman TARGET sbu@prod NOCATALOG
target database Password: password
connected to target database: PROD (DBID=39525561)
4.2.4 CDBおよびPDBでの操作の実行について
マルチテナント・コンテナ・データベース(CDB)全体、ルートのみまたは1つ以上のプラガブル・データベース(PDB)で、RMAN操作を実行できます。
次のルールに従って、CDBへのRMAN接続を確立します。
-
CDB全体での操作(CDB全体のバックアップなど)を実行するには、ターゲットとしてルートに接続します。
-
ルートのみでの操作(ルートのバックアップなど)を実行するには、ターゲットとしてルートに接続します。
-
単一のPDBでの操作を実行するには、ターゲットとして、ルートまたはPDBのいずれかに接続します。
-
rootに接続する場合、RMANコマンドで
PLUGGABLE DATABASE
構文を使用する必要があります。たとえば、PDBをバックアップするには、BACKUP PLUGGABLE DATABASE
コマンドを使用します。 -
または、直接PDBに接続する場合は、データベースへの接続時に使用するものと同じコマンドを使用します。たとえば、PDBをバックアップするには、
BACKUP DATABASE
コマンドを使用します。
-
-
単一のコマンドで2つ以上のPDBで操作を実行するには、ターゲットとしてrootに接続します。
たとえば、
sales
およびhr
PDBをバックアップするには、rootに接続して、次のコマンドを発行します。BACKUP PLUGGABLE DATABASE sales, hr;
注意:
オペレーティング・システム認証を使用してターゲットとしてCDBに接続する場合は、rootに接続します。
4.2.5 ターゲットとしてのrootへの接続
ターゲットとしてrootに接続する方法がいくつかあります。
最も一般的は方法は次の3つです。
-
共通ユーザーとしてのローカル接続は、例4-8を参照
-
オペレーティング・システム認証を使用した接続は、例4-9を参照
-
共通ユーザーとしてOracle Net Servicesを介してネット・サービス名を使用した接続は、例4-12を参照
いずれの場合でも、SYSDBA
またはSYSBACKUP
権限を持つユーザーとして接続する必要があります。
例4-8 Rootへのローカルでの接続
この例では、共通ユーザーであるSYS
ユーザーを使用して、rootにローカルに接続します。接続はSYSDBA
権限を使用して確立されます。
rman target sys
target database Password: password
connected to target database: CDB (DBID=659628168)
例4-9 SYSDBA権限でのオペレーティング・システム認証を使用したルートへの接続 - 暗黙的
この例では、オペレーティング・システム認証を使用してrootにローカルに接続します。接続はSYSDBA
権限を持つSYS
ユーザーとして確立されます。
rman target / connected to target database: CDB (DBID=659628168)
接続文字列でAS SYSBACKUP
またはAS SYSDBA
のどちらも指定していしていないと、デフォルトのAS SYSDBA
が使用されます。
例4-10 SYSDBA権限でのオペレーティング・システム認証を使用したルートへの接続 - 明示的
この例では、オペレーティング・システム認証を使用してrootにローカルに接続します。この接続は、SYSBACKUP
権限を明示的に指定して、SYS
ユーザーとして確立されます。
% rman target '"/ as sysbackup"'
例4-11 ターゲット・データベースおよびリカバリ・カタログへの接続
この例では、ターゲット接続にオペレーティング・システム認証を、リカバリ・カタログ・データベース接続にサービス名およびパスワード・ファイル認証を使用しています。リカバリ・カタログ所有者は、ユーザーrco
です。RMANによって、リカバリ・カタログ・ユーザーのパスワードの入力を求められます。
RMAN> connect target / RMAN> connect catalog rco@catdb recovery catalog database Password: password connected to recovery catalog database
例4-12 ネット・サービス名を使用したrootへの接続
この例では、rootへのデータベース・サービスに変換されるsales
ネット・サービス名があり、SYSBACKUP
権限を持つc##bkuser
という名前の共通ユーザーがいることを想定しています。
rman target c##bkuser@sales
target database Password: password
connected to target database: CDB (DBID=659628168)
例4-13 パスワード・ファイル認証を使用した接続
RMAN> connect target "sbu@prod AS SYSBACKUP" target database Password: password connected to target database: PROD (DBID=39525561)
例4-14 パスワードにセミコロンが含まれている場合のシステム・プロンプトからのターゲット・データベースへの接続
この例は、ネット・サービス名およびパスワード・ファイル認証を使用したターゲット・データベースへの接続を示しています。パスワードには特殊文字(セミコロン)が含まれています。
rman TARGET "'sbu/rman;pwd@prod AS SYSBACKUP'"
Recovery Manager: Release 20.0.0.0.0 - Development on Mon Feb 11 22:18:07 2019
Version 20.1.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: PROD (DBID=2004181664)
注意:
セキュリティ上の理由から、コマンドラインにパスワードを指定しないことをお薦めします。パスワードの入力は、求められた場合にのみ行ってください。例4-15 システム・プロンプトからのターゲットおよびリカバリ・カタログへの接続
この例は、ターゲット・データベースおよびリカバリ・カタログ・データベースに対して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
4.2.6 ターゲットとしてのPDBへの接続
RMANプロンプトまたはオペレーティング・システムのコマンドラインから、PDBに接続できます。
ターゲットとしてPDBへ接続するには、次を実行する必要があります。
-
PDBのデータベース・サービスに変換されるネット・サービス名を使用して接続します。
-
SYSDBA
権限を持つローカル・ユーザーまたは共通ユーザーとして接続します。
例4-16 ターゲットとしてのPDBへの接続
この例は、PDBへの接続を示します。次のことを想定しています。
-
hrpdb
という名前のPDBで、RMAN操作を実行します。 -
ネット・サービス名
hrpdb
は、hrpdb
PDBのデータベース・サービスに変換されます。 -
hrpdb
PDBにローカル・ユーザーhrbkup
が作成され、SYSDBA
権限が付与されました。
rman target hrbkup@hrpdb
target database Password: password
connected to target database: CDB (DBID=659628168)
例4-17 PDBおよびリカバリ・カタログへの接続
この例は、PDBおよびリカバリ・カタログへの接続を示しています。次のことを想定しています。:
-
salespdb
という名前のPDBで、操作を実行します。SYS
ユーザーがPDBへの接続に使用されます。 -
ネット・サービス名
salespdb
は、salespdb
PDBのデータベース・サービスに変換されます。 -
リカバリ・カタログへの接続は、リカバリ・カタログの所有者
rco
を使用して作成されます。リカバリ・カタログ・データベースのネット・サービス名はcatdb
です。
指示に従ってsys
ユーザーとrco
ユーザーのパスワードを入力します。
RMAN> connect target "sys@salespdb as sysdba"
target database Password:
connected to target database: DBMAIN:SALESPDB (DBID=1661283172)
RMAN> connect catalog rco@catdb
recovery catalog database Password:
connected to recovery catalog database
4.2.6.1 PDBへの接続時の制限事項
プラガブル・データベース(PDB)に直接接続する際には、特定の制限が適用されます。
ターゲットとして直接PDBに接続している場合には、次の操作は使用できません。
-
アーカイブ・ログのバックアップ
-
アーカイブ・ログの削除
-
アーカイブ・ログのバックアップの削除
-
アーカイブ・ログのリストア(必要に応じて、メディア・リカバリ中にRMANによってアーカイブ・ログがリストアされます。)
-
共有UNDOモード使用時のPoint-in-Timeリカバリ(PITR)
-
共有UNDOモード使用時のTSPITR
-
共有UNDOモード使用時の表リカバリ
-
共有UNDOモード使用時のデータベースの複製
-
共有UNDOモード使用時のフラッシュバック操作
-
データ・リカバリ・アドバイザの実行
-
不要なもののレポート/削除
-
データベースの登録
-
カタログのインポート
-
データベースのリセット
-
RMAN環境の構成(
CONFIGURE
コマンドを使用)
4.2.7 RMANによる補助データベースへの接続
特定のタスク(データベースの複製、表領域のPoint-in-Timeリカバリ(TSPITR)など)では補助データベースへの接続が必要となります。
補助接続の形式はターゲット・データベース接続と同じですが、TARGET
キーワードのかわりにAUXILIARY
キーワードを使用します。
注意:
DUPLICATE ... FROM ACTIVE DATABASE
コマンドを使用する場合は、ネット・サービス名が必要です。詳細は、補助インスタンス用の初期化パラメータ・ファイルの作成を参照してください。
例4-18 RMANプロンプトからのターゲットおよび補助データベースへの接続
この例では、ターゲット・データベースへの接続にはオペレーティング・システム認証を、補助データベースへの接続にはネット・サービス名およびパスワード・ファイル認証を使用しています。
% rman
RMAN> CONNECT TARGET /
RMAN> CONNECT AUXILIARY sbu@aux
auxiliary database Password: password
connected to auxiliary database: AUX (DBID=30472568)
例4-19 システム・プロンプトからのターゲットおよび補助データベースへの接続
この例は、システム・プロンプトからのターゲット・データベースおよび補助データベースへの接続を示しています。ターゲット接続にはオペレーティング・システム認証を、補助データベース接続にはネット・サービス名およびパスワード・ファイル認証を使用しています。
% rman target / auxiliary sbu@aux
auxiliary database Password: password
connected to auxiliary database: AUX (DBID=30472568)
4.2.8 コマンド・ファイル内でのRMANによるデータベース接続の確立
CONNECT
コマンドを格納する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 =================== . . .
4.3 RMANによる接続で発生した問題の診断
ターゲット・データベース、カタログ・データベースおよび補助データベースへの接続時にRMANで発生したエラーを診断する際、SQL*Plusを使用してこれらのデータベースに直接接続することを検討してください。このアクションによって、接続情報またはデータベースに関連する根本的な問題を明らかにできます。
この項では、次の項目について説明します。
4.3.1 ターゲット・データベースおよび補助データベースへの接続時に発生した問題の診断
RMANは、SYSDBA
またはSYSBACKUP
権限を使用して、ターゲットおよび補助データベースに接続します。このため、SQL*Plusを使用してターゲット・データベースまたは補助データベースへの接続時に発生した問題を診断する場合は、SYSDBA
またはSYSBACKUP
接続を要求して、RMANの動作を再現します。
たとえば、次のRMANコマンドで接続エラーが発生したとします。
RMAN> CONNECT TARGET /
この場合、次のSQL*Plusコマンドを使用して前の接続操作を再現します。
SQL> CONNECT / AS SYSBACKUP
4.4 RMANコマンドの入力
RMANコマンドは、RMANプロンプトから直接入力するか、またはテキスト・ファイルから読み取ることができます。
この項では、次の項目について説明します。
4.4.1 RMANプロンプトでの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> ;
4.4.2 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バックアップおよびリカバリ・リファレンス』を参照してください。
4.4.3 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;
4.4.4 コマンド・ファイルでの置換変数の使用
コマンド・ファイルの実行時に、コマンド・ファイル内の置換変数で使用される1つ以上の値をUSING
句に指定できます。この方法で、コマンド・ファイルを動的にすることができます。
SQL*Plusの場合と同様に、&1
は最初の値を配置する場所を示し、&2
は2番目の値を配置する場所を示します。それ以降も同様です。置換変数の構文では、&
integer
の後にオプションのピリオドが続きます。たとえば、&1.3
のようになります。オプションのピリオドは変数の一部であり、値と置換されます。したがって、置換テキストの直後に別の整数を続けることができます。たとえば、値mybackup
を変数&1.3
を含むコマンド・ファイルに渡すと、置換の結果はmybackup3
になります。
次の手順では、置換変数を含むコマンド・ファイルをコールする動的シェル・スクリプトを作成および使用する方法について説明します。
動的シェル・スクリプトを作成および使用する手順
関連項目:
@
の構文については、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
4.5 RMANのグローバリゼーション・サポート環境変数の設定
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リファレンス』を参照してください。
4.6 RMAN出力の場所の指定
デフォルトでは、RMANはコマンド出力を標準出力に書き込みます。出力をログ・ファイルにリダイレクトするには、RMANの起動時にコマンドラインでLOG
パラメータを入力します。
次の例では、RMANコマンドの出力がrman.log
というファイルに書き込まれます。
% rman LOG /tmp/rman.log
この場合、RMANによってコマンド入力は表示されますが、RMAN出力は表示されません。RMAN出力をログ・ファイルと標準出力の両方に送信する場合は、Linuxのtee
コマンドまたは同等のコマンドを使用する方法が最も簡単です。たとえば、次の方法で、入力と出力の両方をRMANコマンドライン・インタフェース内に表示できます。
% rman | tee rman.log RMAN>
関連項目:
RMANコマンドライン・オプションについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
4.7 RMAN構文の確認
RMANコマンドを実行せずに、その構文の正しさをテストできます。コマンドライン引数 CHECKSYNTAX
を使用して、RMANクライアントを起動します。これによって、入力したコマンドの解析のみが行われ、有効なRMAN構文ではないコマンドに対して RMAN-00558
エラーが戻されます。
RMANコマンドの構文は、コマンドラインまたはコマンド・ファイルで確認できます。
関連項目:
CHECKSYNTAX
コマンドライン・オプションについては、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください
4.7.1 コマンドラインでのRMAN構文の確認
コマンドを実際には実行せずに、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>
4.7.2 コマンド・ファイル内のRecovery Manager構文の確認
コマンド・ファイル内のコマンドをテストするには、CHECKSYNTAX
パラメータを指定してRMANを起動し、 @
コマンドを使用して、渡すコマンド・ファイルの名前を指定します。
コマンド・ファイル内のコマンドをテストする手順
例4-20 正しい構文が含まれているコマンド・ファイルの構文の確認
この例は、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.
例4-21 無効な構文が含まれているコマンド・ファイルの構文の確認
この例は、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
例4-22 置換変数を含むコマンド・ファイルの構文の確認
置換変数を含めて、コマンド・ファイルを動的にします。置換変数を含むコマンド・ファイルの構文を確認する場合は、RMANによって値を入力するように求められます。この例は、動的コマンド・ファイルの構文を確認する際に無効な値を入力した場合を示しています。太字のテキストは、プロンプトに入力されたテキストを示しています。
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は構文エラーを示します。
4.8 RMANのパイプ・インタフェースの使用
Recovery Managerにコマンドを発行してそれらのコマンドから出力を受信するかわりに、Recovery Managerのパイプ・インタフェースを使用できます。このインタフェースを使用することによって、Recovery Managerへのポータブル・プログラム・インタフェースを作成できます。
パイプ・インタフェースを使用すると、RMANは、オペレーティング・システム・シェルではなくDBMS_PIPE
PL/SQLパッケージによってコマンドを取得し、出力を送信します。パイプ・インタフェースを起動するには、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
ファンクションを使用できます。
この項では、次の項目について説明します。
4.8.1 パイプを介した複数のRMANコマンドの連続実行の例
この例では、RMANを制御しているアプリケーションで、複数のコマンドを連続して実行すると仮定します。パイプに各コマンドが送信および実行されて出力が戻されると、RMANは一時停止して次のコマンドを待機します。
パイプを介してRMANコマンドを実行する手順