ヘッダーをスキップ
Oracle® Automatic Storage Management管理者ガイド
11gリリース2 (11.2)
B61035-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 RMANによるOracle ASMのデータ移行の実行

この章では、Recovery Manager(RMAN)を使用したOracle自動ストレージ管理(Oracle ASM)ストレージへのデータの移行方法およびOracle ASMストレージからのデータの移行方法について説明します。

この章の内容は次のとおりです。


関連項目:

RMANの使用の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

Oracle ASMのデータ移行の概要

この項では、データのOracle ASMへの移行および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ディスク・グループ間でのコピーができます。この方法は、ユーザー管理のディスクにバックアップを格納する必要がある場合に便利です。

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へのデータ移行の基本手順

この項では、RMANを使用してデータベース全体および高速リカバリ領域を代替ストレージからOracle ASMに移行するプロセスについて説明します。

高速リカバリ領域は、リカバリ関連のファイル(制御ファイルおよびオンラインREDOログのコピー、アーカイブREDOログ・ファイル、フラッシュバック・ログおよびRMANバックアップ)の格納に使用できる任意のディスクの場所です。Oracle DatabaseおよびRMANにより、高速リカバリ領域内のファイルは自動的に管理されます。高速リカバリ領域のユーザー指定の最大サイズである、ディスク割当てを指定できます。ディスク割当てに到達すると、Oracleにより不要になったファイルが自動的に削除されます。

フラッシュバック・ログは、フラッシュバック・データベース操作の実行に使用されるOracle生成ログです。データベースは、高速リカバリ領域にしかフラッシュバック・ログを書き込めません。フラッシュバック・ログは連続して書き込まれ、アーカイブされません。ディスクにはバックアップできません。

データベース全体および高速リカバリ領域を代替ストレージからOracle ASMに移行するには、次の手順を実行します。

  1. データベースおよびサーバー・パラメータ・ファイルをバックアップし、Oracle Flashback Databaseを無効にします。

    Oracle Flashback Databaseオプションは、RMANまたはSQLでのFLASHBACK DATABASEコマンドによってデータベース全体を前の一貫性のあるシステム変更番号(SCN)に戻します。データベース・フラッシュバックは、従来のメディア・リカバリとは異なります。これは、物理ファイルのリストアを必要とせず、かわりに変更されたデータ・ブロックの保存イメージを使用して現在のデータファイルを過去の状態にリストアするためです。この機能では、フラッシュバック・ログとアーカイブREDOログを使用します。

    この手順の詳細は、「RMANを使用してOracle ASMにデータベースを移行するための準備」を参照してください。

  2. ファイルをOracle ASMにリストアしてデータベースをリカバリし、必要に応じて高速リカバリ領域をOracle ASMに移行します。

    この手順の詳細は、「RMANを使用したOracle ASMへのデータベースの移行」を参照してください。

Oracle ASMから代替ストレージにファイルを移行するには、「Oracle ASMから代替ストレージへのデータベースの移行」を参照してください。

RMANを使用してOracle ASMにデータベースを移行するための準備

この項では、データベースを移行するための準備の方法について説明します。この項では、次のことを前提とします。

