プライマリ・コンテンツに移動
Oracle® Data Guard概要および管理
12c リリース1 (12.1)
B71304-07
目次へ移動
目次
索引へ移動
索引

前
次

14 DBMS_ROLLINGを使用したローリング・アップグレードの実行

Oracle Database 12c リリース1 (12.1)時点で新機能である、Oracle Active Data Guardを使用したローリング・アップグレード機能は、ローリング・アップグレードを実行する効率的な手段です。新しいDBMS_ROLLING PL/SQLパッケージを使用すると実装され、Oracle Data Guard構成内のデータベース・ソフトウェアをローリング方式でアップグレードできます。Oracle Active Data Guardを使用したローリング・アップグレード機能には、Oracle Active Data Guardオプションのライセンスが必要です。

この機能を使用すると、Oracle Database 12cに対する最初のパッチセット以降のデータベース・バージョン・アップグレードを実行できます(つまり、この機能を使用して、Oracle Database 12cの最初のパッチセットより前のバージョンからアップグレードすることはできません)。つまり、Oracle Database 11gからOracle Database12cへのアップグレード時またはOracle Database 12cの初期リリースからOracle Database 12cの最初のパッチセットへのアップグレード時には、手動の一時ロジカル・スタンバイ・アップグレード手順を引き続き使用する必要があります。

また、この機能は、Oracle Database 12c リリース1 (12.1)以降、他のデータベース・メンテナンス・タスクにすぐに使用できます。メンテナンスが実行されるデータベースは、Oracle 12.1以上で動作する必要があります。このようなメンテナンス・タスクには、次のものが含まれます。

14.1 ローリング・アップグレードの新しい概念

Oracle Data Guard構成内のデータベース・ソフトウェアをローリング方式でアップグレードするには、最初にフィジカル・スタンバイを将来のプライマリ・データベースとして指定します。

概念的には、ローリング・アップグレード・プロセスはOracle Data Guard構成を2つのグループに分割します。先行グループ(LG)と後続グループ(TG)です。

先行グループのデータベースは先にアップグレードされるので先行グループという名前です。先行グループには、指定した将来のプライマリ・データベースと、それを保護するように構成できるフィジカル・スタンバイが含まれます。将来のプライマリは最初にロジカル・スタンバイ・データベースに変換されてから、新しいデータベース・ソフトウェアがそこにインストールされ、アップグレード・プロセスが実行します。先行グループのその他のスタンバイ・データベースも、この時点でそのソフトウェアをアップグレードする必要があります。

後続グループには、元のプライマリ・データベースと、ローリング・アップグレード・プロセス中に元のプライマリを保護するように構成できるフィジカル・スタンバイが含まれます。先行グループのデータベースのアップグレード・プロセス中は、ユーザー・アプリケーションは引き続き元のプライマリに接続し、変更できます。先行グループのすべてのデータベースがアップグレードされ、アップグレード・ウィンドウ中に元のプライマリ・データベースで生成された変更が適用されることにより、将来のプライマリが元のプライマリに追い付くまで、後続グループのデータベースは古いデータベース・ソフトウェアの実行を継続します。この時点で、スイッチオーバーはプライマリ・ロールの指定した将来のプライマリ・データベースへの転送を完了し、ユーザー・アプリケーションは新しいプライマリ・データベースにスイッチオーバーされています。次に新しいソフトウェアが後続グループの一部であるデータベースにインストールされ、新しいプライマリ・データベースへのスタンバイとして構成内に回復されます。

それぞれのグループのスタンバイは先行グループ・スタンバイ(LGS)および後続グループ・スタンバイ(TGS)と呼ばれます。指定した将来のプライマリ以外の、先行グループのその他のすべてのスタンバイは、フィジカル・スタンバイにのみなることができます。後続グループはフィジカルおよびロジカル・スタンバイの両方を含むことができます。そのスタンバイ・タイプを区別する必要がある場合は、後続グループ・フィジカル(TGP)と後続グループ・ロジカル(TGL)と呼びます。指定した将来のプライマリも、先行グループ・マスター(LGM)と呼ばれ、元のプライマリ・データベースは後続グループ・マスター(TGM)と呼ばれます。

DBMS_ROLLINGパッケージは次のように、ローリング・アップグレード・プロセスの堅牢性を向上させます。

  • ローリング・アップグレード・プロセス中にエラーを処理できます。元のプライマリまたはTGMデータベースの失敗が許されます。後続グループ内のその他のフィジカル・スタンバイには通常のフェイルオーバー操作を開始でき、その後で新しいプライマリ・データベースをTGMとして指定します。

  • ローリング・アップグレード・プロセス中にLGM (指定した将来のプライマリ)のデータ保護が可能です。LGMデータベースへのフィジカル・スタンバイを設定でき、アップグレード・プロセス中にそれを保護でき、アップグレード後にデータ消失ゼロも達成できます。LGMが正常にアップグレードされたら、フィジカル・スタンバイ・データベースへのフェイル・オーバーにより、LGMでの失敗は調整できます。次にファイルオーバー・ターゲット・データベースを指定して、LGMのロールを引き継ぐことができます。

表14-1では、スイッチオーバー操作の前と後の、TGPスタンバイとLGPスタンバイの特徴を比較します。

表14-1 後続グループ・フィジカル(TGP)と先行グループ・フィジカル(LGP)

スタンバイ・タイプ スイッチオーバー前 スイッチオーバー後 備考

後続グループ・フィジカル(TGP)

低い適用ラグ

より低いデータ消失リスク

高い適用ラグ

より高いデータ消失リスク

プライマリ・ロールへのフェイルオーバーが可能

元のプライマリのようにフラッシュバックが必要

先行グループ・フィジカル(LGP)

高い適用ラグ

より高いデータ消失リスク

低い適用ラグ

より低いデータ消失リスク

一時ロジカル・スタンバイ・ロールへのファイルオーバーが可能

元のプライマリのようなフラッシュバックは不要

関連項目:

14.2 DBMS_ROLLINGの使用の概要

