B Oracle Data Guard構成におけるデータベースのパッチ適用、アップグレードおよびダウングレード

次の各項では、Oracle Data Guard構成にフィジカル・スタンバイ・データベースまたはロジカル・スタンバイ・データベースが存在する場合に、Oracleデータベースをアップグレードおよびダウングレードする方法について説明します。

B.1 Oracle Databaseソフトウェアをパッチ適用またはアップグレードする前の注意事項

Oracle Databaseソフトウェアへのパッチ適用またはアップグレードを開始する前に、いくつかの考慮事項があります。

  • Oracle Data Guardブローカを使用して構成を管理している場合は、ブローカ構成の削除や無効化の詳細は、『Oracle Data Guard Broker』マニュアルの指示を参照してください。

  • これらの項で説明する手順は、『Oracle Databaseアップグレード・ガイド』に記載されている手順とともに使用します。

  • NOLOGGING操作をチェックします。NOLOGGING操作が実行されていた場合は、スタンバイ・データベースを更新する必要があります。詳細は、「NOLOGGING句を指定した後のリカバリ」を参照してください。

  • OFFLINE IMMEDIATEが原因でリカバリを必要とする表領域またはデータファイルを書き留めておきます。アップグレード前に表領域またはデータファイルをリカバリし、オンラインまたはオフラインにする必要があります。

  • Oracle Data Guard構成では、すべてのフィジカルおよびスナップショット・スタンバイ・データベースはプライマリ・データベースからのパスワード・ファイルのコピーを使用する必要があります。Oracle Database 12cリリース2 (12.2.0.1)以降、プライマリ・データベースで行われたパスワード・ファイルの変更は、スタンバイ・データベースに自動的に伝搬されます。(管理権限(SYSDGSYSOPERSYSDBAなど)が付与または解除されたとき、または管理権限を持つユーザーのパスワードが変更されたときの、パスワード・ファイルの変更が含まれます。)

    遠隔同期インスタンスは、自動更新機能の例外です。遠隔同期インスタンスはREDOを受け取りますが、適用しないため、更新したパスワード・ファイルを引き続き手動で遠隔同期インスタンスにコピーする必要があります。遠隔同期インスタンスでパスワード・ファイルが手動で更新されると、プライマリ・データベースからの同じパスワード変更内容を含むREDOが、遠隔同期インスタンスからREDOを受け取るように設定されているすべてのスタンバイ・データベースに自動的に伝播されます。REDOが適用されると、スタンバイでパスワード・ファイルが更新されます。

注意:

カスケード・スタンバイが構成にある場合、これらのカスケード・スタンバイは他のスタンバイと同じルールに従う必要がありますが、最後に停止し、最初に新しいホームで再起動します。

B.2 Standby-First Patchの適用を使用したOracle Databaseへのパッチ適用

Data Guard Standby-First Patchの適用を使用すると、プライマリ・データベースとそのフィジカル・スタンバイ・データベース間で異なるデータベース・ホーム・ソフトウェアがサポートされます。

このサポートは、プライマリ・データベースへのリスクを最小限に抑えるローリング方式で、Oracleのパッチおよびパッチ・バンドルを適用および検証する目的で提供されています。たとえば、Data Guard Standby-First Patchの適用を使用して、最初にデータベース・ホーム・パッチをフィジカル・スタンバイ・データベースに適用します。パッチをテストして評価するために、そのスタンバイを使用して読取り専用ワークロードまたは、スナップショット・スタンバイの場合は読取り/書込みワークロードを実行します。評価を通ると、データベース・ホーム・パッチの有効性と安定性の保証が強くなるので、パッチをプライマリ・システムにインストールします。

Oracle Data Guard Standby-First Patchの適用は、Oracle Engineered Systems (Exadata、SuperClusterなど)とEngineered Systems以外の両方で、Oracle Database 11.2.0.1以降の認定された個別パッチおよびパッチ・バンドル(Exadataに対するパッチ・セット更新やデータベース・パッチなど)に対してのみサポートされます。Data Guard Standby-Firstによって認定されたパッチおよびパッチ・バンドルは、パッチのREADMEで次のように提示しています。

Data Guard Standby-Firstでインストール可能

次のタイプのパッチは、Data Guard Standby-Firstによって認定される候補です。

  • データベース・ホームの個別パッチ

  • Exadataのバンドル・パッチ(Exadataの月および半期ごとのデータベース・パッチ)

  • データベースのパッチ・セット更新

