ヘッダーをスキップ

Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド
11g リリース1(11.1)

E05700-03
目次
目次
索引
索引

戻る 次へ

26 ASMでのデータの移行の実行

この章では、Recovery Managerを使用して、自動ストレージ管理ストレージへのデータの移行およびASMストレージからのデータの移行を行う方法について説明します。この章の内容は、次のとおりです。

ASMでのデータの移行の概要

この項では、ASMにデータを移行する場合およびASMからデータを移行する場合の基本的な概念およびタスクについて説明します。

ASMでのデータの移行の目的

ASMストレージの代替には、ファイル・システム、RAWディスクおよびSAN構成があります。ASMには、これらの代替ストレージを上回る多くのメリット(パフォーマンスの最適化、冗長性保護、ロード・バランシングなど)があります。ASMによってディスクが管理されるため、サード・パーティの論理ボリューム・マネージャを入手する必要はありません。ASMには既製の共有ストレージが用意されているため、Oracle Real Application Clusters(Oracle RAC)データベースでASMを使用すると有効です。

データベースで現在ASM以外のストレージ・システムが使用されている場合は、データベースのすべてまたは一部をASMに移行すると、データベースの管理が簡単になります。また、フラッシュ・リカバリ領域もASMに移行できます。

Linuxのcp、WindowsのCOPYなどのオペレーティング・システム固有のコマンドでは、ASMストレージ内のファイルに対して書込みまたは読取りを行うことはできません。Recovery ManagerではASMファイルに対して読取りおよび書込みを行うことができるため、Recovery Managerを使用して、ASMストレージへのデータファイルのコピーおよびASMストレージからのデータファイルのコピーまたはASMディスク・グループ間でのデータファイルのコピーを実行できます。この方法は、バックアップをユーザー管理ディスクに格納する必要がある場合に有効です。

ASMでのデータの移行の基本的な概念

Recovery Managerを主なバックアップ・ツールとして使用していない場合でも、Recovery Managerを使用してASMにデータを移行できます。移行には、Recovery Managerデータベース・バックアップが1つ必要です。

ASMと代替ストレージ・システムの両方にデータベース全体を保持するための十分なディスク領域がある場合は、データベースをASMに直接移動できます。十分なストレージがない場合は、データベースをテープにバックアップし、古いディスク領域を使用するASMディスク・グループを作成して、テープからASMにデータベースをリストアできます。

新しいリカバリ領域の場所を設定した後も、既存のバックアップは古いリカバリ領域に存在したままとなり、リカバリ領域のディスク割当て制限の合計の負担になります。領域が必要になると、バックアップが古いリカバリ領域から削除されます。これらのバックアップは、Recovery Managerで使用できます。古いバックアップは、ディスク領域が必要にならないかぎり、新しいASMリカバリ領域に移動する必要はありません。古いリカバリ領域でファイルによって消費されている領域を解放するには、それらのファイルをテープにバックアップするか、またはASMリカバリ領域に移行します。


注意:

外部のアーカイブREDOログは、LogMinerセッションのロジカル・スタンバイ・データベースによって受信されるログです。外部のアーカイブREDOログは移行できません。 


ASMから代替ストレージ・システムへのデータベースの移行は、代替ストレージ・システムからASMへの移行と類似しています。主な違いは、代替ストレージ・システムのファイルの場所を参照するように各手順を変更する点です。

参照:

Enterprise ManagerでデータベースをASMに移行する方法については、『Oracle Databaseストレージ管理者ガイド』を参照してください。 

ASMへのデータ移行の基本手順

データベース全体およびフラッシュ・リカバリ領域を代替ストレージからASMに移行する基本手順は、次のとおりです。

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

    この手順については、「ASMへのデータベースの移行の準備」を参照してください。

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

    この手順については、「ASMへのデータベースの移行」を参照してください。

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

ASMへのデータベースの移行の準備

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

ASMでの移行のためにデータベースを準備する手順
  1. データベース用のCOMPATIBLE設定が11.0.0よりも小さい場合は、読取り専用のトランスポータブル表領域を読取り/書込みにします。

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

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

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

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    
    

    この端末ウィンドウを開いたままにします。

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

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

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

  5. ASMディスク・グループにデータファイルをバックアップします。

    次の例では、RUNコマンドを使用してレベル0の増分バックアップを作成し、4つのチャネルを割り当ててバックアップの速度を上げます。この数は、必要に応じて増減させます。FORMAT句では+DATAを指定します。これは、データベースの格納に使用されるASMディスク・グループの名前です。

    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の増分バックアップを作成します。

    次の例では、前の手順で作成されたレベル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. フラッシュバック・データベースが有効になっている場合は無効にして、保証付きリストア・ポイントをすべて削除します。


    注意:

    リカバリ領域を移行しない場合は、この手順をスキップします。 


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

    RMAN> SQL "ALTER DATABASE FLASHBACK OFF";
    
    

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

    RMAN> SQL "DROP RESTORE POINT Q106";
    
    
  11. 一貫性のある状態でデータベースを停止します。

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

    RMAN> SHUTDOWN IMMEDIATE;
    