DBMS_ROLLING PL/SQLパッケージを使用したローリング・アップグレード・プロセスには3つのステージがあります。

  1. 指定: 最初に、ローリング・アップグレード・プロセスの実装方法を指定します。将来のプライマリ・データベースを指定することは必須です。この動作は概念的には先行および後続グループの作成です。この時点では、先行グループのみにLGMが含まれます。オプションでLGMを保護する別のスタンバイを指定できます。

    指定フェーズでは次のプロシージャを使用します。

    • DBMS_ROLLING.INIT_PLAN

    • DBMS_ROLLING.SET_PARAMETER

  2. コンパイル: これはDBMS_ROLLING.BUILD_PLANプロシージャを呼び出すことで開始されます。BUILD_PLANプロシージャは、ローリング・アップグレードに関与するすべてのデータベースと通信し、ローリング・アップグレード計画を組み立てます。BUILD_PLANプロシージャも、既存のローリング・アップグレード計画を変更するために呼び出されます。変更は、DBMS_ROLLINGパラメータに対する変更の後、およびフェイルオーバーの結果としてのトポロジに対する変更の後に必要です。正常なローリング・アップグレードを確実にするために数多くの検証が必要なため、関与しているすべてのデータベースがBUILD_PLANプロシージャの実行中にアクセス可能である必要があります。

  3. 実行: ローリング・アップグレードの実行には5つのステージがあります。

    ステージ1: DBMS_ROLLING.START_PLANプロシージャはローリング・アップグレードの実行を開始します。これによりLGMデータベースがロジカル・スタンバイに変換され、LGMでSQL Applyプロセスが開始します。

    ステージ2: 先行グループの一部のデータベースでデータベース・ソフトウェアをアップグレードします。LGMでアップグレード・スクリプトも実行します。これの完了後、LGMデータベースでSQL Applyプロセスを再起動する必要があります。(アップグレード・スクリプトの詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。)より高いバージョンのバイナリを使用して再マウントすることにより、このステージ中に先行グループ・フィジカル・スタンバイも対応されます。これらのデータベースはLGMからREDOのリカバリによりアップグレードされます。

    ステージ3: 適用ラグが指定したしきい値(デフォルトでは10分に設定されていますが、指定ステージで変更できます)に達すると、DBMS_ROLLING.SWITCHOVERプロシージャはスイッチオーバー処理を続行します。スイッチオーバーが完了すると、LGMはプライマリ・データベースになります。

    ステージ4: LGMは新しいデータベース・ソフトウェアを実行するプライマリ・データベースとなり、先行グループ内のデータベースはそれを保護します。TGMはマウントされ、後続グループのデータベースはまだ古いバージョンのデータベース・ソフトウェアを実行しています。データベース・ソフトウェアのアップグレードと、より高いバージョンのバイナリへのデータベースの再マウントにより、アップグレード用にTGMおよびTGSデータベースを準備する必要があります。(アップグレード・スクリプトの詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。)

    ステージ5: 現在のプライマリ・データベース(元のLGM)でDBMS_ROLLING.FINISH_PLANプロシージャを実行します。後続グループのすべてのデータベースを、現在のプライマリ・データベースのスタンバイになるように修復し、Applyプロセスを再起動します。FINISH_PLANプロシージャは、後続グループ内のすべてのデータベースが新しいリリースにアップグレードされるのを待機します(後続グループのデータベースのデータベース・ソフトウェアはステージ4で変更されましたが、後続グループのデータベースのデータ・ディクショナリは後続グループのロジカル・スタンバイを除き、LGMデータベースでアップグレード中に生成されたREDOのメディア・リカバリに基づいて更新されます)。

ローリング・アップグレードが正常に実行された後は、DBMS_ROLLING.DESTROY_PLANプロシージャを呼び出すことで、ローリング・アップグレードの指定を削除できます。

14.3 ローリング・アップグレードの計画

ローリング・アップグレードの計画は、正常にアップグレードするために不可欠です。計画フェーズでは、様々なアップグレード・パラメータを指定し、アップグレード計画を作成します。パラメータとアップグレード計画は、環境に一意なすべての操作の詳細に焦点を当てます。アップグレード計画ではサイト特有の検証を実行し、ローリング・アップグレードを中断させる可能性のある構成およびリソースの問題を確認できます。

アップグレード・パラメータの定義およびアップグレード計画の作成に必要なタスクは、次のとおりです。

  • アップグレード・パラメータを初期化します

  • 現在のアップグレード・パラメータの値を表示します

  • 必要に応じてアップグレード・パラメータの値を変更します

  • アップグレード計画を作成します。

  • 現在のアップグレード計画を表示します

  • 必要に応じてアップグレード計画を修正します

