用途
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; }