3.21 SWITCH
目的
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-77を参照)。 |
|
このジョブで |
|
名前変更する一時ファイルを指定します。 |
|
一時ファイルの名前を指定した名前に変更します(例3-76を参照)。ターゲット・データベースはマウントする必要がありますが、オープンはしないでください。 |
例
例3-74 バックアップからのリストアを回避するためのイメージ・コピーへの切替え
ディスクに障害が発生し、users
表領域内のすべてのデータファイルにアクセスできなくなったとします。この表領域内のすべてのデータファイルのイメージ・コピーは、高速リカバリ領域に存在します。RMANを起動し、TARGET
としてデータベースに接続した後、SWITCH
を実行して制御ファイルが新しいデータファイルを指し示すようにしてから、次のようにRECOVER
を実行します。
ALTER TABLESPACE users OFFLINE IMMEDIATE; SWITCH TABLESPACE users TO COPY; RECOVER TABLESPACE users; ALTER TABLESPACE users ONLINE;
例3-75 新しい場所へリストアした後のデータファイル名の切替え
ディスクに障害が発生し、データファイルを新しいディスクの場所へリストアする必要があるとします。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-76 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-77 データファイルのコピーの切り替え
次のコマンドでは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; }