これらの各手順の詳細は、この項の残りの部分で説明します。これらは、表示されている順序で実行する必要があります。

  1. 計画パラメータは、カスタマイズされる前に、システム生成のデフォルト値に初期化される必要があります。計画パラメータを初期化するには、DBMS_ROLLING.INIT_PLANプロシージャを呼び出します。このプロシージャは将来のプライマリ・データベースのDB_UNIQUE_NAME(つまり、先行グループのマスターまたはLGM)を識別します。LGMはSTART_PLANプロシージャ・コールの一部としてロジカル・スタンバイ・データベースに変換されます。次に、bostonが将来のプライマリ・データベースとして識別される、INIT_PLANプロシージャを呼び出すサンプルを示します。
    DBMS_ROLLING.INIT_PLAN(future_primary=>'boston');
    

    INIT_PLANプロシージャはシステム生成の計画パラメータの最初のセットを戻します。ここでは、ローリング・アップグレードの参加者としてDG_CONFIGのinit.oraパラメータに指定した各フィジカルおよびロジカル・スタンバイ・データベースを追加します。その他のデータベース(GoldenGateダウンストリーム・デプロイメントをサービスするダウンストリーム・データベースやスナップショット・スタンバイなど)は自動的に除外されます。

    デフォルトでは、将来のプライマリ以外のスタンバイ・データベースはプライマリ・データベースを保護するように構成され、ローリング・アップグレードの必須参加者として構成されます。

    データベース関連のパラメータを定義したら、INIT_PLANプロシージャでシステム提供のデフォルトを使用して操作パラメータを定義します。ほとんどの場合、計画パラメータは計画検証の準備ができていますが、必要性を満たしていることを確認するために、各パラメータを確認する必要があります。

    DESTROY_PLANプロシージャを呼び出してローリング・アップグレードに関連するすべての状態を削除するまで、計画パラメータはデータベース内に保持されます。

  2. INIT_PLANプロシージャが完了したら、DBA_ROLLING_PARAMETERSビューを問い合せて計画パラメータと現在の値を表示できます。計画パラメータはグローバルまたはローカルのいずれかの範囲です。グローバル・パラメータはローリング・アップグレード全体の属性で、データベースの参加者とは独立しています。グローバル・パラメータではSCOPE列にNULL値が含まれます。ローカル・パラメータではSCOPE列に関連する特定のデータベース名が含まれます。問合せの例を次に示します。
    SQL> select scope, name, curval from dba_rolling_parameters order by scope, name;
    
    SCOPE          NAME                        CURVAL
    -------------- ------------------------    ------------------------------
    seattle        INVOLVEMENT                 FULL
    seattle        MEMBER                      NONE
    boston         INVOLVEMENT                 FULL
    boston         MEMBER                      TRAILING
    oakland        INVOLVEMENT                 FULL
    oakland        MEMBER                      TRAILING
    atlanta        INVOLVEMENT                 FULL
    atlanta        MEMBER                      LEADING
                   ACTIVE_SESSIONS_TIMEOUT     3600
                   ACTIVE_SESSIONS_WAIT        0
                   BACKUP_CONTROLFILE          rolling_change_backup.f
                   DICTIONARY_LOAD_TIMEOUT     3600
                   DICTIONARY_LOAD_WAIT        0
                   DICTIONARY_PLS_WAIT_INIT    300
                   DICTIONARY_PLS_WAIT_TIMEOUT 3600
                   EVENT_RECORDS               10000
                   FAILOVER                    0
                   GRP_PREFIX                  DBMSRU_
                   IGNORE_BUILD_WARNINGS       0
                   IGNORE_LAST_ERROR           0
                   LAD_ENABLED_TIMEOUT         600
                   LOG_LEVEL                   INFO
                   READY_LGM_LAG_TIME          600
                   READY_LGM_LAG_TIMEOUT       60
                   READY_LGM_LAG_WAIT          0
                   SWITCH_LGM_LAG_TIME         600
                   SWITCH_LGM_LAG_TIMEOUT      60
                   SWITCH_LGM_LAG_WAIT         1
                   SWITCH_LGS_LAG_TIME         60
                   SWITCH_LGS_LAG_TIMEOUT      60
                   SWITCH_LGS_LAG_WAIT         0
                   UPDATED_LGS_TIMEOUT         10800
                   UPDATED_LGS_WAIT            1
                   UPDATED_TGS_TIMEOUT         10800
                   UPDATED_TGS_WAIT            1
    35 rows selected.
    

    出力例で、データベースatlantabostonoaklandおよびseattleがすべてDG_CONFIGにより検出され、現在の計画のパラメータに割り当てられました。

    関連項目:

    • DBA_ROLLING_PARAMETERSビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

  3. 既存のローリング・アップグレード・パラメータを変更するには、DBMS_ROLLING.SET_PARAMETER PL/SQLプロシージャを使用します。次に、SET_PARAMETERプロシージャの使用例を示します。
    DBMS_ROLLING.SET_PARAMETER(
      scope IN VARCHAR2,
      name IN VARCHAR2,
      value IN VARCHAR2);
    

    SCOPEにはローカル・パラメータ用のDB_UNIQUE_NAME値、またはグローバル・パラメータ用のNULLのいずれかを指定します。データベース特有ではないパラメータにはNULLの範囲を指定する必要はありません。

    NAMEは変更するパラメータの名前です。

    VALUEにはそのパラメータの値を指定します。NULLの値はパラメータをシステム提供のデフォルト(存在する場合)に戻します。

    関連項目:

    • すべての使用可能なローリング・アップグレード・パラメータの完全なリストは、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

    次の例では、いくつかのローリング・アップグレード・パラメータの使用例を示しています。

  4. すべての必要なパラメータが指定されたら、アップグレード計画を作成します。アップグレード計画は、Oracle Data Guard構成をローリング・アップグレードに沿ってガイドする、カスタム生成の手順のセットです。

    アップグレード計画を作成するには、DBA_ROLLING.BUILD_PLAN PL/SQLプロシージャを使用します。このプロシージャには、計画パラメータで説明したとおりの構成と、すべてのインスタンスが開始され、ネットワーク経由でアクセス可能であることが必要です。

    プロシージャは次のように呼び出されます。

    DBMS_ROLLING.BUILD_PLAN;
    

    プロシージャはすべての入力をDBA_ROLLING_PARAMETERSビューから取得するため、指定する引数はありません。プロシージャは計画パラメータを検証し、ログ転送やフラッシュ・リカバリ領域の設定など、サイト特有のリソースの検証を実行します。通常、ベスト・プラクティスの値の条件を満たさない構成設定は警告として扱われ、DBA_ROLLING_EVENTSビューに記録されます。デフォルトで、IGNORE_BUILD_WARNINGSパラメータは1に設定され、警告によりアップグレード計画が使用できる状態に達するのを妨げられないことを意味します。計画の策定時に、より厳しいルールの実施が必要な場合には、このパラメータを0に設定することができます。

    注意:

    計画の生成時に実行される検証はローリング・アップグレードに特有です。これはアップグレードの準備状況を評価するアップグレード前情報ツールを実行する、推奨プラクティスのかわりではありません。

    計画の生成後、次の手順に移動してそれを表示し、問題がないかどうか診断して、必要ならば修正します。

  5. BUILD_PLANプロシージャが正常に戻った後、完全なアップグレード計画がDBA_ROLLING_PLANビューで表示可能です。ビューの各レコードは、実行がスケジュールされた特定の手順を識別します。

    次の出力は、ローリング・アップグレード計画の表示例です。

    SQL> SELECT instid, target, phase, description FROM DBA_ROLLING_PLAN;
    
    INSTID TARGET       PHASE   DESCRIPTION
    ------ ------------ ------- -----------------------------------------------------
         1 seattle      START   Verify database is a primary
         2 seattle      START   Verify MAXIMUM PROTECTION is disabled
         3 boston       START   Verify database is a physical standby
         4 boston       START   Verify physical standby is mounted
         5 oakland      START   Verify database is a physical standby
         6 oakland      START   Verify physical standby is mounted
         7 atlanta      START   Verify database is a physical standby
         8 atlanta      START   Verify physical standby is mounted
         9 seattle      START   Verify server parameter file exists and is modifiable
        10 boston       START   Verify server parameter file exists and is modifiable
        11 oakland      START   Verify server parameter file exists and is modifiable
        12 atlanta      START   Verify server parameter file exists and is modifiable
        13 seattle      START   Verify Data Guard Broker configuration is disabled
        14 boston       START   Verify Data Guard Broker configuration is disabled
        15 oakland      START   Verify Data Guard Broker configuration is disabled
        16 atlanta      START   Verify Data Guard Broker configuration is disabled
        17 seattle      START   Verify flashback database is enabled
        18 seattle      START   Verify available flashback restore points
        19 boston       START   Verify flashback database is enabled
        20 boston       START   Verify available flashback restore points
        21 oakland      START   Verify flashback database is enabled
        22 oakland      START   Verify available flashback restore points
        23 atlanta      START   Verify flashback database is enabled
        24 atlanta      START   Verify available flashback restore points
        25 boston       START   Scan LADs for presence of atlanta destination
        26 boston       START   Test if atlanta is reachable using configured TNS service
        27 boston       START   Stop media recovery
        28 oakland      START   Stop media recovery
        29 atlanta      START   Stop media recovery
        30 boston       START   Drop guaranteed restore point DBMSRU_INITIAL
        31 boston       START   Create guaranteed restore point DBMSRU_INITIAL
        32 oakland      START   Drop guaranteed restore point DBMSRU_INITIAL
        33 oakland      START   Create guaranteed restore point DBMSRU_INITIAL
        34 atlanta      START   Drop guaranteed restore point DBMSRU_INITIAL
        35 atlanta      START   Create guaranteed restore point DBMSRU_INITIAL
        36 seattle      START   Drop guaranteed restore point DBMSRU_INITIAL
        37 seattle      START   Create guaranteed restore point DBMSRU_INITIAL
    
    INSTID TARGET       PHASE   DESCRIPTION
    ------ ------------ ------- ----------------------------------------------------------
        38 boston       START   Start media recovery
        39 boston       START   Verify media recovery is running
        40 oakland      START   Start media recovery
        41 oakland      START   Verify media recovery is running
        42 atlanta      START   Start media recovery
        43 atlanta      START   Verify media recovery is running
        44 seattle      START   Verify user_dump_dest has been specified
        45 seattle      START   Backup control file to rolling_change_backup.f
        46 boston       START   Verify user_dump_dest has been specified
        47 boston       START   Backup control file to rolling_change_backup.f
        48 oakland      START   Verify user_dump_dest has been specified
        49 oakland      START   Backup control file to rolling_change_backup.f
        50 atlanta      START   Verify user_dump_dest has been specified
        51 atlanta      START   Backup control file to rolling_change_backup.f
        52 seattle      START   Get current redo branch of the primary database
        53 boston       START   Wait until recovery is active on the primary's redo branch
        54 boston       START   Stop media recovery
        55 seattle      START   Execute dbms_logstdby.build
        56 boston       START   Convert into a transient logical standby
        57 boston       START   Open database
        58 boston       START   Configure logical standby parameters
        59 boston       START   Start logical standby apply
        60 boston       START   Get redo branch of transient logical standby
        61 boston       START   Get reset scn of transient logical redo branch
        62 atlanta      START   Stop media recovery
        63 atlanta      START   Flashback database
        64 seattle      START   Disable log file archival to atlanta
        65 boston       START   Enable log file archival to atlanta
        66 boston       START   Wait for log archive destination to atlanta to reach a valid state
        67 atlanta      START   Wait until transient logical redo branch has been registered
        68 atlanta      START   Start media recovery
        69 atlanta      START   Wait until v$dataguard_stats has been initialized
        70 atlanta      START   Wait until recovery has started on the transient redo branch
        71 seattle      START   Log pre-switchover instructions to events table
        72 boston       START   Record start of user upgrade of boston
        73 boston       SWITCH  Verify database is in OPENRW mode
        74 boston       SWITCH  Record completion of user upgrade of boston
    
    INSTID TARGET       PHASE   DESCRIPTION
    ------ ------------ ------- ---------------------------------------------------------
        75 boston       SWITCH  Scan LADs for presence of seattle destination
        76 boston       SWITCH  Scan LADs for presence of oakland destination
        77 boston       SWITCH  Scan LADs for presence of atlanta destination
        78 boston       SWITCH  Test if seattle is reachable using configured TNS service
        79 boston       SWITCH  Test if oakland is reachable using configured TNS service
        80 boston       SWITCH  Test if atlanta is reachable using configured TNS service
        81 seattle      SWITCH  Enable log file archival to boston
        82 boston       SWITCH  Enable log file archival to atlanta
        83 boston       SWITCH  Start logical standby apply
        84 atlanta      SWITCH  Start media recovery
        85 atlanta      SWITCH  Wait until upgrade redo has been fully recovered
        86 boston       SWITCH  Wait until apply lag has fallen below 600 seconds
        87 seattle      SWITCH  Log post-switchover instructions to events table
        88 seattle      SWITCH  Switch database to a logical standby
        89 boston       SWITCH  Wait until end-of-redo has been applied
        90 oakland      SWITCH  Wait until end-of-redo has been applied
        91 seattle      SWITCH  Disable log file archival to oakland
        92 boston       SWITCH  Switch database to a primary
        93 oakland      SWITCH  Stop media recovery
        94 seattle      SWITCH  Synchronize plan with new primary
        95 seattle      FINISH  Verify only a single instance is active
        96 seattle      FINISH  Verify database is mounted
        97 seattle      FINISH  Flashback database
        98 seattle      FINISH  Convert into a physical standby
        99 oakland      FINISH  Verify database is mounted
       100 oakland      FINISH  Flashback database
       101 boston       FINISH  Verify database is open
       102 boston       FINISH  Save the DBID of the new primary
       103 boston       FINISH  Save the logminer session start scn
       104 seattle      FINISH  Wait until transient logical redo branch has been registered
       105 oakland      FINISH  Wait until transient logical redo branch has been registered
       106 seattle      FINISH  Start media recovery
       107 oakland      FINISH  Start media recovery
       108 seattle      FINISH  Wait until apply/recovery has started on the transient branch
       109 oakland      FINISH  Wait until apply/recovery has started on the transient branch
       110 seattle      FINISH  Wait until upgrade redo has been fully recovered
    
    INSTID TARGET       PHASE   DESCRIPTION
    ------ ------------ ------- ------------------------------------------------
       111 oakland      FINISH  Wait until upgrade redo has been fully recovered
       112 seattle      FINISH  Drop guaranteed restore point DBMSRU_INITIAL
       113 boston       FINISH  Drop guaranteed restore point DBMSRU_INITIAL
       114 oakland      FINISH  Drop guaranteed restore point DBMSRU_INITIAL
       115 atlanta      FINISH  Drop guaranteed restore point DBMSRU_INITIAL
    
    115 rows selected.
    
    SQL> 
    

    このビューの列には次の情報が表示されます。

    • INSTID - 手順IDで、実行する手順の順序です。手順は通常、グループ内で実行されます。

    • PHASE - アップグレード計画の各手順は特定のフェーズと関連付けられます。フェーズとはDBMS_ROLLING PL/SQLパッケージ内のプロシージャにより実行される手順の論理グループです。DBMS_ROLLINGプロシージャが呼び出されると、そのフェーズのアップグレード計画内の関連するすべての手順が実行されます。可能なフェーズは次のとおりです。

      • START: リストア・ポイントの取得、一時ロジカル・スタンバイ・データベースのインスタンス化、LGSデータベースの構成などの、設定に関連するアクティビティから構成されます。このフェーズのアクティビティはDBMS_ROLLING.START_PLANプロシージャを呼び出すと開始します。ローリング・アップグレードの実行の手順1を参照してください。

      • SWITCH: 一時ロジカル・スタンバイの新しいプライマリ・データベースへのスイッチオーバーに関連するアクティビティから構成されます。このフェーズのアクティビティはDBMS_ROLLING.SWITCHOVERプロシージャを呼び出すと開始します。ローリング・アップグレードの実行の手順3を参照してください。

      • FINISH: アップグレードREDOのリカバリ用のスタンバイ・データベースの構成に関連するアクティビティから構成されます。このフェーズのアクティビティはDBMS_ROLLING.FINISH_PLANプロシージャを呼び出すと開始します。ローリング・アップグレードの実行の手順5を参照してください。

    • EXEC_STATUS - 手順の全体的なステータスです。

    • PROGRESS - 手順の実行の進捗です。REQUESTINGの値は、実行のためにターゲット・データベースに転送されている手順を示します。EXECUTINGの値は、アクティブに実行中の手順を示します。REPLYINGの値は、完了情報が戻されていることを示します。

    • DESCRIPTION - 実行をスケジュールされた特定の操作です。

    • TARGET - 指定の手順が実行されるサイトです。

    • EXEC_INFO - 手順に関連する追加のコンテキスト情報です。

    関連項目:

    • DBA_ROLLING_PLANビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

  6. ローリング・アップグレードまたはデータベース構成に変更があった後は、アップグレード計画は修正される必要があります。構成変更には次のものがあります。
    • 任意のデータベースのローリング・アップグレードへの参加時のinit.oraパラメータ・ファイルの変更

    • フェイルオーバー・イベントの結果としてのデータベース・ロールの変更

    • ローリング・アップグレード・パラメータの変更

    アクティブなアップグレード計画を修正するには、単にBUILD_PLANプロシージャを再度呼び出します。場合によっては、BUILD_PLANプロシージャで、特定の変更が受け入れられない場合に、エラーが発生する可能性があります。たとえば、ACTIVE_SESSIONS_WAITパラメータの設定は、スイッチオーバーがすでに発生していると、何も影響しません。

    パラメータを個別に処理するのではなく、BUILD_PLANプロシージャを呼び出して、パラメータのグループの変更を処理することをお薦めします。

