プライマリ・コンテンツに移動
Oracle® Automatic Storage Management管理者ガイド
12cリリース1 (12.1)
B71290-10
目次へ移動
目次
索引へ移動
索引

前
次

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です)。

      SQL> CREATE SPFILE='+DATA/spfilesid.ora' FROM PFILE='?/dbs/initsid.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初期化パラメータが設定されていると想定しています。

  11. 必要に応じて、古い高速リカバリ領域のバックアップおよびコピーを、次のようにOracle ASMに移行します。

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

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

例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;
/