用途
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
この副次句では、データベース、表領域またはデータファイルのファイル名を、指定したファイルに使用可能な最新のイメージ・コピーに切り替えます。このコマンドを実行することで、バックアップからのデータファイルのリストアを回避できます。SWITCH ...TO COPYはRMANプロンプトでのみ実行できます。
| 構文要素 | 説明 |
|---|---|
|
データファイルおよび制御ファイルの名前を変更して、これらのファイルのイメージ・コピーのファイル名を使用します。RMANは、各データベース・ファイルの最新のイメージ・コピーに切り替えられます。 マルチテナント・コンテナ・データベース(CDB)で、rootとCDB内のすべてのプラガブル・データベース(PDB)のファイル名を切り替えます。PDBでは、接続されたPDBのファイル名を切り替えます。CDBおよびPDBへの接続の詳細は、「CDBおよびPDBへの接続」を参照してください。 データベースの切替え後、RMANでは、以前のデータベースがデータファイルのコピーとして認識されます。 |
|
CDBで、rootのファイル名を切り替えます。「CDBおよびPDBへの接続」の説明に従って、rootに接続します。 |
|
1つ以上のPDBのデータファイルおよび制御ファイルの名前を変更して、これらのファイルのイメージ・コピーのファイル名を使用します。複数のPDBを指定する場合は、カンマ区切りのリストを使用してください。「CDBおよびPDBへの接続」の説明に従って、rootに接続します。 |
|
指定したデータファイルを最新のイメージ・コピーに切り替えます。 ファイル切替え後は、指定したデータファイルは制御ファイルによって現行のファイルとは認識されなくなります。 |
|
PDB内の表領域のデータファイルを切り替えるには、「CDBおよびPDBへの接続」の説明に従って、PDBに接続します。 |
|
指定したアクティブなデータベース・ファイルをイメージ・コピーに切り替えます。 |
switchFile
この副次句では、SET NEWNAMEコマンドが発行されたデータファイルおよび一時ファイルのファイル名を更新します。この句は、RUNブロック内でのみ実行してください。
| 構文要素 | 説明 |
|---|---|
|
このジョブで |
|
名前変更するデータファイルを指定します。ファイルの切替え後、指定したファイルは制御ファイルによって現行とは認識されません。 |
TO DATAFILECOPY {'filename' |TAG tag_name} |
ファイルの切替えに使用する入力コピー・ファイル(名前変更するデータファイルのコピー)を指定します(例3-71を参照)。 |
|
このジョブで |
|
名前変更する一時ファイルを指定します。 |
|
一時ファイルの名前を指定した名前に変更します(例3-70を参照)。ターゲット・データベースはマウントする必要がありますが、オープンはしないでください。 |
例
例3-68 バックアップからのリストアを回避するためのイメージ・コピーへの切替え
ディスクに障害が発生し、users表領域内のすべてのデータファイルにアクセスできなくなったとします。この表領域内のすべてのデータファイルのイメージ・コピーは、高速リカバリ領域に存在します。RMANを起動し、TARGETとしてデータベースに接続した後、SWITCHを実行して制御ファイルが新しいデータファイルを指し示すようにしてから、次のようにRECOVERを実行します。
ALTER TABLESPACE users OFFLINE IMMEDIATE; SWITCH TABLESPACE users TO COPY; RECOVER TABLESPACE users; ALTER TABLESPACE users ONLINE;
例3-69 新しい場所へリストアした後のデータファイル名の切替え
ディスクに障害が発生し、データファイルを新しいディスクの場所へリストアする必要があるとします。RMANを起動してTARGETとしてデータベースに接続した後、SET NEWNAMEコマンドを使用してデータファイルの名前を変更し、RESTOREを実行して失われたデータファイルをリストアします。SWITCHを実行して制御ファイルが新しいデータファイルを指し示すようにしてから、RECOVERを実行します。この例では、ディスクとテープの両方のチャネルを割り当てます。
RUN
{
ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;
ALLOCATE CHANNEL dev2 DEVICE TYPE sbt;
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;
ALTER TABLESPACE users ONLINE;
}
例3-70 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;
}
例3-71 データファイルのコピーの切り替え
次のコマンドではTOOLS表領域のデータファイルを/disk2/tools.copyという名前のデータファイル・コピーに切り替えます。
RUN
{
ALTER TABLESPACE tools OFFLINE IMMEDIATE;
SWITCH DATAFILE '/disk1/oradata/prod/tools01.dbf'
TO DATAFILECOPY '/disk2/tools.copy';
RECOVER TABLESPACE tools;
ALTER TABLESPACE tools ONLINE;
}