例14-1 適用ラグ要件を強制するスイッチオーバーの設定

次の例で、将来のプライマリにスイッチオーバーする前に、適用ラグが60秒を下回るのを待つように計画を構成する方法を示します。

DBMS_ROLLING.SET_PARAMETER('SWITCH_LGM_LAG_WAIT', '1');
DBMS_ROLLING.SET_PARAMETER('SWITCH_LGM_LAG_TIME', '60');

例14-2 ログのデフォルト値へのリセット

次の例では、LOG_LEVELグローバル・パラメータのデフォルト値へのリセットを示します。

DBMS_ROLLING.SET_PARAMETER (
  name=>'LOG_LEVEL', 
  value=>NULL);

例14-3 データベースのオプション参加者としての指定

次の例では、データベースで発生したエラーがローリング・アップグレード全体を妨げてはいけないことを示す、データベースatlantaINVOLVEMENTローカル・パラメータの設定を示します。

DBMS_ROLLING.SET_PARAMETER (
  scope=>'atlanta', 
  name=>'involvement', 
  value=>'optional');

例14-4 一時ロジカル・スタンバイを保護するデータベースの設定

次の例では、ローリング・アップグレード中にデータベースにより一時ロジカル・スタンバイを保護する必要があることを示す、データベースatlantaMEMBERローカル・パラメータの設定を示します。