異なるデータベース・ホーム・ソフトウェアを実行しているプライマリ・システムとフィジカル・スタンバイ・システム間の相互運用性を破壊する可能性があるモジュールを更新するパッチおよびパッチ・バンドルは、"Data Guard Standby-Firstでインストール可能"と認定されず、パッチのREADMEにそのように提示していません。

Oracleパッチ・セットおよびメジャー・リリース・アップグレードは、Data Guard Standby-First Patchの適用の対象にはなりません。たとえば、11.2.0.2から11.2.0.3へのアップグレードや11.2から12.1へのアップグレードは対象外です。データベース・パッチ・セットおよびメジャー・リリースには、Data Guard一時ロジカル・スタンバイ・ローリング・アップグレード・プロセスを使用します。

さらにOracle Database 11gリリース2 (11.2.0.1)現在、フィジカル・スタンバイ・データベースを使用して、適格な個別パッチ、パッチ・セット更新(PSU)およびクリティカル・パッチ・アップデート(CPU)をローリングという方法でインストールできます。この機能の詳細は、http://support.oracle.comのMy Oracle Supportノート1265700.1を参照してください。

B.3 フィジカル・スタンバイ・データベースが存在する場合のOracle Databaseのアップグレード

これらの手順では、構成にフィジカル・スタンバイ・データベースが存在する場合に、Oracle Database 12c リリース2 (12.2)にアップグレードする方法について説明します。

  1. Oracle Databaseアップグレード・ガイド』のアップグレードの準備に関する項に記載されている手順を確認して実行します。
  2. 『Oracle Databaseアップグレード・ガイド』に従って、Oracleソフトウェアの新しいリリースを、フィジカル・スタンバイ・データベースとプライマリ・データベース・システムの新しいOracleホームにインストールします。
  3. プライマリ・データベースを停止します。
  4. フィジカル・スタンバイ・データベースを停止します。
  5. アップグレード対象のOracleホームで実行しているすべてのリスナー、エージェントおよびその他のプロセスを停止します。この手順は、Oracle Real Application Cluster(Oracle RAC)環境のすべてのノードで実行します。
  6. Oracle Automatic Storage Management(Oracle ASM)が使用中の場合は、Oracle ASMを使用するすべてのデータベースを停止してから、すべてのOracle ASMインスタンスを停止します。
  7. 新しいOracleホームで、手順5で停止したすべてのリスナー、エージェントおよびその他のプロセスを再起動します。
  8. フィジカル・スタンバイ・データベースを、新しいOracleホーム(アップグレード済バージョン)にマウントします。フィジカル・スタンバイ・データベースを起動する方法については、「フィジカル・スタンバイ・データベースの起動」を参照してください。

    注意:

    プライマリ・データベースのアップグレードが完了するまで、スタンバイ・データベースをオープンしないでください。

  9. フィジカル・スタンバイ・データベースでREDO Applyを開始します。Redo Applyを開始する方法については、「フィジカル・スタンバイ・データベースの起動」を参照してください。
  10. 『Oracle Databaseアップグレード・ガイド』に従ってプライマリ・データベースをアップグレードします。フィジカル・スタンバイ・データベースは、プライマリ・データベースでアップグレード時に生成されたREDOを適用するとアップグレードされます。
  11. アップグレード後のプライマリ・データベースをオープンします。
  12. アップグレードの前にOracle Active Data Guardが使用されている場合、これをアップグレード後に再び有効にする方法は「リアルタイム問合せ」を参照してください。
  13. オプションで、「アップグレード後のCOMPATIBLE初期化パラメータの変更」で説明されている手順に従い、COMPATIBLE初期化パラメータを変更します。

    注意:

    Windowsプラットフォームでは、ORADIMユーティリティを使用して(旧データベース・バージョンの)データベース・サービスを削除し、新規データベース・バージョンの新規データベース・サービスを作成する必要があります。プライマリ・サーバーとスタンバイ・サーバーの両方で、OracleService<SID>を置換する必要があります。

B.4 ロジカル・スタンバイ・データベースが存在する場合のOracle Databaseのアップグレード

この手順では、ロジカル・スタンバイ・データベースが存在する場合にOracle Databaseソフトウェアをアップグレードする従来の方法について説明します。

注意:

