この章では、Recovery Manager(RMAN)を使用したOracle自動ストレージ管理(Oracle ASM)ストレージへのデータの移行方法およびOracle ASMストレージからのデータの移行方法について説明します。
この章の内容は次のとおりです。
関連項目: RMANの使用の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
この項では、データのOracle ASMへの移行およびOracle ASMからの移行に関わる基本的な概念および作業について説明します。
この項の内容は次のとおりです。
Oracle ASMストレージに代わるものには、ファイルシステム、RAWディスクおよびSAN構成があります。Oracle ASMには、パフォーマンス最適化、冗長性保護およびロード・バランシングなど、これらの代替ストレージより多くの利点があります。Oracle ASMによりディスクが管理されるため、サード・パーティの論理ボリューム・マネージャは必要ありません。Oracle ASMには既存の共有ストレージがあるため、Oracle Real Application Clusters(Oracle RAC)データベースはOracle ASMの効果を得ることができます。
データベースでOracle ASM以外のストレージ・システムを現在使用している場合、データベースの全体または一部をOracle ASMに移行して、データベース管理を簡略化できます。高速リカバリ領域をOracle ASMに移行することもできます。
ネイティブ・オペレーティング・システム・コマンド(Linux cp
またはWindows COPY
など)では、Oracle ASMストレージでのファイルの書込みまたは読取りはできません。RMANではOracle ASMファイルの読込みおよび書込みができるため、RMANを使用してデータファイルのOracle ASMストレージへのコピー、Oracle ASMストレージからのコピー、Oracle ASMディスク・グループ間でのコピーができます。この方法は、ユーザー管理のディスクにバックアップを格納する必要がある場合に便利です。
RMANをプライマリ・バックアップ・ツールとして使用していなくても、RMANによりデータをOracle ASMに移行できます。移行にはRMANデータベース・バックアップが1つ必要です。
Oracle ASMと代替ストレージ・システムの両方に、データベース全体を保持するために十分なディスク領域がある場合、データベースをOracle ASMに直接移動できます。十分な記憶域がない場合は、データベースをテープにバックアップし、古いディスク領域を使用するOracle ASMディスク・グループを作成して、テープからOracle ASMにデータベースをリストアできます。
新しいリカバリ領域の場所を設定した後、既存のバックアップが古いリカバリ領域に残り、リカバリ領域の合計ディスク割当てには不利になります。バックアップは、領域が必要な場合、古いリカバリから削除されます。これらのバックアップは、RMANで使用可能です。ディスク領域が必要でないかぎり、レガシー・バックアップを新しいOracle ASMリカバリ領域に移動する必要はありません。古いリカバリ領域でファイルによって消費されている領域を解放するには、ファイルをテープにバックアプするか、Oracle ASMリカバリ領域に移行します。
注意: 外部アーカイブREDOログは、LogMinerセッション用の論理スタンバイ・データベースで受信されるログです。外部アーカイブREDOログは移行できません。通常のアーカイブ・ログと異なり、外部アーカイブ・ログには異なる内部データベース識別子(DBID)があります。このため、論理スタンバイ・データベースではバックアップやリストアができません。 |
Oracle ASMから代替ストレージ・システムへのデータベースの移行は、代替ストレージ・システムからOracle ASMへの移行に似ています。主な変更点は、代替ストレージ・システムのファイルの場所を参照する各手順を変更することです。
Enterprise Managerを使用したOracle ASMへのデータベースの移行の詳細は、第9章「Oracle Enterprise ManagerによるOracle ASMの管理」を参照してください。
この項では、RMANを使用してデータベース全体および高速リカバリ領域を代替ストレージからOracle ASMに移行するプロセスについて説明します。
高速リカバリ領域は、リカバリ関連のファイル(制御ファイルおよびオンラインREDOログのコピー、アーカイブREDOログ・ファイル、フラッシュバック・ログおよびRMANバックアップ)の格納に使用できる任意のディスクの場所です。Oracle DatabaseおよびRMANにより、高速リカバリ領域内のファイルは自動的に管理されます。高速リカバリ領域のユーザー指定の最大サイズである、ディスク割当てを指定できます。ディスク割当てに到達すると、Oracleにより不要になったファイルが自動的に削除されます。
フラッシュバック・ログは、フラッシュバック・データベース操作の実行に使用されるOracle生成ログです。データベースは、高速リカバリ領域にしかフラッシュバック・ログを書き込めません。フラッシュバック・ログは連続して書き込まれ、アーカイブされません。ディスクにはバックアップできません。
データベース全体および高速リカバリ領域を代替ストレージからOracle ASMに移行するには、次の手順を実行します。
データベースおよびサーバー・パラメータ・ファイルをバックアップし、Oracle Flashback Databaseを無効にします。
Oracle Flashback Databaseオプションは、RMANまたはSQLでのFLASHBACK
DATABASE
コマンドによってデータベース全体を前の一貫性のあるシステム変更番号(SCN)に戻します。データベース・フラッシュバックは、従来のメディア・リカバリとは異なります。これは、物理ファイルのリストアを必要とせず、かわりに変更されたデータ・ブロックの保存イメージを使用して現在のデータファイルを過去の状態にリストアするためです。この機能では、フラッシュバック・ログとアーカイブREDOログを使用します。
この手順の詳細は、「RMANを使用してOracle ASMにデータベースを移行するための準備」を参照してください。
ファイルをOracle ASMにリストアしてデータベースをリカバリし、必要に応じて高速リカバリ領域をOracle ASMに移行します。
この手順の詳細は、「RMANを使用したOracle ASMへのデータベースの移行」を参照してください。
Oracle ASMから代替ストレージにファイルを移行するには、「Oracle ASMから代替ストレージへのデータベースの移行」を参照してください。
この項では、データベースを移行するための準備の方法について説明します。この項では、次のことを前提とします。
データベースを2つのOracle ASMディスク・グループ、すなわちデータベース用の+DATA
と高速リカバリ領域用の+FRA
に移行します。
Oracle ASMストレージに移行するデータベースの名前はmydb
です。
Oracle ASMへの移行のためにデータベースの準備をする手順:
データベースのCOMPATIBLE
初期化パラメータ設定が11.0.0未満の場合、読取り専用のトランスポータブル表領域を読取り/書込み用にします。
読取り専用トランスポータブル表領域は、RMANでバックアップできないために移行できません。
データベースは物理スタンバイ・データベースで、管理リカバリが開始されている場合、管理リカバリを停止します。
物理スタンバイ・データベースは、障害保護用に使用できる本番データベースのコピーです。
たとえば、SQL*PlusをSYSDBA
権限でデータベースに接続し、次の文を実行して管理リカバリを停止します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
このターミナル・ウィンドウを開いたままにします。
サーバー・パラメータ・ファイルまたは初期化パラメータ・ファイルを一時的な保存場所にコピーします。
次の例では、オペレーティング・システム・ユーティリティを使用して、サーバー・パラメータ・ファイルをコピーします。
$ cp spfileMYDB.ora orig_spfileMYDB.ora
新しいターミナル・ウィンドウで、RMANセッションを開始し、TARGET
として移行するデータベースに接続します。必要に応じて、リカバリ・カタログに接続します。
データファイルをOracle ASMディスク・グループにバックアップします。
次の例では、RUN
コマンドを使用して、レベル0増分バックアップを作成し、4チャネルを割り当ててバックアップ速度を速めます。レベル0増分バックアップは、バックアップ対象のデータファイルのすべてのデータ・ブロックをバックアップするRMAN増分バックアップです。レベル0の増分バックアップは、内容は全体バックアップと同じですが、全体バックアップとは異なり、増分バックアップ計画の一部とみなされます。
増分バックアップは、変更されたブロックのみをバックアップするRMANバックアップです。増分バックアップはレベルで分類されます。レベル0増分バックアップは全体バックアップと同じ機能で、どちらも使用されたことがあるすべてのブロックをバックアップします。全体バックアプでは後続の増分バックアップでバックアップされたブロックに影響がないのに対し、増分バックアップでは影響がある点で異なります。
全体バックアップは、非増分RMANバックアップです。全体は、データベースのどれだけがバックアップされるかではなく、バックアップが増分ではないということを指しています。したがって、1つのデータファイルの全体バックアップを作成できます。
この数値は適宜増減します。FORMAT句は、データベースの格納に使用されるOracle ASMディスク・グループの名前である+DATA
を指定しています。
RUN { ALLOCATE CHANNEL dev1 DEVICE TYPE DISK; ALLOCATE CHANNEL dev2 DEVICE TYPE DISK; ALLOCATE CHANNEL dev3 DEVICE TYPE DISK; ALLOCATE CHANNEL dev4 DEVICE TYPE DISK; BACKUP AS COPY INCREMENTAL LEVEL 0 DATABASE FORMAT '+DATA' TAG 'ORA_ASM_MIGRATION'; }
ブロック変更トラッキングがデータベースに対して有効である場合、任意でレベル1増分バックアップを作成します。これは後からデータベース・コピーのリカバリに使用できます。
ブロック変更トラッキングは、各データベース更新の影響を受けたデータファイル・ブロックをOracleに追跡させるデータベース・オプションです。トラッキング情報は、ブロック変更トラッキング・ファイルに格納されます。ブロック変更トラッキングを有効にすると、RMANでは変更トラキング・ファイルから変更されたブロックの記録を使用して、データファイル全体を読み取るのではなく、変更されたブロックのみを読み取ることで、増分バックアップのパフォーマンスを向上させます。
次の例では、前の手順で作成したレベル0バックアップの増分レベル1コピーを作成します。
RUN { ALLOCATE CHANNEL dev1 DEVICE TYPE DISK; ALLOCATE CHANNEL dev2 DEVICE TYPE DISK; ALLOCATE CHANNEL dev3 DEVICE TYPE DISK; ALLOCATE CHANNEL dev4 DEVICE TYPE DISK; BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'ORA_ASM_MIGRATION' DATABASE; }
データベースがARCHIVELOG
モードで、データベースがオープンの場合、オンライン・ログをアーカイブします。
次の例では、SQL
コマンドを使用して、現行REDOログをアーカイブします。
RMAN> SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";
データベース・インスタンスで現在サーバー・パラメータ・ファイルを使用している場合、それをバックアップします。
次の例では、サーバー・パラメータ・ファイルをバックアップします。
RMAN> BACKUP AS BACKUPSET SPFILE;
ブロック変更トラッキングが有効になっている場合は、無効にします。
次のコマンドにより、ブロック変更トラッキングが無効になります。
RMAN> SQL "ALTER DATABASE DISABLE BLOCK CHANGE TRACKING";
フラッシュバック・データベースが有効な場合、無効にして、保証付きリストア・ポイントを削除します。
注意: 高速リカバリ領域を移行しない場合は、この手順を省略してください。 |
フラッシュバック・ログをOracle ASMに移行できないため、Oracle Flashback Databaseを無効にする必要があります。次のコマンドでフラッシュバック・データベースを無効にします。
RMAN> SQL "ALTER DATABASE FLASHBACK OFF";
次のコマンドにより、Q106
という保証付きリストア・ポイントが削除されます。
RMAN> SQL "DROP RESTORE POINT Q106";
データベースを一貫して停止します。
次のコマンドにより、データベースを停止します。
RMAN> SHUTDOWN IMMEDIATE;
次の手順は、データベースの停止時間を最小限にするためのものです。移行の対象がプライマリ・データベースかスタンバイ・データベースによって、手順がわずかに異なります。この手順では、「RMANを使用してOracle ASMにデータベースを移行するための準備」で説明したのと同じことを前提とします。リカバリ領域をOracle ASMに移行しない場合は、示されている手順の一部を変更する必要があります。
注意: 次の手順は、SQL*PlusとRMANの間で切り替わるため、それぞれのユーティリティに1つのターミナル・ウィンドウを開いたままにします。 |
Oracle ASMにデータベースを移行する手順:
Oracle ASMストレージでサーバー・パラメータ・ファイルをリストアまたは作成します。
データベースでサーバー・パラメータ・ファイルが使用されているかどうかによって、手順が異なります。
データベースでサーバー・パラメータ・ファイルが使用されている場合、次のコマンドでOracle ASMディスク・グループにリストアします。sid
はインスタンスのSIDです。
RMAN> STARTUP MOUNT;
RMAN> RESTORE SPFILE TO '+DATA/spfilesid.ora';
RMAN> SHUTDOWN IMMEDIATE;
データベースでサーバー・パラメータ・ファイルが使用されていない場合、Oracle ASMで1つ作成します。SQL*PlusでCREATE SPFILE
コマンドを次のように実行します。sid
はデータベースのSIDです(コマンドは2行にわたります)。
SQL> CREATE SPFILE='+DATA/spfilesid.ora' FROM PFILE='?/dbs/initsid.ora';
後で、spfile
sid
.ora
とinit
sid
.ora
を?/dbs
ディレクトリから削除し、次の行で新しいinit
sid
.ora
を作成します。
SPFILE='+DATA/spfilesid.ora'
Oracle Managed Files初期化パラメータをOracle ASMの場所に設定します。
注意: 高速リカバリ領域を移行しない場合、DB_RECOVERY_FILE_DEST およびDB_RECOVERY_FILE_DEST_SIZE 初期化パラメータの設定を変更しないでください。ただし、オンラインREDOログの移行の場合は、DB_CREATE_ONLINE_LOG_DEST_ n パラメータをOracle ASMの場所に設定する必要があります。 |
DB_CREATE_FILE_DEST
およびオプションのDB_CREATE_ONLINE_LOG_DEST_
n
初期化パラメータをOracle ASMディスク・グループに設定します。データベースでリカバリ領域を使用する場合、リカバリ領域の場所をOracle ASMディスク・グループに変更します。また、リカバリ領域のサイズも変更します。
次の例に示すように、SQL*Plusでコマンドを実行します。例では、高速リカバリ領域のサイズを100GBと想定し、高速リカバリ領域にディスク・グループ+FRA
を指定します。
SQL> STARTUP FORCE NOMOUNT; SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='+DATA' SID='*'; SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=100G SID='*'; SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+FRA' SID='*';
CONTROL_FILES
初期化パラメータをOracle ASMの場所に設定します。
高速リカバリ領域を移行する場合は、SQL*Plusで次のコマンドを入力してデータベース・インスタンスを再起動し、制御ファイルの場所をディスク・グループ+DATA
および+FRA
に設定します。
SQL> STARTUP FORCE NOMOUNT; SQL> ALTER SYSTEM SET CONTROL_FILES='+DATA','+FRA' SCOPE=SPFILE SID='*';
高速リカバリ領域を移行しない場合は、SQL*Plusで次のコマンドを入力してデータベース・インスタンスを再起動し、制御ファイルの場所をディスク・グループ+DATA
に設定します。
SQL> STARTUP FORCE NOMOUNT; SQL> ALTER SYSTEM SET CONTROL_FILES='+DATA','+DATA' SCOPE=SPFILE SID='*';
制御ファイルをOracle ASMに移行し、制御ファイルをマウントします。
制御ファイルをリストアするためにRMANターミナルに切り替えます。次の例で、original_cf_name
は、移行前の初期化パラメータ・ファイル内の制御ファイル名です。
RMAN> STARTUP FORCE NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM 'original_cf_name';
RMAN> ALTER DATABASE MOUNT;
データファイルをOracle ASMに移行します。
RMANを使用して、「RMANを使用してOracle ASMにデータベースを移行するための準備」の手順5「データファイルをOracle ASMディスク・グループにバックアップします」で作成したデータベース・コピーに切り替えます。切替えにより、すべてのデータファイルはOracle ASMディスク・グループ上のファイルに名前が変更されます。後で、データベースをリカバリします。増分バックアプが取られた場合、RMANではそれらをリカバリ中に適用します。たとえば、RMANプロンプトで次のコマンドを入力します。
SWITCH DATABASE TO COPY; RUN { ALLOCATE CHANNEL dev1 DEVICE TYPE DISK; ALLOCATE CHANNEL dev2 DEVICE TYPE DISK; ALLOCATE CHANNEL dev3 DEVICE TYPE DISK; ALLOCATE CHANNEL dev4 DEVICE TYPE DISK; RECOVER DATABASE; }
データベースでブロック変更トラッキングまたはフラッシュ・データベースを使用する場合、これらの機能を有効にします。
注意: リカバリ領域を移行しない場合、フラッシュバック・データベースは無効にしていないので、有効にはしません。 |
たとえば、SQL*Plusで次の文を入力します。
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+DATA'; SQL> ALTER DATABASE FLASHBACK ON;
データベースを標準操作モードにします。
標準操作モードは、データベースがプライマリ・データベースかスタンバイ・データベースかによって決まります。
データベースがプライマリ・データベースである場合は、次のようにオープンします。
SQL> ALTER DATABASE OPEN;
データベースがスタンバイ・データベースの場合は、次のように管理リカバリ・モードを再開します。
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
一時ファイルを削除し、Oracle ASMに再作成します。
SQL*Plusを使用して、一時ファイルを再作成します。次の例では、元の記憶域にある一時ファイルの名前はtempfile_name
です。一時表領域の名前はtemp_tbs_name
です。
SQL> ALTER DATABASE TEMPFILE 'tempfile_name' DROP; SQL> ALTER TABLESPACE temp_tbs_name ADD TEMPFILE;
オンラインREDOログ・ファイルを移行します。
これがプライマリ・データベースである場合、Oracle ASMで新しいログ・グループ・メンバーを追加し、古いメンバーを削除します。次のPL/SQLスクリプトを使用すると、オンラインREDOログ・グループをOracle ASMディスク・グループに移行できます。PL/SQLスクリプトでは、「RMANを使用したOracle ASMへのデータベースの移行」の手順3「Oracle Managed Files初期化パラメータをOracle ASMの場所に設定します」で指定したOracle Managed Files初期化パラメータが設定されていると想定しています。
例8-1 オンラインREDOログの移行
SET SERVEROUTPUT ON; DECLARE CURSOR rlc IS SELECT GROUP# GRP, THREAD# THR, BYTES, 'NO' SRL FROM V$LOG UNION SELECT GROUP# GRP, THREAD# THR, BYTES, 'YES' SRL FROM V$STANDBY_LOG ORDER BY 1; stmt VARCHAR2(2048); BEGIN FOR rlcRec IN rlc LOOP IF (rlcRec.srl = 'YES') THEN stmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rlcRec.thr || ' SIZE ' || rlcRec.bytes; EXECUTE IMMEDIATE stmt; stmt := 'ALTER DATABASE DROP STANDBY LOGFILE GROUP ' || rlcRec.grp; EXECUTE IMMEDIATE stmt; ELSE stmt := 'ALTER DATABASE ADD LOGFILE THREAD ' || rlcRec.thr || ' SIZE ' || rlcRec.bytes; EXECUTE IMMEDIATE stmt; BEGIN stmt := 'ALTER DATABASE DROP LOGFILE GROUP ' || rlcRec.grp; DBMS_OUTPUT.PUT_LINE(stmt); EXECUTE IMMEDIATE stmt; EXCEPTION WHEN OTHERS THEN EXECUTE IMMEDIATE 'ALTER SYSTEM SWITCH LOGFILE'; EXECUTE IMMEDIATE 'ALTER SYSTEM CHECKPOINT GLOBAL'; EXECUTE IMMEDIATE stmt; END; END IF; END LOOP; END; /
必要に応じて、古い高速リカバリ領域のバックアップおよびコピーを、次のようにOracle ASMに移行します。
リカバリ領域に外部アーカイブ・ログが存在する場合、それらをOracle ASMに移行できません。RMANプロンプトで次のコマンドを実行します。
RMAN> DELETE REMOTE ARCHIVELOG ALL;
アーカイブREDOログ・ファイル、バックアップ・セットおよびデータファイル・コピーをOracle ASMにバックアップします。たとえば、RMANプロンプトで次のコマンドを実行します。
RUN { ALLOCATE CHANNEL dev1 DEVICE TYPE DISK; ALLOCATE CHANNEL dev2 DEVICE TYPE DISK; ALLOCATE CHANNEL dev3 DEVICE TYPE DISK; ALLOCATE CHANNEL dev4 DEVICE TYPE DISK; BACKUP AS COPY ARCHIVELOG ALL DELETE INPUT; BACKUP BACKUPSET ALL DELETE INPUT; BACKUP AS COPY DATAFILECOPY ALL DELETE INPUT; }
Oracle ASMから代替ストレージ・システムへのデータベースの移行は、基本的にOracle ASMへの移行の逆です。「RMANを使用してOracle ASMにデータベースを移行するための準備」および「RMANを使用したOracle ASMへのデータベースの移行」の手順を次のように変更します。
手順でOracle Managed Filesの場所を指定する場合、代替ストレージ内の場所を使用するように手順を変更します。
BACKUP
コマンドのFORMAT
句でOracle ASMの場所を指定する場合、バックアップ形式を代替ストレージの場所に変更します。
SQL文で使用されるファイル名がOracle ASMの場所の場合、代替ストレージの場所にあるファイル名に変更します。
ARCHIVELOG
モード・データベースのアクティブ・データファイルをOracle ASMディスク・グループ間で移動できます。この場合、BACKUP
AS
COPY
を使用してデータファイルを新規ディスク・グループにコピーし、SET
NEWNAME
コマンドとSWITCH
コマンドを使用して制御ファイルでデータファイルの名前を変更します。
ここでは、ディスク・グループDATA
とUSERDATA
を使用することを前提とします。データファイル+DATA/orcl/datafile/users.261.689589837
をディスク・グループUSERDATA
に移動します。
データファイルの移動手順を始める前に、データベースに対してARCHIVELOG
モードが有効になっていることを確認します。
データファイルをOracle ASMディスク・グループ間で移動するには、次の手順を実行します。
RMANを起動し、ターゲット・データベースに接続します。
次に例を示します。
$ rman
RMAN> CONNECT TARGET SYS@orcl
target database Password: XXXXXXXXX
connected to target database: ORCL (DBID=1217369048)
データファイルの名前を示すレポートを生成します。
RMANをターゲット・データベースに接続した後、次のREPORT
コマンドを実行します。移動するファイルのデータファイル名を書き留めます。
次に例を示します。
RMAN> REPORT SCHEMA; Report of database schema for database with db_unique_name ORCL List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------- ------- ------------------------ 1 740 SYSTEM *** +DATA/orcl/datafile/system.258.689589737 2 570 SYSAUX *** +DATA/orcl/datafile/sysaux.259.689589785 3 55 UNDOTBS1 *** +DATA/orcl/datafile/undotbs1.260.689589831 4 5 USERS *** +DATA/orcl/datafile/users.261.689589837 List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------- ----------- -------------------- 1 20 TEMP 32767 +DATA/orcl/tempfile/temp.262.689589851
データファイルを新しいOracle ASMディスク・グループにバックアップします。
BACKUP
AS
COPY
コマンドを実行して、DATA
上のデータファイルをUSERDATA
にバックアップします。
次に例を示します。
RMAN> BACKUP AS COPY DATAFILE "+DATA/orcl/datafile/users.261.689589837" FORMAT "+USERDATA"; Starting backup at 16-JUN-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=51 device type=DISK channel ORA_DISK_1: starting datafile copy input datafile file number=00004 name=+DATA/orcl/datafile/users.261.689589837 output file name=+USERDATA/orcl/datafile/users.256.689682663 tag=TAG20090616T103101 RECID=13 STAMP=689682663 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 16-JUN-09
データファイル番号およびデータファイル・タイプによってデータファイルを指定することもできます。
次に例を示します。
BACKUP AS COPY DATAFILE 4 FORMAT "+USERDATA";
新しいディスク・グループに移動するデータファイルをオフラインにします。
RMANクライアントで次のSQL
コマンドを実行します。データファイルの名前を、二重引用符ではなく、2つの一重引用符で囲むことに注意してください。
次に例を示します。
RMAN> SQL "ALTER DATABASE DATAFILE ''+DATA/orcl/datafile/users.261.689589837'' OFFLINE"; sql statement: ALTER DATABASE DATAFILE ''+DATA/orcl/datafile/users.261.689589837'' OFFLINE
制御ファイルを新規に作成したデータファイルのコピーに指定します。
RMANクライアントでSWITCH...TO COPY
コマンドを実行します。SWITCH
のTO
COPY
オプションにより、データファイルをその最新コピーに切り替えます。
次に例を示します。
RMAN> SWITCH DATAFILE "+DATA/orcl/datafile/users.261.689589837" TO COPY; datafile 4 switched to datafile copy "+USERDATA/orcl/datafile/users.256.689682663"
このコマンドの出力には、データファイルの新しい名前が表示されます。
名前を変更したデータファイルをリカバリします。
RMANクライアントでRECOVER
コマンドを実行します。
次に例を示します。
RMAN> RECOVER DATAFILE "+USERDATA/orcl/datafile/users.256.689682663"; Starting recover at 16-JUN-09 using channel ORA_DISK_1 starting media recovery media recovery complete, elapsed time: 00:00:01 Finished recover at 16-JUN-09
データファイルをオンラインにします。
RMANクライアントで次のSQL
コマンドを実行します。データファイルの名前を、二重引用符ではなく、2つの一重引用符で囲むことに注意してください。
次に例を示します。
RMAN> SQL "ALTER DATABASE DATAFILE ''+USERDATA/orcl/datafile/users.256.689682663'' ONLINE"; sql statement: ALTER DATABASE DATAFILE ''+USERDATA/orcl/datafile/users.256.689682663'' ONLINE
元のOracle ASMディスク・グループからデータファイル・コピーを削除します。
ここでは、+DATA/orcl/datafile/users.261.689589837
がDATA
にある元のデータファイルです。このデータファイルに対してSET NEWNAME
コマンドとSWITCH
コマンドを発行したため、元のファイルがRMANリポジトリにデータファイル・コピーとして記録されています。RMANクライアントでDELETE
コマンドを実行し、このファイルを削除します。
次に例を示します。
RMAN> DELETE DATAFILECOPY "+DATA/orcl/datafile/users.261.689589837"; released channel: ORA_DISK_1 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=51 device type=DISK List of Datafile Copies ======================= Key File S Completion Time Ckp SCN Ckp Time ------- ---- - --------------- ---------- --------------- 14 4 A 16-JUN-09 864471 16-JUN-09 Name: +DATA/orcl/datafile/users.261.689589837 Tag: TAG20090615T084217 Do you really want to delete the above objects (enter YES or NO)? y deleted datafile copy datafile copy file name=+DATA/orcl/datafile/users.261.689589837 RECID=14 STAMP=689683255 Deleted 1 objects