DBMS_ROLLING.SET_PARAMETER (
  scope=>'atlanta', 
  name=>'member', 
  value=>'leading');

14.4 ローリング・アップグレードの実行

この項では、DBMS_ROLLING PL/SQLパッケージを使用したローリング・アップグレードの実行に関する手順を説明します。表14-2に、この手順の要約を示します。これらの手順は、ローリング・アップグレードの計画での説明に従い、最初にアップグレード計画を正常に作成したことを前提としています。

表14-2 DBMS_ROLLINGを使用したローリング・アップグレードの実行手順

手順 説明 PHASE

手順1

DBMS_ROLLING.START_PLANプロシージャを呼び出し、将来のプライマリと、将来のプライマリを保護するように指定したフィジカル・スタンバイを構成します。

START

手順2

将来のプライマリ・データベースとそれを保護するスタンバイでOracle Databaseソフトウェアを手動でアップグレードします。

SWITCH PENDING

手順3

DBMS_ROLLING.SWITCHOVERプロシージャを呼び出し、現在と将来のプライマリ・データベース間でロールを切り替えます。

SWITCH

手順4

以前のプライマリと残りのスタンバイ・データベースをより高いバージョンのOracle Databaseで手動で再起動します。

FINISH PENDING

手順5

DBMS_ROLLING.FINISH_PLANプロシージャを呼び出し、以前のプライマリをフィジカル・スタンバイへ変換し、残りのスタンバイ・データベースをアップグレードREDOのリカバリ用に構成します。

FINISH

表14-2のPHASE列に示された、ローリング・アップグレードの特定のフェーズに属する各手順の間に実行するアクティビティ。ローリング・アップグレード操作は任意の時点で1つのフェーズです。ローリング・アップグレードの現在のフェーズは、DBA_ROLLING_STATUSビューのPHASE列にレポートされます。