「SQL Applyを使用したOracle Databaseのアップグレード」では、ロジカル・スタンバイ・データベースが存在する場合にローリング・アップグレードを行って停止時間を最短に抑える別の方法を説明します。完全なアップグレードを実行するには、どちらか一方の方法の手順のみを使用してください。アップグレードの実行に両方の方法を使用したり、2つの方法の手順を組み合せようとしないでください。

構成にロジカル・スタンバイ・データベースが存在する場合に、Oracle Database 12c リリース2 (12.2)にアップグレードする手順は、次のとおりです。次の手順では、プライマリ・データベースがMAXIMUM PERFORMANCEデータ保護モードで稼働していると仮定しています。

Oracle Databaseアップグレード・ガイドのアップグレードの準備に関する項に記載されている手順を確認して実行します
  1. 必要に応じて、プライマリ・データベースでデータ保護モードをMAXIMUM PERFORMANCEに設定します。
    SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
    
  2. プライマリ・データベースで、すべてのユーザー・アクティビティを停止し、ロジカル・スタンバイ・データベースに関連付けられているリモート・アーカイブ先を遅延させます(この手順では、LOG_ARCHIVE_DEST_2がロジカル・スタンバイ・データベースに関連付けられていると仮定しています)。
    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER SCOPE=BOTH;
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
    
  3. ロジカル・スタンバイ・データベースでSQL Applyを停止します。
    SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
    
  4. プライマリ・データベースに、Oracleソフトウェアの新しいリリースをインストールします。
  5. ロジカル・スタンバイ・データベースに、Oracleソフトウェアの新しいリリースをインストールします。

    注意:

    手順4および手順5は、アップグレード手順中の停止時間を短縮するために、同時に実行できます(つまり、プライマリ・データベースとスタンバイ・データベースは同時にアップグレードできます)。

  6. アップグレード後のロジカル・スタンバイ・データベースでSQL Applyを開始します。Oracle RACを使用している場合は、他のスタンバイ・データベース・インスタンスを起動します。
    SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
    
  7. アップグレード後のプライマリ・データベースをオープンし、ユーザーが接続できるようにします。Oracle RACを使用している場合は、他のプライマリ・データベース・インスタンスを起動します。

    また、次のようにして、アップグレード後のロジカル・スタンバイ・データベースへのアーカイブを有効にします。

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
    
  8. 必要に応じて、手順1で元のデータ保護モードを変更した場合は、そのモードをリセットします。
  9. 必要に応じて、COMPATIBLE初期化パラメータを変更します。

B.5 アップグレード後のCOMPATIBLE初期化パラメータの変更

Oracle Databaseの新リリースにアップグレードする際、一部の新機能のためにデータベースが前のリリースと互換性がなくなる場合があります。

Oracle Databaseでは、COMPATIBLE初期化パラメータにより、データベースの互換性を制御できます。

アップグレードが完了したら、COMPATIBLE初期化パラメータの設定をOracle Databaseの新リリース用に最大レベルに増やすことができます。データベースを元のリリースにダウングレードする機能がもう必要ないことが確実な場合は、COMPATIBLE初期化パラメータを新しいデータベースで必要な互換性レベルに基づいて設定します。

Oracle Data Guard構成で、アップグレード後にCOMPATIBLE初期化パラメータの設定を増やすように決定した場合、次の手順を示した順序どおりに実行することが重要です(スタンバイ・データベースのCOMPATIBLE設定が、プライマリと同じか、あるいはそれ以上であることを確認します)。

  1. まず、構成内のすべてのスタンバイ・データベースのCOMPATIBLE初期化パラメータの値を、次のように増やします。

    1. 適用がスタンバイ・データベースで最新であることを確認します。

    2. 各スタンバイ・データベースの1つのインスタンスで、次のSQL文を実行します。

      ALTER SYSTEM SET COMPATIBLE=<value> SCOPE=SPFILE;
      
    3. REDO ApplyまたはSQL Applyが実行中の場合は、停止します。

    4. スタンバイ・データベースのすべてのインスタンスを再起動します。

    5. 前にREDO ApplyまたはSQL Applyを停止した場合は、再起動します。

  2. プライマリ・データベースでCOMPATIBLE初期化パラメータの値を、+次のように増やします。

    1. プライマリ・データベースの1つのインスタンスで、次のSQL文を実行します。

      ALTER SYSTEM SET COMPATIBLE=<value> SCOPE=SPFILE;
      
    2. プライマリ・データベースのすべてのインスタンスを再起動します。