Oracle ASMへの移行のためにデータベースの準備をする手順:

  1. データベースのCOMPATIBLE初期化パラメータ設定が11.0.0未満の場合、読取り専用のトランスポータブル表領域を読取り/書込み用にします。

    読取り専用トランスポータブル表領域は、RMANでバックアップできないために移行できません。

  2. データベースは物理スタンバイ・データベースで、管理リカバリが開始されている場合、管理リカバリを停止します。

    物理スタンバイ・データベースは、障害保護用に使用できる本番データベースのコピーです。

    たとえば、SQL*PlusをSYSDBA権限でデータベースに接続し、次の文を実行して管理リカバリを停止します。

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    

    このターミナル・ウィンドウを開いたままにします。

  3. サーバー・パラメータ・ファイルまたは初期化パラメータ・ファイルを一時的な保存場所にコピーします。

    次の例では、オペレーティング・システム・ユーティリティを使用して、サーバー・パラメータ・ファイルをコピーします。

    $ cp spfileMYDB.ora orig_spfileMYDB.ora
    
  4. 新しいターミナル・ウィンドウで、RMANセッションを開始し、TARGETとして移行するデータベースに接続します。必要に応じて、リカバリ・カタログに接続します。

  5. データファイルを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';
    }
    
  6. ブロック変更トラッキングがデータベースに対して有効である場合、任意でレベル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;
    }
    
  7. データベースがARCHIVELOGモードで、データベースがオープンの場合、オンライン・ログをアーカイブします。

    次の例では、SQLコマンドを使用して、現行REDOログをアーカイブします。

    RMAN> SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";
    
  8. データベース・インスタンスで現在サーバー・パラメータ・ファイルを使用している場合、それをバックアップします。

    次の例では、サーバー・パラメータ・ファイルをバックアップします。

    RMAN> BACKUP AS BACKUPSET SPFILE;
    
  9. ブロック変更トラッキングが有効になっている場合は、無効にします。

    次のコマンドにより、ブロック変更トラッキングが無効になります。

    RMAN> SQL "ALTER DATABASE DISABLE BLOCK CHANGE TRACKING";
    
  10. フラッシュバック・データベースが有効な場合、無効にして、保証付きリストア・ポイントを削除します。


    注意:

    高速リカバリ領域を移行しない場合は、この手順を省略してください。

    フラッシュバック・ログをOracle ASMに移行できないため、Oracle Flashback Databaseを無効にする必要があります。次のコマンドでフラッシュバック・データベースを無効にします。

    RMAN> SQL "ALTER DATABASE FLASHBACK OFF";
    

    次のコマンドにより、Q106という保証付きリストア・ポイントが削除されます。

    RMAN> SQL "DROP RESTORE POINT Q106";
    
  11. データベースを一貫して停止します。

    次のコマンドにより、データベースを停止します。

    RMAN> SHUTDOWN IMMEDIATE;
    

RMANを使用したOracle ASMへのデータベースの移行

次の手順は、データベースの停止時間を最小限にするためのものです。移行の対象がプライマリ・データベースかスタンバイ・データベースによって、手順がわずかに異なります。この手順では、「RMANを使用してOracle ASMにデータベースを移行するための準備」で説明したのと同じことを前提とします。リカバリ領域をOracle ASMに移行しない場合は、示されている手順の一部を変更する必要があります。


注意:

次の手順は、SQL*PlusとRMANの間で切り替わるため、それぞれのユーティリティに1つのターミナル・ウィンドウを開いたままにします。