各アップグレード手順の詳細は、この項の残りの部分で説明します。

  1. DBMS_ROLLING.START_PLANプロシージャを呼び出し、将来のプライマリと、将来のプライマリを保護するように指定したフィジカル・スタンバイを構成します。

    DBMS_ROLLING.START_PLANプロシージャはローリング・アップグレードの正式な開始です。START_PLANプロシージャの目的は、一時ロジカル・スタンバイ・データベースとそれを保護するように指定されたフィジカル・スタンバイ・データベースを構成することです。呼び出されると、START_PLANプロシージャはSTART_PLANPHASE値を含むアップグレード計画内のすべての手順を実行します。実行される手順のタイプには次のものがあります。

    • 各データベースの制御ファイルのトレース・ファイルへのバックアップ

    • フラッシュバック・データベースの保証付きリストア・ポイントの作成

    • プライマリ・データベースでのLogMinerディクショナリの作成

    • 指定したフィジカル・スタンバイの一時ロジカル・スタンバイ・データベースへのリカバリ

    • LogMinerディクショナリのロジカル・スタンバイ・データベースへのロード

    • 一時ロジカル・スタンバイ・データベースを使用したLGSデータベースの構成

    次のようにSTART_PLANプロシージャを呼び出します(引数は必要ありません)。

    SQL> EXECUTE DBMS_ROLLING.START_PLAN;
    
  2. 将来のプライマリ・データベースとそれを保護するスタンバイでOracle Databaseソフトウェアを手動でアップグレードします。

    START_PLANプロシージャが完了した後、将来のプライマリ・データベースとそれを保護するスタンバイでOracle Databaseソフトウェアを手動でアップグレードする必要があります。これを行うには次の手順が必要になります。

    1. 一時ロジカル(LGM)および先行グループ・スタンバイ(LGS)のOracle Databaseソフトウェアをアップグレードします。

    2. LGSデータベースでメディア・リカバリを開始します。

    3. 手動またはOracle Database Upgrade Assistant(DBUA)を使用して、一時ロジカル・スタンバイ・データベースをアップグレードします。

    4. 一時ロジカル・スタンバイを読取り/書込みモードで再度開きます。

    一時ロジカル・スタンバイおよびLGSデータベースは機能グループです。LGSデータベースは一時ロジカル・スタンバイがアップグレードされる前に、より高いバージョンのアクティブに実行中のメディア・リカバリで再起動する必要があります。LGSデータベースが最初に構成されない場合は、一時ロジカルのアップグレードは保護されません。この手順の最後に、一時ロジカルのアップグレードは完了し、メディア・リカバリがすべてのLGSデータベースで実行しています。

    スイッチオーバーを実行する前に、すべてのLGSデータベースが完全にアップグレードされるまで待機することをお薦めします。DBA_ROLLING_DATABASESビューで関連レコードがUPDATED列にYESの値を報告している場合、LGSデータベースは完全にアップグレードされています。

  3. DBMS_ROLLING.SWITCHOVERプロシージャを呼び出し、現在と将来のプライマリ・データベース間でロールを切り替えます。

    SWITCHOVERプロシージャは現在と将来のプライマリ・データベース間でロールを切り替えます。このプロシージャは、プライマリ・サービスの提示時間を最小化する、適用ラグが最小のときにスイッチオーバーが発生するように調整します。SWITCHOVERプロシージャはSWITCHOVERPHASE値を含むアップグレード計画内のすべての手順を実行します。実行される手順のタイプには次のものがあります。

    • 現在の一時ロジカル・スタンバイである先行グループ・マスター(LGM)で適用ラグがしきい値を下回るまで待機する

    • LGSデータベースで適用ラグがしきい値を下回るまで待機する

    • プライマリからロジカル・スタンバイ・ロールへ切り替える

    • 現在のロジカル・スタンバイである先行グループ・マスター(LGM)からプライマリ・ロールへ切り替える

    • 新しいプライマリになった後で先行グループ・マスター(LGM)でログ・アーカイブ宛先を有効化する

    次のようにSWITCHOVERプロシージャを呼び出します(引数は必要ありません)。

    SQL> EXECUTE DBMS_ROLLING.SWITCHOVER;
    

    プライマリからスタンバイ・ロールへのスイッチオーバー後にスイッチオーバー・エラーが発生したものの、一時ロジカルがプライマリ・ロールに正常に変換される前の場合、正常に完了するまで、引き続き以前のプライマリ・サイトでSWITCHOVERプロシージャを実行します。

  4. この時点で、以前のプライマリと残りのスタンバイ・データベースをより高いバージョンのOracle Databaseで手動で再起動し、マウントする必要があります。ローリング・アップグレードを継続するために、DBMS_ROLLINGパッケージはスタンバイ・データベースと通信する必要があるため、スタンバイ・データベースのマウントは特に重要です。

  5. FINISH_PLANプロシージャの全体的な目的は、アップグレードREDO全体をリカバリすることと、以前のプライマリおよびTGPスタンバイをフィジカル・スタンバイとして構成することです。呼び出されると、FINISH_PLANプロシージャはFINISHPHASE値を含むアップグレード計画内のすべての手順を実行します。実行される手順のタイプには次のものがあります。

    • 以前のプライマリおよびTGPスタンバイのフラッシュバック

    • 以前のプライマリのフィジカル・スタンバイへの変換

    • 新しいREDOブランチでのメディア・リカバリの開始

    次のようにFINISH_PLANプロシージャを呼び出します(引数は必要ありません)。

    SQL> EXECUTE DBMS_ROLLING.FINISH_PLAN;

14.5 ローリング・アップグレードの監視

ローリング・アップグレードに関与するデータベースに関する情報を提供するいくつかのビューが使用できます。

  • DBA_ROLLING_STATUS

    アップグレードの全体的なステータスに関する情報を提供します。

  • DBA_ROLLING_DATABASES

    ローリング・アップグレードに関与する各データベースのロール、保護、およびリカバリ状態に関する情報を提供します。

  • DBA_ROLLING_STATISTICS

    開始および終了時間、サービスがオフラインだった時間などの統計情報を提供します。

関連項目:

  • これらのビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

14.6 ローリング・アップグレードのロールバック

ローリング・アップグレード手順をロールバックするには、次のように、DBMS_ROLLING.ROLLBACK_PLANプロシージャを呼び出すことができます。

DBMS_ROLLING.ROLLBACK_PLAN;

ROLLBACK_PLANプロシージャには次の要件があります。

  • ROLLBACK_PLANプロシージャはDBMS_ROLLING.SWITCHOVERプロシージャがこれまで呼び出されたことがない場合にのみ呼び出すことができます。

  • ROLLBACK_PLANプロシージャを使用する前に、フラッシュバック・データベースが差し迫っているので、一時ロジカル・スタンバイ・データベースをマウント状態に戻す必要があります。

  • Oracle Databaseソフトウェアがすでにアップグレードされている場合、古いバージョンで結果のフィジカル・スタンバイを再起動し、メディア・リカバリを開始する必要があります。

14.7 ローリング・アップグレード中に発生したロール変更の処理

ローリング・アップグレードが進行中で、ロールオーバーが完了する前にOracle Data Guard構成でフェイルオーバーを実行する必要がある状況が発生した場合、次の状況でのみ実行することができます。

  • DBMS_ROLLINGプロシージャの進行中にフェイルオーバーが実行されなかった。

  • フェイルオーバーがプライマリ・データベースとフィジカル・スタンバイ・データベース間で発生し、これがデータ消失なしのファイルオーバーだった。

  • フェイルオーバーが一時ロジカル・スタンバイ・データベースと一時ロジカル・スタンバイ・データベースのフィジカル・スタンバイ間で発生した。