関連項目:

B.6 ロジカル・スタンバイが存在しない場合のOracle Databaseのダウングレード

ロジカル・スタンバイ・データベースが含まれていないOracle Data Guard構成でOracle Databaseをダウングレードするには、次の手順を実行します。

  1. すべてのフィジカル・スタンバイ・データベースがマウント済で、オープンされていないことを確認します。スタンバイ・データベースは、プライマリ・データベースのダウングレードによって生成されたすべてのREDOが適用されるまでオープンしないでください。
  2. フィジカル・スタンバイ・データベースでREDO Applyをリアルタイム適用モードで開始します。
  3. Oracle Databaseアップグレード・ガイド』で説明されている手順を使用し、次のことを念頭に置いて、プライマリ・データベースをダウングレードします。
    • ダウングレード手順においてスクリプトを実行する各手順では、プライマリ・データベースでのみスクリプトを実行します。プライマリ・データベースでのスクリプトの実行により生成されたすべてのREDOが、各フィジカル・スタンバイ・データベースに適用されるまで、次のダウングレード手順を実行しないでください。

    • ダウングレード手順においてスクリプトの実行以外のアクションが実行される各手順では、まずその手順をプライマリ・データベースで実行してから、各フィジカル・スタンバイ・データベースで実行します。そのアクションが各フィジカル・スタンバイ・データベースで実行されるまで、プライマリ・データベースで次のダウングレード手順を実行しないでください。

  4. ダウングレード中にフェイルオーバーの実行が必要になった場合、フェイルオーバーを実行してから、新しいプライマリ・データベースでダウングレード手順を続行します。

B.7 ロジカル・スタンバイが存在する場合のOracle Databaseのダウングレード

ロジカル・スタンバイが存在するか、ロジカルとフィジカルのスタンバイ・データベースが混在するOracle Data Guard構成でOracle Databaseをダウングレードするには、この手順を実行します。

  1. プライマリ・データベース(ここではデータベースP)で、ダウングレードする前に、次のコマンドを発行します。
    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO LOGICAL STANDBY;
    

    データベースPは、プライマリ・データベース・ロールではなくなります。

  2. 構成内のすべてのスタンバイ・データベースで、使用可能なすべてのREDOの適用が終了するまで待ちます。各スタンバイ・データベースで使用可能なすべてのREDOの適用が終了したかどうかを確認するために、各スタンバイ・データベースで次の問合せを実行します。
    SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
     
    SWITCHOVER_STATUS
    -----------------
    TO PRIMARY
    

    問合せにより構成内のすべてのスタンバイ・データベースについてTO PRIMARYの値が戻されるまで、手順3に進まないでください。

  3. Oracle Databaseアップグレード・ガイド』で説明されている手順を使用し、次のことを念頭に置いて、ロジカル・スタンバイ・データベースをダウングレードします。
    • ダウングレード手順においてスクリプトを実行する各手順では、ロジカル・スタンバイ・データベースでのみスクリプトを実行します。直前までプライマリ・ロール(データベースP)であったロジカル・スタンバイ・データベースでスクリプトを実行することにより生成されたすべてのREDOが、各フィジカル・スタンバイ・データベースに適用されるまで、次のダウングレード手順を実行しないでください。

    • ダウングレード手順においてスクリプトの実行以外のアクションが実行される各手順では、まずその手順を直前までプライマリ・ロール(データベースP)であったロジカル・スタンバイ・データベースで実行してから、各フィジカル・スタンバイ・データベースで実行します。そのアクションが各フィジカル・スタンバイ・データベースで実行されるまで、直前までプライマリ・ロール(データベースP)であったロジカル・スタンバイ・データベースで次のダウングレード手順を実行しないでください。

  4. 直前までプライマリ・ロール(データベースP)であったロジカル・スタンバイが正常にダウングレードされたら、それをオープンし、次のコマンドを発行します。
    SQL> ALTER DATABASE ACTIVATE LOGICAL STANDBY DATABASE;
    

    これでデータベースPは、プライマリ・ロールに戻りました。

  5. 構成内の各ロジカル・スタンバイ・データベースで、次のコマンドを発行します(このコマンドでは、プライマリに戻るデータベース・リンクがすべてのロジカル・スタンバイ・データベースに存在することが必要です)。

    SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE NEW PRIMARY
    prim_db_link;