用途
SWITCHコマンドを使用すると、次の操作のいずれかを実行できます。
データベース、表領域またはデータファイルのファイル名を、指定したファイルに使用可能な最新のイメージ・コピーに更新します。
SET NEWNAMEコマンドが発行されたデータファイルおよび一時ファイルのファイル名を更新します。
SWITCHは、SQL文ALTER DATABASE RENAME FILEを使用した場合と同じ結果になります。RMANリポジトリ内のファイルの名前は更新されますが、データベースは、オペレーティング・システム・レベルでは名前を変更しません。
前提条件
RMANがターゲット・データベースに接続されている必要があります。表領域、データファイルまたは一時ファイルを切り替えるときは、ファイルがオフライン状態になっている必要があります。データベース全体を切り替えるときは、データベースをオープンしないでください。
使用上の注意
SWITCHコマンドによって、データファイルのコピーのRMANリポジトリ・レコードがリカバリ・カタログから削除され、制御ファイル・レコードの状態がDELETEDに更新されます。
RMANがリカバリ・カタログに接続されていて、バックアップからリストアされた制御ファイルをデータベースで使用している場合は、SWITCHによって、リカバリ・カタログでは認識されているが、制御ファイルでは不明なデータファイルのレコードで制御ファイルが更新されます。
SWITCH ...TO COPYはRMANプロンプトでのみ実行できます。TO COPYを指定しないSWITCHは、RUNブロック内でのみ使用できます。
セマンティクス
この副次句では、データベース、表領域またはデータファイルのファイル名を、指定したファイルに使用可能な最新のイメージ・コピーに切り替えます。このコマンドを実行することで、バックアップからのデータファイルのリストアを回避できます。SWITCH ...TO COPYはRMANプロンプトでのみ実行できます。
| 構文要素 | 説明 |
|---|---|
DATABASE |
データファイルおよび制御ファイルの名前を変更して、これらのファイルのイメージ・コピーのファイル名を使用します。RMANは、各データベース・ファイルの最新のイメージ・コピーに切り替えられます。
データベースの切替え後、RMANでは、以前のデータベースがデータファイルのコピーとして認識されます。 |
DATAFILE datafileSpec |
指定したデータファイルを最新のイメージ・コピーに切り替えます。
ファイル切替え後は、指定したデータファイルは制御ファイルによって現行のファイルとは認識されなくなります。 |
TABLESPACE tablespace_name |
SWITCH DATAFILE ... TO COPYを使用する場合と同様に、指定した表領域内のすべてのデータファイルを切り替えます(例3-55を参照)。 |
TO COPY |
指定したアクティブなデータベース・ファイルをイメージ・コピーに切り替えます。 |
この副次句では、SET NEWNAMEコマンドが発行されたデータファイルおよび一時ファイルのファイル名を更新します。この句は、RUNブロック内でのみ実行してください。
| 構文要素 | 説明 |
|---|---|
DATAFILE ALL |
このジョブでSET NEWNAME FOR DATAFILEコマンドが発行されたすべてのデータファイルを新規の名前に切り替えるように指定します(例3-56を参照)。 |
DATAFILE datafileSpec |
名前変更するデータ・ファイルを指定します。ファイルの切替え後、指定したファイルは制御ファイルによって現行とは認識されません。TOオプションを指定しないと、RMANは、このファイルに対してRUNブロック内の以前のSET NEWNAMEコマンドで切替え先として指定したファイル名を使用します。 |
TO DATAFILECOPY {'filename' | TAG tag_name} |
ファイルの切替えに使用する入力コピー・ファイル(名前変更するデータファイルのコピー)を指定します(例3-58を参照)。 |
TEMPFILE ALL |
このジョブでSET NEWNAME FOR TEMPFILEコマンドが発行されたすべての一時ファイルを新規の名前に切り替えるように指定します。 |
TEMPFILE tempfileSpec |
名前変更する一時ファイルを指定します。TOオプションを指定しないと、RMANは、このファイルに対してRUNブロック内の以前のSET NEWNAMEコマンドで切替え先として指定したファイル名を使用します。ターゲット・データベースはマウントする必要がありますが、オープンはしないでください。 |
TO 'filename' |
一時ファイルの名前を指定した名前に変更します(例3-57を参照)。ターゲット・データベースはマウントする必要がありますが、オープンはしないでください。 |
例3-55 バックアップからのリストアを回避するためのイメージ・コピーへの切替え
ディスクに障害が発生し、users表領域内のすべてのデータファイルにアクセスできなくなったとします。この表領域内のすべてのデータファイルのイメージ・コピーは、高速リカバリ領域に存在します。RMANを起動し、TARGETとしてデータベースに接続した後、SWITCHを実行して制御ファイルが新しいデータファイルを指し示すようにしてから、次のようにRECOVERを実行します。
SQL "ALTER TABLESPACE users OFFLINE IMMEDIATE"; SWITCH TABLESPACE users TO COPY; RECOVER TABLESPACE users; SQL "ALTER TABLESPACE users ONLINE";
例3-56 新しい場所へリストアした後のデータファイルのファイル名の切替え
ディスクに障害が発生し、データファイルを新しいディスクの場所へリストアする必要があるとします。RMANを起動してTARGETとしてデータベースに接続した後、SET NEWNAMEコマンドを使用してデータファイルの名前を変更し、RESTOREを実行して失われたデータファイルをリストアします。SWITCHを実行して制御ファイルが新しいデータファイルを指し示すようにしてから、RECOVERを実行します。この例では、ディスクとテープの両方のチャネルを割り当てます。
RUN
{
ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
ALLOCATE CHANNEL dev2 DEVICE TYPE sbt;
SQL "ALTER TABLESPACE users OFFLINE IMMEDIATE";
SET NEWNAME FOR DATAFILE '/disk1/oradata/prod/users01.dbf'
TO '/disk2/users01.dbf';
RESTORE TABLESPACE users;
SWITCH DATAFILE ALL;
RECOVER TABLESPACE users;
SQL "ALTER TABLESPACE users ONLINE";
}
例3-57 SET NEWNAMEとSWITCH TEMPFILE ALLを使用した一時ファイルの名前の変更
この例では、SET NEWNAMEを使用していくつかの一時ファイルに新しい名前を指定する方法、およびSWITCH TEMPFILE ALLを使用して一時ファイルを指定の名前に変更する方法を説明します。データベースはこの手順を開始する際にクローズされた状態である必要があります。データベースがオープンされている場合は一時ファイルが新しい場所に再作成されます。
CONNECT TARGET /
STARTUP FORCE MOUNT
RUN
{
SET NEWNAME FOR TEMPFILE 1 TO '/disk2/temp01.dbf';
SET NEWNAME FOR TEMPFILE 2 TO '/disk2/temp02.dbf';
SET NEWNAME FOR TEMPFILE 3 TO '/disk2/temp03.dbf';
SWITCH TEMPFILE ALL;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
}