ロール変更は、様々な構成に応じたアップグレード計画内の手順を必ず無効化する重要なイベントです。ローリング・アップグレードを再開するには、新しい計画を作成する必要があります。FAILOVERパラメータを設定して、構成が変更されたことを示す必要があります。このパラメータはBUILD_PLANプロシージャの次の起動時に検出され、それに応じて既存の計画が修正されます。

修正された計画が作成されると、ローリング・アップグレードを再開できます。

14.8 ローリング・アップグレードの例

このトピックでは様々なローリング・アップグレードのシナリオ例を提供します。すべてのシナリオのいくつかの地点で、同じ基本的なローリング・アップグレードの手順が使用されています。これらの手順を例14-5に示します。残りの例は、同じ手順を繰り返すのではなく、適切なこの例に戻って参照します。

この項のいくつかの例では、ローリング・アップグレードの再開が指示されます。つまり、停止したところから続行する必要があります。ローリング・アップグレードの再開には、ローリング・アップグレードの現在のフェーズの識別と、そのフェーズに関連するPL/SQLプロシージャまたはフェーズに関連するアクティビティのいずれかの再実行が含まれます。ローリング・アップグレードの現在のフェーズは、DBA_ROLLING_STATUSビューのPHASE列に示されます。

注意:

この項であげたシナリオは、仮想上の例を示すためのものです。Oracle Active Data Guardを使用したローリング・アップグレード機能を使用して、Oracle Database 12cに対する最初のパッチセット以降のデータベース・アップグレードを実行できます。

例14-5 基本ローリング・アップグレード手順

  1. ローリング・アップグレードを開始します。

    SQL> EXECUTE DBMS_ROLLING.START_PLAN;
    
  2. 一時ロジカル・スタンバイとその保護しているスタンバイをアップグレードします。

    1. Oracle Databaseソフトウェアの上位バージョンを使用してLGPスタンバイをマウントします。

    2. 先行グループ・フィジカル(LGP)でメディア・リカバリを開始します。

    3. Oracle Databaseソフトウェアの上位バージョンを使用してアップグレード・モードで、一時ロジカル・スタンバイである先行グループ・マスター(LGM)を開きます。

    4. 手動またはOracle Database Upgrade Assistant(DBUA)を使用して、一時ロジカル・スタンバイである先行グループ・マスター(LGM)をアップグレードします。

    5. 一時ロジカル・スタンバイである先行グループ・マスター(LGM)を読取り/書込みモードで再起動します。

  3. 先行グループ・マスター(LGM)にスイッチオーバーします。

    SQL> EXECUTE DBMS_ROLLING.SWITCHOVER;
    
  4. 後続グループのデータベースを再起動します。これには、元のプライマリ・データベースと、後続グループ(TGP)内の保護しているすべてのスタンバイが含まれます。

    1. Oracle Databaseの上位バージョンを使用して前のプライマリをマウントします。

    2. Oracle Databaseの上位バージョンを使用して前のプライマリのフィジカル・スタンバイをマウントします。

  5. ローリング・アップグレードを終了します。

    SQL> EXECUTE DBMS_ROLLING.FINISH_PLAN;

例14-6 2つのデータベース間のローリング・アップグレード

次の例では、プライマリ・データベースおよびフィジカル・スタンバイ・データベースで構成されている2サイト構成でのローリング・アップグレードについて説明します。この例では、seattleが現在のプライマリで、bostonが将来のプライマリです。seattleデータベースが後続グループ・マスター(TGM)として自動的に選択され、操作に参加します。デフォルトで、seattleに対しては何も設定する必要はありません。

  1. アップグレード計画を初期化します。

    SQL> EXECUTE DBMS_ROLLING.INIT_PLAN(future_primary=>'boston');
    
  2. アップグレード計画を作成します。

    SQL> EXECUTE DBMS_ROLLING.BUILD_PLAN;
    
  3. 例14-5の説明のように、ローリング・アップグレードを実行します。

例14-7 3つのデータベース間のローリング・アップグレード

次の例では、プライマリ・データベースおよび2つのフィジカル・スタンバイ・データベースで構成されている3サイト構成でのローリング・アップグレードについて説明します。この例では、seattleが現在のプライマリ、bostonが将来のプライマリで、oaklandseattleのフィジカル・スタンバイです。

  1. アップグレード計画を初期化します。

    SQL> EXECUTE DBMS_ROLLING.INIT_PLAN (future_primary => 'boston');
    
  2. アップグレード計画を作成します。

    SQL> EXECUTE DBMS_ROLLING.BUILD_PLAN;
    
  3. 例14-5の説明のように、ローリング・アップグレードを実行します。

例14-8 4つのデータベース間のローリング・アップグレード

次の例では、プライマリ・データベースおよび3つのフィジカル・スタンバイ・データベースで構成されている4サイト構成でのローリング・アップグレードについて説明します。この例では、seattleがプライマリ・データベース、bostonが将来のプライマリ、oaklandseattleのフィジカル・スタンバイで、atlantabostonのフィジカル・スタンバイです。

  1. アップグレード計画を初期化します。

    SQL> EXECUTE DBMS_ROLLING.INIT_PLAN (future_primary => 'boston');
    
  2. atlantaを先行グループのスタンバイとして構成します。

    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(scope=>'atlanta',name=>'member',
     value=>'leading');
    
  3. アップグレード計画を作成します。

    SQL> EXECUTE DBMS_ROLLING.BUILD_PLAN;
    
  4. 例14-5の説明のように、ローリング・アップグレードを実行します。

例14-9 リーダー・ファームでのローリング・アップグレード

次の例では、1つのプライマリ・データベースおよび9つのフィジカル・スタンバイ・データベースで構成されているリーダー・ファーム構成でのローリング・アップグレードについて説明します。この例では、スイッチオーバーの前後でフィジカル・スタンバイがOracle Active Data Guardスタンバイとして使用可能になるために、8つのフィジカル・スタンバイ・データベースが4つずつの2つのグループに分けられます。この例では、seattleがプライマリ、bostonが将来のプライマリ、データベースrf[a-d]seattleのフィジカル・スタンバイで、データベースrf[e-h]bostonのフィジカル・スタンバイです。将来のプライマリ・データベースのリーダー・ファーム・グループ間の適用ラグが60秒よりも短くなるまで、新しいプライマリへのスイッチオーバーが待機するように、ローリング・アップグレードが構成されます。

  1. アップグレード計画を初期化します。

    SQL> EXECUTE DBMS_ROLLING.INIT_PLAN ( future_primary => 'boston');
    
  2. 将来のプライマリを保護するようにリーダー・ファーム・グループを構成します。

    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(scope=>'rfe',name=>'member',
    value=>'leading');
    
    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(scope=>'rff',name=>'member',
    value=>'leading');
    
    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(scope=>'rfg',name=>'member',
    value=>'leading');
    
    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(scope=>'rfh',name=>'member',
    value=>'leading');
    
  3. 将来のプライマリのリーダー・ファームに60秒の最大許容適用ラグを設定します。

    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(name=>'SWITCH_LGS_LAG_WAIT',
     value=>'1');
    
  4. アップグレード計画を作成します。

    SQL> EXECUTE DBMS_ROLLING.BUILD_PLAN;
    
  5. 例14-5の説明のように、ローリング・アップグレードを実行します。