Oracle ASMにデータベースを移行する手順:

  1. 「RMANを使用してOracle ASMにデータベースを移行するための準備」の手順に従います。

  2. 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';
      

      後で、spfilesid.orainitsid.ora?/dbsディレクトリから削除し、次の行で新しいinitsid.oraを作成します。

      SPFILE='+DATA/spfilesid.ora'
      
  3. 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='*';
    
  4. 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='*';
    
  5. 制御ファイルをOracle ASMに移行し、制御ファイルをマウントします。

    制御ファイルをリストアするためにRMANターミナルに切り替えます。次の例で、original_cf_nameは、移行前の初期化パラメータ・ファイル内の制御ファイル名です。

    RMAN> STARTUP FORCE NOMOUNT;
    RMAN> RESTORE CONTROLFILE FROM 'original_cf_name';
    RMAN> ALTER DATABASE MOUNT;
    
  6. データファイルを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;
    }
    
  7. データベースでブロック変更トラッキングまたはフラッシュ・データベースを使用する場合、これらの機能を有効にします。


    注意:

    リカバリ領域を移行しない場合、フラッシュバック・データベースは無効にしていないので、有効にはしません。

    たとえば、SQL*Plusで次の文を入力します。

    SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+DATA';
    SQL> ALTER DATABASE FLASHBACK ON;
    
  8. データベースを標準操作モードにします。

    標準操作モードは、データベースがプライマリ・データベースかスタンバイ・データベースかによって決まります。

    • データベースがプライマリ・データベースである場合は、次のようにオープンします。

      SQL> ALTER DATABASE OPEN;
      
    • データベースがスタンバイ・データベースの場合は、次のように管理リカバリ・モードを再開します。

      SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
      
  9. 一時ファイルを削除し、Oracle ASMに再作成します。

    SQL*Plusを使用して、一時ファイルを再作成します。次の例では、元の記憶域にある一時ファイルの名前はtempfile_nameです。一時表領域の名前はtemp_tbs_nameです。

    SQL> ALTER DATABASE TEMPFILE 'tempfile_name' DROP;
    SQL> ALTER TABLESPACE temp_tbs_name ADD TEMPFILE;
    
  10. オンライン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;
    /
    
  11. 必要に応じて、古い高速リカバリ領域のバックアップおよびコピーを、次のようにOracle ASMに移行します。

    1. リカバリ領域に外部アーカイブ・ログが存在する場合、それらをOracle ASMに移行できません。RMANプロンプトで次のコマンドを実行します。

      RMAN> DELETE REMOTE ARCHIVELOG ALL;
      
    2. アーカイブ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から代替ストレージ・システムへのデータベースの移行は、基本的にOracle ASMへの移行の逆です。「RMANを使用してOracle ASMにデータベースを移行するための準備」および「RMANを使用したOracle ASMへのデータベースの移行」の手順を次のように変更します。

RMANを使用したOracle ASMディスク・グループ間でのデータファイルの移動

ARCHIVELOGモード・データベースのアクティブ・データファイルをOracle ASMディスク・グループ間で移動できます。この場合、BACKUP AS COPYを使用してデータファイルを新規ディスク・グループにコピーし、SET NEWNAMEコマンドとSWITCHコマンドを使用して制御ファイルでデータファイルの名前を変更します。

ここでは、ディスク・グループDATAUSERDATAを使用することを前提とします。データファイル+DATA/orcl/datafile/users.261.689589837をディスク・グループUSERDATAに移動します。

データファイルの移動手順を始める前に、データベースに対してARCHIVELOGモードが有効になっていることを確認します。

データファイルをOracle ASMディスク・グループ間で移動するには、次の手順を実行します。

  1. RMANを起動し、ターゲット・データベースに接続します。

    次に例を示します。

    $ rman
    RMAN> CONNECT TARGET SYS@orcl
    target database Password: XXXXXXXXX
    connected to target database: ORCL (DBID=1217369048)
    
  2. データファイルの名前を示すレポートを生成します。

    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
    
  3. データファイルを新しい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";
    
  4. 新しいディスク・グループに移動するデータファイルをオフラインにします。

    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
    
  5. 制御ファイルを新規に作成したデータファイルのコピーに指定します。

    RMANクライアントでSWITCH...TO COPYコマンドを実行します。SWITCHTO COPYオプションにより、データファイルをその最新コピーに切り替えます。

    次に例を示します。

    RMAN> SWITCH DATAFILE "+DATA/orcl/datafile/users.261.689589837" TO COPY;
    
    datafile 4 switched to datafile copy
        "+USERDATA/orcl/datafile/users.256.689682663"
    

    このコマンドの出力には、データファイルの新しい名前が表示されます。

  6. 名前を変更したデータファイルをリカバリします。

    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
    
  7. データファイルをオンラインにします。

    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
    
  8. 元のOracle ASMディスク・グループからデータファイル・コピーを削除します。

    ここでは、+DATA/orcl/datafile/users.261.689589837DATAにある元のデータファイルです。このデータファイルに対して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