ASMへのデータベースの移行

次の手順の目的は、データベースの停止時間を最小限にすることです。移行するデータベースがプライマリまたはスタンバイかどうかによって、手順がわずかに異なることに注意してください。この手順では、「ASMへのデータベースの移行の準備」と同じことを想定しています。リカバリ領域をASMに移行しない場合は、手順の一部を変更する必要があることに注意してください。


注意:

次の手順では、SQL*PlusとRecovery Managerとを切り替えます。そのため、各ユーティリティの端末ウィンドウは開いたままにしておきます。 


データベースをASMに移行する手順
  1. 「ASMへのデータベースの移行の準備」の手順を実行します。

  2. ASMストレージでサーバー・パラメータ・ファイルをリストアまたは作成します。

    データベースがサーバー・パラメータ・ファイルを使用しているかどうかによって、手順が異なります。

    • データベースがサーバー・パラメータ・ファイルを使用している場合は、次のコマンドを使用して、ASMディスク・グループにリストアします。ここで、sidはインスタンスのSIDです。

      RMAN> STARTUP MOUNT;
      RMAN> RESTORE SPFILE TO '+DATA/spfilesid.ora';
      RMAN> SHUTDOWN IMMEDIATE;
      
      
    • データベースがサーバー・パラメータ・ファイルを使用していない場合は、このファイルをASMで1つ作成します。次のようにSQL*PlusでCREATE SPFILEコマンドを実行します。ここで、sidはデータベースのSIDです(コマンドは2行にわたります)。

      SQL> CREATE SPFILE='+DATA/spfilesid.ora' FROM PFILE='?/dbs/initsid.ora';
      
      

      その後、?/dbsディレクトリからspfilesid.oraおよびinitsid.oraを削除し、次の内容の行を含むinitsid.oraを新しく作成します。

      SPFILE='+DATA/spfilesid.ora'
      
      
  3. Oracle Managed Files初期化パラメータをASMの場所に設定します。


    注意:

    フラッシュ・リカバリ領域を移行しない場合は、DB_RECOVERY_FILE_DESTおよびDB_RECOVERY_FILE_DEST_SIZE初期化パラメータ設定を変更しないでください。ただし、オンラインREDOログを移行する場合は、DB_CREATE_ONLINE_LOG_DEST_nパラメータをASMの場所に設定する必要があります。 


    DB_CREATE_FILE_DESTと、オプションのDB_CREATE_ONLINE_LOG_DEST_n初期化パラメータをASMディスク・グループに設定します。データベースでリカバリ領域を使用する場合は、リカバリ領域の場所を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初期化パラメータを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. 制御ファイルをASMに移行し、制御ファイルをマウントします。

    Recovery Manager端末に切り替えて、制御ファイルをリストアします。次の例では、original_cf_nameは移行前の初期化パラメータ・ファイル内の制御ファイル名です。

    RMAN> STARTUP FORCE NOMOUNT;
    RMAN> RESTORE CONTROLFILE FROM 'original_cf_name';
    RMAN> ALTER DATABASE MOUNT;
    
    
  6. データファイルをASMに移行します。

    Recovery Managerを使用して、「ASMへのデータベースの移行の準備」の手順5で作成したデータベース・コピーに切り替えます。切替えによって、すべてのデータファイルの名前がASMディスク・グループ上のファイルに変更されます。その後、データベースをリカバリします。増分バックアップが行われた場合、Recovery Managerはリカバリ時にこれを適用します。たとえば、Recovery Managerプロンプトで次のコマンドを入力します。

    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. 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ログ・ファイルを移行します。

    これがプライマリ・データベースの場合は、ASMに新しいログ・グループ・メンバーを追加して古いメンバーを削除します。次のPL/SQLスクリプトを使用すると、オンラインREDOログ・グループをASMディスク・グループに移行できます。このPL/SQLスクリプトでは、手順3で指定したOracle Managed Files初期化パラメータが設定されていることを想定しています。

    例26-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. 必要に応じて、次のように古いフラッシュ・リカバリ領域のバックアップおよびコピーをASMに移行します。

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

      RMAN> DELETE REMOTE ARCHIVELOG ALL;
      
      
    2. アーカイブREDOログ・ファイル、バックアップ・セットおよびデータファイルのコピーをASMにバックアップします。たとえば、Recovery Managerプロンプトで次のコマンドを実行します。

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