例14-10 Application Testingのローリング・アップグレード

次の例では、上位バージョンのデータベースのアプリケーションを検証するための、一時ロジカル・スタンバイおよび一時ロジカル・スタンバイのフィジカルを構成する、4サイト構成でのローリング・アップグレードの使用について説明します。プライマリ・データベースはseattleで、bostonは将来のプライマリ、oaklandseattleのフィジカル・スタンバイで、atlantabostonのフィジカル・スタンバイです。そのため、この例では、seattleおよびoaklandが後続グループを構成し、bostonおよびatlantaが先行グループを構成します。テストの終わりに、seattleの保護を再開するために、bostonおよびatlantaが元のフィジカル・スタンバイにリストアされます。

  1. アップグレード計画を初期化します。

    SQL> EXECUTE DBMS_ROLLING.INIT_PLAN (future_primary => 'boston');
    
  2. 将来のプライマリを保護するようにatlantaを構成します。

    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(scope=>'atlanta',name=>'member',
     value=>'leading');
    
  3. アップグレード計画を作成します。

    SQL> EXECUTE DBMS_ROLLING.BUILD_PLAN;
    
  4. ローリング・アップグレードを開始します。

    SQL> EXECUTE DBMS_ROLLING.START_PLAN;
    
  5. bostonおよびatlantaをアップグレードします。

    1. 上位バージョンのデータベースを使用してatlantaをマウントします。

    2. atlantaでメディア・リカバリを開始します。

    3. 上位バージョンのデータベースを使用してアップグレード・モードでbostonを開きます。

    4. 手動またはOracle Database Upgrade Assistant(DBUA)を使用して、データベースbostonをアップグレードします。

    5. bostonを読取り/書込みモードで再起動します。

  6. 必要に応じてアプリケーションをテストします。

  7. 構成をロールバックします。

    1. bostonをマウント・モードで再起動します。

    2. アップグレードをロールバックします。

      SQL> EXECUTE DBMS_ROLLING.ROLLBACK_PLAN;
      
  8. 下位バージョンのデータベースを使用してbostonおよびatlantaでメディア・リカバリを開始します。

    1. 下位バージョンのデータベースを使用して bostonおよびatlantaをマウントします。

    2. bostonおよびatlantaでメディア・リカバリを開始します。

例14-11 新しいプライマリへのフェイルオーバー後のローリング・アップグレードの再開

次の例では、フィジカル・スタンバイのプライマリ・ロールへのデータ消失なしのファイルオーバーと、その後の3サイト構成でのローリング・アップグレード計画の再構成について説明します。この例では、seattleが現在のプライマリ、bostonが将来のプライマリで、oaklandseattleのフィジカル・スタンバイです。データベースoaklandはフェイルオーバーされて新しいプライマリになります。(後続グループは(seattleoakland)で先行グループはbostonです。)

  1. oaklandの残りのREDOがリカバリされ、新しいプライマリ・ロールにフェイルオーバーされます。

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY FINISH;
    
    SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
    
    SQL> STARTUP OPEN;
    
  2. 必要に応じて、oaklandのログ・アーカイブ宛先を構成します。

    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='service="boston" reopen=5
      2  LGWR ASYNC NET_TIMEOUT=180 valid_for=(ONLINE_LOGFILE, PRIMARY_ROLE)
      3  DB_UNIQUE_NAME="oakland"';
    
  3. ファイルオーバーが実行されたことを示すパラメータを設定します。:

    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(name=>'failover', value=>'1');
    
  4. アップグレード計画を修正します。

    SQL> EXECUTE DBMS_ROLLING.BUILD_PLAN;
    
  5. ローリング・アップグレードを再開します。

例14-12 新しい一時ロジカルへのフェイルオーバー後のローリング・アップグレードの再開

次の例では、フィジカル・スタンバイの一時ロジカル・ロールへのフェイルオーバーと、その後の5サイト構成でのローリング・アップグレード計画の再構成について説明します。この例では、seattleがプライマリ、bostonが将来のプライマリ、oaklandseattleのフィジカル・スタンバイで、atlantamiamibostonのフィジカル・スタンバイです。データベースatlantaはフェイルオーバーされて新しい一時ロジカル・スタンバイになります。

  1. atlantaの残りのREDOがリカバリされ、新しい一時ロジカル・ロールにフェイルオーバーされます。

    SQL> ALTER DATABASE RECOVER MANAGED STANDBY FINISH;
    
    SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;
    
    SQL> ALTER DATABASE OPEN;
    
  2. 必要に応じて、atlantaのログ・アーカイブ宛先を構成します。

    SQL> alter system set log_archive_dest_2='service="seattle" reopen=5
      2  LGWR ASYNC NET_TIMEOUT=180 valid_for=(ONLINE_LOGFILE, PRIMARY_ROLE)
      3  DB_UNIQUE_NAME="atlanta"';
    
    SQL> alter system set log_archive_dest_3='service="oakland" reopen=5
      2  LGWR ASYNC NET_TIMEOUT=180 valid_for=(ONLINE_LOGFILE, PRIMARY_ROLE)
      3  DB_UNIQUE_NAME="atlanta"';
    
    SQL> alter system set log_archive_dest_3='service="miami" reopen=5
      2  LGWR ASYNC NET_TIMEOUT=180 valid_for=(ONLINE_LOGFILE, ALL_ROLES)
      3  DB_UNIQUE_NAME="atlanta"';
    
  3. 新しい一時ロジカル・スタンバイ・データベースとしてatlantaを指定します。

    SQL> EXECUTE DBMS_ROLLING.SET_PARAMETER(name=>'failover', value=>'1');
    
  4. アップグレード計画を修正します。

    SQL> EXECUTE DBMS_ROLLING.BUILD_PLAN;
    
  5. ローリング・アップグレードを再開します。