日本語PDF

2.13 CREATE SCRIPT

目的

CREATE SCRIPTコマンドを使用すると、リカバリ・カタログ内にストアド・スクリプトを作成できます。ストアド・スクリプトは、名前が付けられ、後で実行するためにリカバリ・カタログに格納されている一連のRMANコマンドです。

関連項目:

前提条件

CREATE SCRIPTは、RMANプロンプトでのみ実行できます。RMANが、ターゲット・データベースとリカバリ・カタログに接続されている必要があります。リカバリ・カタログ・データベースはオープンの状態である必要があります。

GLOBALを指定する場合は、この名前のグローバル・スクリプトがリカバリ・カタログ内に存在していない必要があります。GLOBALを指定しない場合は、同じターゲット・データベースに対して同じ名前のローカル・スクリプトが存在していない必要があります。この前提条件が満たされない場合は、エラーRMAN-20401が戻されます。

使用上のノート

ストアド・スクリプトには、ローカルとグローバルがあります。ローカル・スクリプトは、現行のターゲット・データベース用にのみ作成されますが、グローバル・スクリプトは、リカバリ・カタログに登録されているすべてのデータベースで使用できます。

グローバル・スクリプトをローカル・スクリプトと同じ名前で、またローカル・スクリプトをグローバル・スクリプトと同じ名前で作成することもできます。

ストアド・スクリプト内の置換変数

RMANでは、ストアド・スクリプトで置換変数を使用できます。 &1は最初の値を配置する位置を示し、&2は2番目の値を配置する位置を示します。その後も同様に続きます。特殊文字は、引用符で囲む必要があります。

置換変数の構文では、&integerの後にオプションのピリオドが続きます。たとえば、&1.3のようになります。オプションのピリオドは変数の一部であり、値と置換されます。したがって、置換テキストの直後に別の整数を続けることができます。たとえば、置換変数&1.3が含まれているコマンド・ファイルに値mybackupを渡すと、その置換結果はmybackup3になります。mybackup.3という結果を得るには、構文&1..3で2つのピリオドを使用します。

置換変数を使用するストアド・スクリプトを作成する場合は、作成時に例となる値を指定する必要があります。これらの値は、RMANの起動時にUSING句で指定するか(RMANを参照)、またはプロンプトが表示されたときに入力します(例2-74を参照)。

セマンティクス

構文要素 説明

CREATE OR REPLACE

指定された名前のスクリプトが存在しない場合は、新しいスクリプトを作成します。指定された名前のスクリプトがすでに存在する場合は、それを再作成します。

GLOBAL

スクリプトをグローバルとして指定します。

ノート: 仮想プライベート・カタログは、グローバル・スクリプトに対して読取り専用のアクセスが可能です。グローバル・スクリプトの作成または更新は、ベース・リカバリ・カタログへの接続中に実行する必要があります。

SCRIPT script_name

スクリプトの名前を指定します。スクリプト名に空白または予約語が含まれている場合は、引用符で囲む必要があります。

   COMMENT 'comment'

説明のコメントをリカバリ・カタログ内のストアド・スクリプトと関連付けます。このコメントは、LIST SCRIPT NAMESの出力で使用されます。

backupCommands

maintenanceCommands

miscellaneousCommands

restoreCommands

ストアド・スクリプトに含めるコマンドを指定します。CREATE SCRIPT 'script_name' {...}コマンドのカッコ内で使用できるコマンドは、RUNコマンド内でサポートされているコマンドと同じです。RUNコマンド内で有効なコマンドは、いずれもストアド・スクリプトで使用できます。コマンドRUN@(アットマーク)および@@(二重アットマーク)は、ストアド・スクリプト内では使用できません。

FROM FILE 'filename'

指定したファイルからスクリプトを定義する一連のコマンドを読み取ります。

このファイルは、有効なストアド・スクリプトの本体と同様です。このファイルの最初の行は、左カッコ({)である必要があります。また、最終行には、右カッコ(})が含まれている必要があります。このファイルのRMANコマンドは、ストアド・スクリプトで有効である必要があります。

例2-72 ローカル・ストアド・スクリプトの作成

データベースprodをバックアップするローカル・ストアド・スクリプトを作成するとします。RMANを起動し、TARGETとしてprodに接続して、リカバリ・カタログに接続します。backup_wholeというストアド・スクリプトを作成し、EXECUTE SCRIPTを使用して、次のようにそのスクリプトを実行します。

CREATE SCRIPT backup_whole 
COMMENT "backup whole database and archived redo log files"
{
    BACKUP 
      INCREMENTAL LEVEL 0 TAG backup_whole
      FORMAT "/disk2/backup/%U"
      DATABASE PLUS ARCHIVELOG;
}
RUN { EXECUTE SCRIPT backup_whole; }

例2-73 グローバル・ストアド・スクリプトの作成

この例では、RMANをターゲット・データベースprodに接続し、カタログ・ユーザーrcoとしてリカバリ・カタログ・データベースcatdbに接続します。この例では、データベースおよびアーカイブREDOログ・ファイルをバックアップするglobal_backup_dbというグローバル・スクリプトを作成します。

RMAN> CONNECT TARGET "sbu@prod AS SYSBACKUP"

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

RMAN> CONNECT CATALOG rco@catdb

recovery catalog database Password: password
connected to recovery catalog database

RMAN> CREATE GLOBAL SCRIPT global_backup_db { BACKUP DATABASE PLUS ARCHIVELOG; }
RMAN> EXIT;

これで、RMANをprod2などの別のターゲット・データベースに接続し、グローバル・ストアド・スクリプトを実行できます。

RMAN> CONNECT TARGET "sbu@prod2 AS SYSBACKUP"

target database Password: password
connected to target database: PROD2 (DBID=36508508)

RMAN> CONNECT CATALOG rco@catdb

recovery catalog database Password: password
connected to recovery catalog database

RMAN> RUN { EXECUTE SCRIPT global_backup_db; }

例2-74 置換変数を使用するストアド・スクリプトの作成

次の例では、RMANをターゲット・データベースおよびリカバリ・カタログに接続し、CREATE SCRIPTを使用して、3つの置換変数が含まれるバックアップ・スクリプトを作成します。RMANによって、変数の初期値を入力するプロンプトが表示されます(太字がユーザー入力です)。

RMAN> CONNECT TARGET /
RMAN> CONNECT CATALOG rco@catdb

recovery catalog database Password: password
connected to recovery catalog database

RMAN> CREATE SCRIPT backup_df 
2> { BACKUP DATAFILE &1 TAG &2.1 FORMAT '/disk1/&3_%U'; }
 Enter value for 1: 1
 
Enter value for 2: df1_backup
 
Enter value for 3: df1

starting full resync of recovery catalog
full resync complete
created script backup_df
 

EXECUTE SCRIPTの実行時に、スクリプトに別の値を渡すことができます。次の例では、値3test_backupおよびtestをストアド・スクリプトの置換変数に渡しています。

RMAN> RUN { EXECUTE SCRIPT backup_df USING 3 test_backup df3; }

値が置換され、スクリプトは次のように実行されます。

BACKUP DATAFILE 3 TAG test_backup1 FORMAT '/disk1/df3_%U';