ASMから代替ストレージへのデータベースの移行

ASMから代替ストレージ・システムへのデータベースの移行は、基本的にASMへの移行の逆です。次のように、「ASMへのデータベースの移行の準備」および「ASMへのデータベースの移行」の手順を変更します。

ASMディスク・グループ間でのデータファイルの移動

ARCHIVELOGモードのデータベースで、アクティブなデータファイルをASMディスク・グループ間で移動する必要がある場合があります。この場合は、BACKUP AS COPYを使用してデータファイルを新しいディスク・グループにコピーし、SET NEWNAMEおよびSWITCHコマンドを使用して制御ファイル内のデータファイルの名前を変更します。

この例では、ASMディスク・グループASMDSK2およびASMDSK1を使用することを想定しています。データファイル+ASMDSK2/rdbms/datafile/tbs_5.256.565313879を、ディスク・グループASMDSK1に移動します。

ASMディスク・グループ間でデータファイルを移動する手順
  1. Recovery Managerを起動し、ターゲット・データベースに接続します。

  2. 次の問合せは、バックアップ・ピース名を示しています。

    たとえば、Recovery Managerをターゲット・データベースに接続した後、次のREPORTコマンドを実行します。移動するファイルのデータファイル番号およびデータファイル名の両方を書き留めます。

    REPORT SCHEMA;
    
    
  3. 新しいASMディスク・グループにデータファイルをバックアップします。

    たとえば、次のBACKUP AS COPYコマンドを発行して、ASMDSK2上のデータファイルをASMDSK1にバックアップします。

    BACKUP AS COPY
      DATAFILE "+ASMDSK2/rdbms/datafile/tbs_5.256.565313879"
      FORMAT   "+ASMDSK1";
    
    

    次の例に示すように、データファイル番号でデータファイルを指定することもできます。

    BACKUP AS COPY
      DATAFILE 23
      FORMAT   "+ASMDSK1";
    
    
  4. 新しいディスク・グループに移動するデータファイルの名前を検索してオフラインにします。

    たとえば、Recovery Managerクライアントで次のSQLコマンドを実行します。データファイルの名前を2つの一重引用符で囲むことに注意してください。

    SQL "ALTER DATABASE DATAFILE 
      ' ' +ASMDSK2/rdbms/datafile/tbs_5.256.565313879 ' ' OFFLINE";
    
    
  5. 制御ファイルが、新しく作成したデータファイルのコピーをポイントするように変更します。

    たとえば、Recovery ManagerクライアントでSWITCH ... TO COPYコマンドを次のように実行します。SWITCHTO COPYオプションは、データファイルをデータファイルの最新コピーに切り替えます。データファイルは、名前または番号で指定できます。

    SWITCH DATAFILE "+ASMDSK2/rdbms/datafile/tbs_5.256.565313879" TO COPY;
    
    

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

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

    たとえば、Recovery ManagerクライアントでRECOVERコマンドを次のように実行します。データファイルは、名前または番号で指定できます。

    RECOVER DATAFILE "+ASMDSK1/rdbms/datafile/tbs_5.256.603733209";
    
    
  7. データファイルをオンラインにします。

    たとえば、Recovery ManagerクライアントでSQLコマンドを次のように実行します。

    SQL "ALTER DATABASE DATAFILE
      ' ' +ASMDSK1/rdbms/datafile/tbs_5.256.603733209 ' ' ONLINE";
    
    
  8. 元のASMディスク・グループからデータファイルのコピーを削除します。

    この例では、+ASMDSK2/rdbms/datafile/tbs_5.256.565313879ASMDSK2内の元のデータファイルです。このデータファイルに対してSET NEWNAMEおよびSWITCHコマンドを発行したため、元のファイルは現在Recovery Managerにデータファイル・コピーとして記録されています。このファイルは、Recovery ManagerクライアントでDELETEコマンドを次のように実行すると削除できます。

    DELETE DATAFILECOPY "+ASMDSK2/rdbms/datafile/tbs_5.256.603733209";
    

戻る 次へ
Oracle
Copyright © 2003, 2008, Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引