アクティブ・スタンバイ・ペア・レプリケーションを使用したアップグレードの実行

アクティブ・スタンバイ・ペア・レプリケーションにより、アプリケーションへのデータの可用性が向上します。アクティブ・スタンバイ・ペアを使用すると、非同期ライトスルー・キャッシュ・グループも使用する構成で新しいメジャー・リリースへアップグレードする場合を除き、オンライン・アップグレードを実行してアップグレード中にデータの可用性を継続して維持できます。この項では、次の手順について説明します。

ノート:

非同期ライトスルーまたは読取り専用キャッシュ・グループのみがアクティブ・スタンバイ・ペアでサポートされます。

キャッシュ・グループが構成されていないアクティブ・スタンバイ・ペアのオンライン・アップグレード

この項では、アクティブ・スタンバイ・ペアを使用した、キャッシュ・グループのないシナリオにおけるオンライン・アップグレードについて説明します。

概要、制限および要件については、クラシック・レプリケーションを使用したオンライン・アップグレードの実行も参照してください。

スタンバイ・マスターおよびサブスクライバのオンライン・パッチ・アップグレード

スタンバイ・マスター・データベースおよびサブスクライバ・データベースの新しいパッチ・リリースへのオンライン・アップグレードを実行するには、各データベースで次のタスクを実行します。この手順では、キャッシュ・グループはないものとします。

  1. ttRepStop組込みプロシージャまたはttAdminユーティリティを使用して、データベースのレプリケーション・エージェントを停止します。たとえば、スタンバイ・データベースmaster2のレプリケーション・エージェントを停止するには、次のようにします。
    ttAdmin -repStop master2
    
  2. 新しいリリースの新しいインストール環境および新しいインスタンスを作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  3. ttRepStart組込みプロシージャまたはttAdminユーティリティを使用して、レプリケーション・エージェントを再開します。
    ttAdmin -repStart master2

アクティブ・マスターのオンライン・パッチ・アップグレード

アクティブ・マスター・データベースの新しいパッチ・リリースへのオンライン・アップグレードを実行するには、アクティブ・マスター・データベースとスタンバイ・マスター・データベースの役割を逆にしてから、アップグレードを行う必要があります。この手順では、キャッシュ・グループはないものとします。

  1. アクティブ・マスター・データベースで更新を生成しているすべてのアプリケーションを一時停止します。
  2. スタンバイ・マスター・データベースのDSNおよびホストを使用して、アクティブ・マスター・データベースのttRepSubscriberWait組込みプロシージャを実行します。(コールの結果は00である必要があります。値が01の場合は、値00が返されるまでttRepSubscriberWaitを再度コールする必要があります。)たとえば、すべてのトランザクションがmaster2hostのスタンバイ・マスターmaster2にレプリケートされるようにするには、次のようにします。
    call ttRepSubscriberWait( null, null, 'master2', 'master2host', 120 );
    
  3. ttRepStop組込みプロシージャまたはttAdminユーティリティを使用して、現行のアクティブ・マスター・データベースのレプリケーション・エージェントを停止します。たとえば、アクティブ・マスター・データベースmaster1のレプリケーション・エージェントを停止するには、次のようにします。
    ttAdmin -repStop master1
    
  4. 現行のアクティブ・マスター・データベースでttRepDeactivate組込みプロシージャを実行します。これによって、データベースがIDLE状態になります。
    call ttRepDeactivate;
    
  5. スタンバイ・マスター・データベースで、ttRepStateSet組込みプロシージャを使用して、データベースをACTIVE状態に設定します。このデータベースがアクティブ・スタンバイ・ペアのアクティブ・マスターになります。
    call ttRepStateSet( 'ACTIVE' );
    
  6. ステップ1で一時停止したアプリケーションを再開し、現在アクティブ・マスターとして動作しているデータベース(たとえば、master2)に接続します。

    ノート:

    この時点では、新しいアクティブ・データベースからサブスクライバ・データベースへのレプリケーションは発生しません。レプリケーションは、新しいスタンバイ・データベースがアップグレードされ、新しいスタンバイ・データベースのレプリケーション・エージェントが実行されてから再開されます。

  7. 前のアクティブ・マスター・データベース(今のスタンバイ・マスター・データベース)のインスタンスをアップグレードします。詳細は、基本的なパッチ・アップグレードの実行についてを参照してください。
  8. ttRepStart組込みプロシージャまたはttAdminユーティリティを使用して、アップグレードしたインスタンスのデータベースのレプリケーションを再起動します。
    ttAdmin -repStart master2
    
  9. 新しくアップグレードしたインスタンスのデータベースを再びアクティブ・マスター・データベースにするには、Oracle TimesTen In-Memory Databaseレプリケーション・ガイドアクティブ・データベースとスタンバイ・データベースの役割の入替えを参照してください。

アクティブ・スタンバイ・ペアのオンライン・メジャー・アップグレード

アクティブ・スタンバイ・ペアからTimesTenの新しいメジャー・リリースへのオンライン・アップグレードを実行するには、各データベースのTCP/IPポートを明示的に指定する必要があります。アクティブ・スタンバイ・ペアのレプリケーション・スキームで各データベースのPORT属性が構成されていない場合は、アップグレードの準備として次のステップを実行する必要があります。この手順では、キャッシュ・グループはないものとします。(読取り専用キャッシュ・グループの場合、キャッシュ・グループを使用したアクティブ・スタンバイ・ペアのオンライン・メジャー・アップグレードのみがサポートされます。)

  1. ttRepStop組込みプロシージャをコールするか、ttAdminユーティリティを使用して、すべてのデータベースでレプリケーション・エージェントを停止します。たとえば、データベースmaster1のレプリケーション・エージェントを停止するには、次のようにします。

    ttAdmin -repStop master1
    
  2. アクティブ・マスター・データベースで、ALTER ACTIVE STANDBY PAIR文を使用してアクティブ・スタンバイ・ペアのすべてのデータベースのPORT属性を指定します。たとえば、master1hostホスト上のmaster1データベース、master2hostホスト上のmaster2データベースおよびsubscriber1hostホスト上のsubscriber1データベースのPORT属性を設定するには、次のようにします。

    ALTER ACTIVE STANDBY PAIR
     ALTER STORE master1 ON "master1host" SET PORT 30000
     ALTER STORE master2 ON "master2host" SET PORT 30001
     ALTER STORE subscriber1 ON "subscriber1host" SET PORT 30002;
    
  3. ttDestroyユーティリティを使用して、スタンバイ・マスター・データベースおよびすべてのサブスクライバを破棄します。たとえば、データベースsubscriber1を破棄するには、次のようにします。

    ttDestroy subscriber1
    
  4. 通常の手順に従ってアクティブ・スタンバイ・ペアを起動し、アクティブ・マスターからスタンバイ・データベースおよびサブスクライバ・データベースを複製します。詳細は、Oracle TimesTen In-Memory Databaseレプリケーション・ガイドキャッシュ・グループが構成されていないアクティブ・スタンバイ・ペアの設定を参照してください。

アクティブ・スタンバイ・ペアのインスタンスをアップグレードするには、まずスタンバイ・マスターのインスタンスをアップグレードします。このノードのアップグレード中はスタンバイ・マスター・データベースが存在しないため、アクティブ・マスター・データベースでの更新は、サブスクライバ・データベースに直接伝播されます。スタンバイ・ノードのアップグレード後に、アクティブ・ロールとスタンバイ・ロールが切り替えられ、新しいアクティブ・ロールから新しいスタンバイ・ロールが作成されます。最後に、サブスクライバ・ノードがアップグレードされます。

  1. アクティブ・マスター・データベースでttRepStateSave組込みプロシージャを実行して、アクティブ・マスター・データベースに、スタンバイ・マスターへの更新のレプリケートを停止するように指示ます。たとえば、ホストmaster2hostのスタンバイ・マスター・データベースmaster2へのレプリケートを停止するには、次のようにします。
    call ttRepStateSave( 'FAILED', 'master2', 'master2host' );
    
  2. ttRepStop組込みプロシージャまたはttAdminユーティリティを使用して、スタンバイ・マスター・データベースのレプリケーション・エージェントを停止します。次の例では、スタンバイ・マスター・データベースmaster2のレプリケーション・エージェントを停止します。
    ttAdmin -repStop master2
    
  3. ttMigrateユーティリティを使用してスタンバイ・マスター・データベースをバイナリ・ファイルにバックアップします。
    ttMigrate -c master2 master2.bak
    

    詳細は、Oracle TimesTen In-Memory DatabaseリファレンスttMigrateを参照してください。

  4. ttDestroyユーティリティを使用して、アクティブ・マスター・データベースを破棄します。
    ttDestroy master2
    
  5. master2hostスタンバイ・マスター・ホストに新しいインストール環境および新しいインスタンスを作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  6. master2hostの新しいインスタンスで、ttMigrateを使用して、前に作成したバイナリ・ファイルからスタンバイ・マスター・データベースをリストアします。(この例では、20MB分のデータがリストアされるたびにチェックポイント操作が実行されます。)
    ttMigrate -r -C 20 master2 master2.bak
    
  7. ttRepStart組込みプロシージャまたはttAdminユーティリティを使用してスタンバイ・マスター・データベースのレプリケーション・エージェントを開始します。
    ttAdmin -repStart master2
    

    アップグレードしたインスタンスのスタンバイ・マスター・データベースがアクティブ・マスター・データベースと同期化すると、このスタンバイ・マスター・データベースはRECOVERING状態からSTANDBY状態に移行します。また、このスタンバイ・マスター・データベースは、サブスクライバに更新の送信も開始します。スタンバイ・マスター・データベースがSTANDBY状態になるタイミングは、ttRepStateGet組込みプロシージャをコールすることで決まります。

    call ttRepStateGet;
    
  8. アクティブ・マスター・データベースで更新を生成しているすべてのアプリケーションを一時停止します。
  9. スタンバイ・マスター・データベースのDSNおよびホストを使用して、アクティブ・マスター・データベースのttRepSubscriberWait組込みプロシージャを実行します。(コールの結果は00である必要があります。値が01の場合は、値00が返されるまでttRepSubscriberWaitを再度コールする必要があります。)たとえば、すべてのトランザクションがホストmaster2hostのスタンバイ・マスターmaster2にレプリケートされるようにするには、次のようにします。
    call ttRepSubscriberWait( null, null, 'master2', 'master2host', 120 );
    
  10. ttRepStop組込みプロシージャまたはttAdminユーティリティを使用して、アクティブ・マスター・データベースのレプリケーション・エージェントを停止します。たとえば、アクティブ・マスター・データベースmaster1のレプリケーション・エージェントを停止するには、次のようにします。
    ttAdmin -repStop master1
    
  11. スタンバイ・マスター・データベースで、ttRepStateSet組込みプロシージャを使用して、データベースをACTIVE状態に設定します。このデータベースがアクティブ・スタンバイ・ペアのアクティブ・マスターになります。
    call ttRepStateSet( 'ACTIVE' );
    
  12. アクティブ・マスター・データベースでttRepStateSave組込みプロシージャを実行して、新しいアクティブ・マスター・データベース(この例では、master2)に、現在のスタンバイ・マスター(master1)への更新のレプリケートを停止するように指示します。たとえば、ホストmaster1hostのスタンバイ・マスター・データベースmaster1へのレプリケートを停止するには、次のようにします。
    call ttRepStateSave( 'FAILED', 'master1', 'master1host' );
    
  13. ttDestroyユーティリティを次のように使用して、前のアクティブ・マスター・データベースを破棄します。
    ttDestroy master1
    
  14. 新しいリリースの新しいインストール環境および新しいインスタンスをmaster1hostに作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  15. ttRepAdminユーティリティを使用して、新しいスタンバイ・マスター・データベースを複製することによって、新しいスタンバイ・マスター・データベースを作成します。たとえば、master2hostホスト上のmaster2データベースをmaster1データベースに複製するには、master1データベースを含むホストで次のように実行します。
    ttRepAdmin -duplicate -from master2 -host master2host -uid pat -pwd patpwd
     -setMasterRepStart master1
    
  16. ttRepStart組込みプロシージャまたはttAdminユーティリティを使用して新しいスタンバイ・マスター・データベースのレプリケーション・エージェントを開始します。
    ttAdmin -repStart master1
    
  17. ttRepStop組込みプロシージャまたはttAdminユーティリティを使用して、最初のサブスクライバ・データベースのレプリケーション・エージェントを停止します。たとえば、サブスクライバ・データベースsubscriber1のレプリケーション・エージェントを停止するには、次のコマンドを使用します。
    ttAdmin -repStop subscriber1
    
  18. ttDestroyユーティリティを使用して、サブスクライバ・データベースを破棄します。
    ttDestroy subscriber1
    
  19. 新しいリリースの新しいインストール環境および新しいインスタンスをサブスクライバ・ホストに作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  20. ttRepAdminユーティリティを使用して、新しいスタンバイ・マスター・データベースを複製することによってサブスクライバ・データベースを作成します。
    ttRepAdmin -duplicate -from master1 -host master1host -uid pat -pwd patpwd
     -setMasterRepStart subscriber1
    
  21. ttRepStart組込みプロシージャまたはttAdminユーティリティを使用して、複製したサブスクライバ・データベースのレプリケーション・エージェントを開始します。
    ttAdmin -repStart subscriber1
    
  22. 他の各サブスクライバ・データベースで、ステップ17からステップ21を繰り返します。

キャッシュ・グループが構成されているアクティブ・スタンバイ・ペアのオンライン・アップグレード

この項では、アクティブ・スタンバイ・ペアおよびキャッシュ・グループを使用したシナリオにおけるオンライン・パッチ・アップグレードについて説明します。

概要、制限および要件については、クラシック・レプリケーションを使用したオンライン・アップグレードの実行も参照してください。

スタンバイ・マスターおよびサブスクライバのオンライン・パッチ・アップグレード(キャッシュ・グループ)

スタンバイ・マスター・データベースおよびサブスクライバ・データベースの新しいパッチ・リリースへのオンライン・アップグレードを実行するには、キャッシュ・グループを使用した構成で、各データベースで次のタスクを実行します(例外については説明を参照)。

  1. ttRepStop組込みプロシージャまたはttAdminユーティリティを使用して、データベースのレプリケーション・エージェントを停止します。たとえば、スタンバイ・データベースmaster2のレプリケーション・エージェントを停止するには、次のようにします。
    ttAdmin -repStop master2
    
  2. ttCacheStop組込みプロシージャまたはttAdminユーティリティを使用して、スタンバイ・データベースのキャッシュ・エージェントを停止します。
    ttAdmin -cacheStop master2
    
  3. 新しいリリースの新しいインストール環境および新しいインスタンスを作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  4. ttCacheStart組込みプロシージャまたはttAdminユーティリティを使用して、スタンバイ・データベースのキャッシュ・エージェントを再開します。
    ttAdmin -cacheStart master2
    
  5. ttRepStart組込みプロシージャまたはttAdminユーティリティを使用して、レプリケーション・エージェントを再開します。
    ttAdmin -repStart master2

ノート:

ステップ2およびステップ4のキャッシュ・エージェントの停止および再起動は、サブスクライバ・データベースには適用できません。

アクティブ・マスターのオンライン・パッチ・アップグレード(キャッシュ・グループ)

アクティブ・マスター・データベースの新しいパッチ・リリースへのオンライン・アップグレードを実行するには、キャッシュ・グループを使用した構成で、各データベースで次のステップを実行します。最初に、アクティブ・マスター・データベースとスタンバイ・マスター・データベースの役割を逆にしてから、アップグレードを行う必要があります。

  1. アクティブ・マスター・データベースで更新を生成しているすべてのアプリケーションを一時停止します。
  2. ttCacheStop組込みプロシージャまたはttAdminユーティリティを使用して、現行のアクティブ・マスター・データベースのキャッシュ・エージェントを停止します。
    ttAdmin -cacheStop master1
    
  3. スタンバイ・マスター・データベースのDSNおよびホストを使用して、アクティブ・マスター・データベースのttRepSubscriberWait組込みプロシージャを実行します。たとえば、すべてのトランザクションがホストmaster2hostのスタンバイ・マスターmaster2にレプリケートされるようにするには、次のようにします。
    call ttRepSubscriberWait( null, null, 'master2', 'master2host', 120 );
    
  4. ttRepStop組込みプロシージャまたはttAdminユーティリティを使用して、現行のアクティブ・マスター・データベースのレプリケーション・エージェントを停止します。たとえば、アクティブ・マスター・データベースmaster1のレプリケーション・エージェントを停止するには、次のようにします。
    ttAdmin -repStop master1
    
  5. 現行のアクティブ・マスター・データベースでttRepDeactivate組込みプロシージャを実行します。これによって、データベースがIDLE状態になります。
    call ttRepDeactivate;
    
  6. スタンバイ・マスター・データベースで、ttRepStateSet組込みプロシージャを使用して、データベースをACTIVE状態に設定します。このデータベースがアクティブ・スタンバイ・ペアのアクティブ・マスターになります。
    call ttRepStateSet( 'ACTIVE' );
    
  7. ステップ1で一時停止したアプリケーションを再開し、現在アクティブ・マスターとして動作しているデータベース(この例では、master2データベース)に接続します。
  8. 前のアクティブ・マスター・データベース(今のスタンバイ・マスター・データベース)のインスタンスをアップグレードします。詳細は、基本的なパッチ・アップグレードの実行についてを参照してください。
  9. ttCacheStart組込みプロシージャまたはttAdminユーティリティを使用して、アップグレード後のデータベースのキャッシュ・エージェントを再開します。
    ttAdmin -cacheStart master1
    
  10. ttRepStart組込みプロシージャまたはttAdminユーティリティを使用して、アップグレード後のデータベースのレプリケーションを再開します。
    ttAdmin -repStart master1
    
  11. アップグレード後のデータベースを再びアクティブ・マスター・データベースにするには、Oracle TimesTen In-Memory Databaseレプリケーション・ガイドアクティブ・データベースとスタンバイ・データベースの役割の入替えを参照してください。

アクティブ・スタンバイ・ペアのオンライン・メジャー・アップグレード(読取り専用キャッシュ・グループ)

読取り専用キャッシュ・グループを使用したアクティブ・スタンバイ・ペアのシナリオで、次のステップを実行してメジャー・アップグレードを実行します。この例では、18.1リリースから22.1にアップグレードします。

このステップでは、master1master1hostホスト上のアクティブ・マスター・データベースであり、master2master2hostホスト上のスタンバイ・マスター・データベースであることを想定しています。

ノート:

ここで説明する組込みプロシージャおよびユーティリティの詳細は、Oracle TimesTen In-Memory Databaseリファレンス組込みプロシージャおよびユーティリティを参照してください。

  1. アクティブ・マスター・ホストでttAdminユーティリティを実行し、アクティブ・マスター・データベースのレプリケーション・エージェントを停止します。
    ttAdmin -repStop master1
    
  2. アクティブ・マスター・データベースでDROP ACTIVE STANDBY PAIR文を使用し、アクティブ・スタンバイ・ペアを削除します。たとえば、ttIsqlユーティリティから次のようにします。
    Command> DROP ACTIVE STANDBY PAIR;
    
  3. アクティブ・マスター・データベースでCREATE ACTIVE STANDBY PAIR文を使用し、キャッシュ・グループを除外した新しいアクティブ・スタンバイ・ペアを作成します。各データベースのTCP/IPポートは必ず明示的に指定してください。
    Command> CREATE ACTIVE STANDBY PAIR master1 ON "master1host",
               master2 ON "master2host"
             STORE master1 ON "master1host" PORT 20000
             STORE master2 ON "master2host" PORT 20010
             EXCLUDE CACHE GROUP cacheuser.readcache;

    ノート:

    ttIsqlユーティリティでcachegroupsコマンドを使用し、データベースに定義するキャッシュ・グループをすべて指定できます。この例では、readcachecacheuserによって所有されている読取り専用のキャッシュ・グループです。

  4. アクティブ・マスター・データベースでttRepStateSet組込みプロシージャを呼び出し、アクティブ・マスター・データベースのレプリケーション状態をACTIVEに設定します。
    Command> call ttRepStateSet('ACTIVE');
    

    アクティブ・マスター・データベースのレプリケーション状態がACTIVEに設定されていることを確認するには、ttRepStateGet組込みプロシージャを呼び出します。

    Command> call ttRepStateGet();
    < ACTIVE >
    1 row found.
    
  5. アクティブ・マスター・データベースでttRepStart組込みプロシージャを呼び出し、レプリケーション・エージェントを起動します。
    Command> call ttRepStart();
    
  6. スタンバイ・マスター・ホストでttAdminユーティリティを実行し、スタンバイ・マスター・データベースのレプリケーション・エージェントを停止します。
    ttAdmin -repStop master2
    
  7. スタンバイ・マスター・ホストでttAdminユーティリティを実行し、スタンバイ・マスター・データベースのキャッシュ・エージェントを停止します。
    ttAdmin -cacheStop master2
    
  8. スタンバイ・マスター・ホストでttDestroyユーティリティを実行し、スタンバイ・マスター・データベースを破棄します。-forceオプションを追加するか、最初にすべてのキャッシュ・グループを削除する必要があります。ttDestroyユーティリティを実行した後、次に示すようにcacheCleanUp.sqlスクリプトを実行します。
    ttDestroy -force master2
    

    timesten_home/install/oraclescripts/cacheCleanUp.sql SQL*Plusスクリプトをキャッシュ管理ユーザーとして実行して、Oracle Databaseオブジェクトを削除します。このスクリプトは、ホスト名とデータベース名(フルパスを含む)をパラメータとして受け入れます。詳細は、Oracle TimesTen In-Memory Databaseキャッシュ・ガイド自動リフレッシュを使用したキャッシュ・グループで使用されるOracle Databaseオブジェクトの削除を参照してください。

  9. ttRepAdminユーティリティで新しいスタンバイ・マスター・データベースを複製することによって、新しいスタンバイ・マスター・データベースを作成します。たとえば、master2データベースのmaster1hostホスト上にあるmaster1データベースを複製するには、master2データベースを含むホストで次のように実行します。
    ttRepAdmin -duplicate -from master1 -host master1host -UID pat -PWD patpwd 
      -keepCG -cacheUid cacheuser -cachePwd cachepwd master2

    ノート:

    これを複製するには、アクティブ・マスター・データベースでADMIN権限が定義されているユーザーが必要です。この例では、patpwdパスワードで識別されるpatユーザーが、ADMIN権限を持っています。

    キャッシュ・グループ表を維持するには、-keepCGオプションを追加するときにキャッシュ管理ユーザーが必要です。この例では、cachepwdパスワードで識別されるcacheuserユーザーが、キャッシュ管理ユーザーです。

  10. 新しいスタンバイ・マスター・データベースでDROP CACHE GROUP文を使用し、キャッシュ・グループをすべて削除します。
    Command> DROP CACHE GROUP cacheuser.readcache;
    
  11. スタンバイ・マスター・ホストでttMigrateユーティリティを実行し、スタンバイ・マスター・データベースをバイナリ・ファイルにバックアップします。
    ttMigrate -c master2 master2.bak
    
  12. スタンバイ・マスター・ホストでttDestroyユーティリティを実行し、スタンバイ・マスター・データベースを破棄します。ttDestroyユーティリティを実行した後、次に示すようにcacheCleanUp.sqlスクリプトを実行します。
    ttDestroy master2
    

    timesten_home/install/oraclescripts/cacheCleanUp.sql SQL*Plusスクリプトをキャッシュ管理ユーザーとして実行して、Oracle Databaseオブジェクトを削除します。このスクリプトは、ホスト名とデータベース名(フルパスを含む)をパラメータとして受け入れます。詳細は、Oracle TimesTen In-Memory Databaseキャッシュ・ガイド自動リフレッシュを使用したキャッシュ・グループで使用されるOracle Databaseオブジェクトの削除を参照してください。

  13. 新しいリリースの新しいインストール環境および新しいインスタンスをスタンバイ・マスター・ホストに作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  14. スタンバイ・マスター・ホスト上の新しいインスタンスで、ttMigrateユーティリティを実行し、前の手順で作成したバイナリ・ファイルからスタンバイ・マスター・データベースをリストアします。
    ttMigrate -r -C 20 master2 master2.bak

    ノート:

    この例では、20MB分のデータがリストアされるたびにチェックポイント操作が実行されます。

  15. スタンバイ・マスター・データベースでCREATE USER文を使用し、新しいキャッシュ管理ユーザーを作成します。
    Command> CREATE USER cacheuser2 IDENTIFIED BY cachepwd;
    Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE,
             DROP ANY TABLE TO cacheuser2;

    ノート:

    新しいキャッシュ管理ユーザーはOracleデータベースに作成し、キャッシュ・グループ操作の実行に必要な最小限の権限をそのユーザーに付与する必要があります。

  16. キャッシュ管理ユーザーとしてスタンバイ・マスター・データベースに接続し、ttCacheUidPwdSet組込みプロシージャを呼び出して、新しいキャッシュ管理ユーザーの名前とパスワードを設定します。接続文字列内のOraclePWD接続属性で、Oracleデータベースのキャッシュ管理ユーザーのパスワードを必ず指定してください。
    ttIsql "DSN=master2;UID=cacheuser2;PWD=cachepwd;OraclePWD=oracle"
    Command> call ttCacheUidPwdSet('cacheuser2','oracle');
    
  17. スタンバイ・マスター・データベースでttCacheStart組込みプロシージャを呼び出し、キャッシュ・エージェントを起動します。
    Command> call ttCacheStart();
    
  18. スタンバイ・マスター・データベースでttRepStart組込みプロシージャを呼び出し、レプリケーション・エージェントを起動します。
    Command> call ttRepStart();
    

    レプリケーション状態は、自動的にSTANDBYに設定されます。ttRepStateGet組込みプロシージャをコールしてこれを確認できます。(非同期で実行され、少し時間がかかります。)

    Command> call ttRepStateGet();
    < STANDBY >
    1 row found.
    
  19. スタンバイ・マスター・データベースでCREATE READONLY CACHE GROUP文を使用し、読取り専用キャッシュ・グループをすべて作成します。
    Command> CREATE READONLY CACHE GROUP cacheuser2.readcache
             AUTOREFRESH INTERVAL 10 SECONDS
             FROM oratt.readtbl
               (keyval NUMBER NOT NULL PRIMARY KEY, str VARCHAR(32));

    ノート:

    キャッシュ管理ユーザーが、Oracleデータベースのキャッシュ・グループ表に対するSELECT権限を持っていることを確認してください。この例でcacheuser2ユーザーは、Oracleデータベースのorattユーザーによって所有されているreadtbl表に対するSELECT権限を持っています。

  20. スタンバイ・マスター・データベースでLOAD CACHE GROUP文を使用し、Oracleデータベース表からTimesTenキャッシュ・グループにデータをロードします。
    Command> LOAD CACHE GROUP cacheuser2.readcache
             COMMIT EVERY 200 ROWS;
    
  21. アクティブ・マスター・データベースで更新を生成しているすべてのアプリケーションを一時停止します。
  22. アクティブ・マスター・データベースで、スタンバイ・マスター・データベースのDSNおよびホストを使用して、ttRepSubscriberWait組込みプロシージャを呼び出します。たとえば、すべてのトランザクションをmaster2hostホスト上のmaster2データベースにレプリケートするには、次のようにします。
    Command> call ttRepSubscriberWait(NULL,NULL,'master2','master2host',120);
    
  23. アクティブ・マスター・データベースでttRepStop組込みプロシージャを呼び出し、レプリケーション・エージェントを停止します。
    Command> call ttRepStop();
    
  24. アクティブ・マスター・データベースでttRepDeactivate組込みプロシージャを呼び出し、アクティブ・マスター・データベースのレプリケーション状態をIDLEに設定します。
    Command> call ttRepDeactivate();
    
  25. スタンバイ・マスター・データベースでttRepStateSet組込みプロシージャを呼び出し、スタンバイ・マスター・データベースのレプリケーション状態をACTIVEに設定します。このデータベースとそのホストが、アクティブ・スタンバイ・ペアのレプリケーション・スキームでアクティブ・マスターになります。
    Command> call ttRepStateSet('ACTIVE');

    ノート:

    この例では、master2hostホスト上のmaster2データベースが、アクティブ・スタンバイ・ペアのレプリケーション・スキームでアクティブ・マスターになったところです。同様に、master1hostホスト上のmaster1は、これ以降、アクティブ・スタンバイ・ペアのレプリケーション・スキームにおけるスタンバイ・マスターとみなされます。

  26. 新しいアクティブ・マスター・データベースでttRepStop組込みプロシージャを呼び出し、レプリケーション・エージェントを停止します。
    Command> call ttRepStop();
    
  27. アクティブ・マスター・データベースでALTER CACHE GROUP文を使用し、すべてのキャッシュ・グループのAUTOREFRESHモードをPAUSEDに設定します。
    Command> ALTER CACHE GROUP cacheuser2.readcache
             SET AUTOREFRESH STATE PAUSED;
    
  28. アクティブ・マスター・データベースでDROP ACTIVE STANDBY PAIR文を使用し、アクティブ・スタンバイ・ペアを削除します。
    Command> DROP ACTIVE STANDBY PAIR;
    
  29. アクティブ・マスター・データベースでCREATE ACTIVE STANDBY PAIR文を使用し、キャッシュ・グループを含めた新しいアクティブ・スタンバイ・ペアを作成します。各データベースのTCP/IPポートは必ず明示的に指定してください。
    Command> CREATE ACTIVE STANDBY PAIR master1 ON "master1host",
               master2 ON "master2host"
             STORE master1 ON "master1host" PORT 20000
             STORE master2 ON "master2host" PORT 20010;
    
  30. アクティブ・マスター・データベースでttRepStateSet組込みプロシージャを呼び出し、アクティブ・マスター・データベースのレプリケーション状態をACTIVEに設定します。
    Command> call ttRepStateSet('ACTIVE');
    
  31. アクティブ・マスター・データベースでttRepStart組込みプロシージャを呼び出し、レプリケーション・エージェントを起動します。
    Command> call ttRepStart();
    
  32. ステップ21で停止したアプリケーションがあれば再開し、新しいアクティブ・マスター・データベースに接続します。
  33. 新しいスタンバイ・マスター・ホストでttDestroyユーティリティを実行し、新しいスタンバイ・マスター・データベースを破棄します。ttDestroyユーティリティを実行した後、次に示すようにcacheCleanUp.sqlスクリプトを実行します。
    ttDestroy master1
    

    timesten_home/install/oraclescripts/cacheCleanUp.sql SQL*Plusスクリプトをキャッシュ管理ユーザーとして実行して、Oracle Databaseオブジェクトを削除します。このスクリプトは、ホスト名とデータベース名(フルパスを含む)をパラメータとして受け入れます。詳細は、Oracle TimesTen In-Memory Databaseキャッシュ・ガイド自動リフレッシュを使用したキャッシュ・グループで使用されるOracle Databaseオブジェクトの削除を参照してください。

  34. 新しいリリースの新しいインストール環境および新しいインスタンスをスタンバイ・マスター・ホストに作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  35. ttRepAdminユーティリティで新しいスタンバイ・マスター・データベースを複製することによって、新しいスタンバイ・マスター・データベースを作成します。たとえば、master2hostホスト上のmaster2データベースをmaster1データベースに複製するには、master1データベースを含むホストで次のように実行します。
    ttRepAdmin -duplicate -from master2 -host master2host -UID pat -PWD patpwd 
      -keepCG -cacheUid cacheuser2 -cachePwd cachepwd master1
    
  36. スタンバイ・マスター・ホストでttAdminユーティリティを実行し、スタンバイ・マスター・データベースのキャッシュ・エージェントを起動します。
    ttAdmin -cacheStart master1
    
  37. スタンバイ・マスター・ホストでttAdminユーティリティを実行し、スタンバイ・マスター・データベースのキャッシュ・エージェントを起動します。
    ttAdmin -repStart master1
    

キャッシュ・グループが構成されているアクティブ・スタンバイ・ペアのオフライン・アップグレード

非同期ライトスルー・キャッシュ・グループのあるアクティブ・スタンバイ・ペアのシナリオでメジャー・アップグレードを実行するには、オフライン・アップグレードが必要です。これについては、後の項で説明します。

アクティブ・スタンバイ・ペアのオンライン・メジャー・アップグレード(キャッシュ・グループ)

キャッシュ・グループを使用したアクティブ・スタンバイ・ペアのシナリオで、次のステップを実行してメジャー・アップグレードを実行します。このアップグレードはオフラインで実行する必要があります。(この例では、リリース18.1からリリース22.1にアップグレードすることを前提としています。

このステップでは、master1master1hostホスト上のアクティブ・マスター・データベースであり、master2がmaster2hostホスト上のスタンバイ・マスター・データベースであることを想定しています。(説明した組込みプロシージャおよびユーティリティの詳細は、Oracle TimesTen In-Memory Databaseリファレンス組込みプロシージャおよびユーティリティを参照してください。)

  1. アップグレード前に、アクティブ・データベースの更新をすべて停止します。
  2. master1から、ttRepSubscriberWait組込みプロシージャをコールし、すべてのデータ更新がスタンバイ・データベースに適用されるようにします。numsecには適切な待機時間を指定します。
    call ttRepSubscriberWait(null, null, 'master2', 'master2host', numsec);
    
  3. master2から、ttRepSubscriberWait組込みプロシージャをコールし、すべてのデータ更新がOracle Databaseに適用されるようにします。
    call ttRepSubscriberWait(null, null, '_ORACLE', null, numsec);
    
  4. master1hostで、ttAdminユーティリティを使用してアクティブ・データベースのレプリケーション・エージェントを停止します。
    ttAdmin -repStop master1
    
  5. master2hostで、ttAdminを使用してスタンバイ・データベースのレプリケーション・エージェントを停止します。
    ttAdmin -repStop master2
    
  6. master1hostで、ttCacheStop組込みプロシージャをコールするか、ttAdminを使用してアクティブ・データベースのキャッシュ・エージェントを停止します。
    ttAdmin -cacheStop master1
    
  7. master2hostで、ttCacheStopをコールするか、ttAdminを使用してスタンバイ・データベースのキャッシュ・エージェントを停止します。
    ttAdmin -cacheStop master2
    
  8. master1hostで、ttMigrateユーティリティを使用して、アクティブ・データベースをバイナリ・ファイルにバックアップします。
    ttMigrate -c master1 master1.bak
    
  9. master1hostで、ttDestroyユーティリティを使用してアクティブ・データベースを破棄します。-forceオプションを使用するか、最初にすべてのキャッシュ・グループを削除する必要があります。-forceを使用する場合は、後でスクリプトcacheCleanup.sqlを実行します。
    ttDestroy -force /data_store_path/master1
    

    cacheCleanup.sqlスクリプトはSQL*Plusスクリプトで、installation_dir/oraclescriptsディレクトリにあり(timesten_home/install/oraclescriptsからアクセスできます)、Oracleデータベースに接続した後にキャッシュ・ユーザーとして実行します。パラメータとして、ホスト名とデータベース名をフルパスを指定します。詳細は、Oracle TimesTen In-Memory Databaseキャッシュ・ガイド自動リフレッシュを使用したキャッシュ・グループで使用されているOracleデータベース・オブジェクトの削除を参照してください。

  10. 新しいメジャー・リリースの新しいインストール環境および新しいインスタンスをmaster1hostに作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  11. ttIsqlとDSN接続属性設定AutoCreate=1を使用して、22.1.w.xに新しいデータベースを作成します。この新しいデータベースでキャッシュ・ユーザーを作成します。次の例は、このキャッシュ・ユーザーを作成し、適切なアクセス権を付与するためにttIsqlで実行する一連のコマンドを示しています。

    次のステップのttMigrate -rを実行するには、キャッシュ・ユーザーにはADMIN権限が必要です。移行が完了したら、希望する場合は、このユーザーからADMIN権限を取り消します。

    Command> CREATE USER cacheuser IDENTIFIED BY cachepassword;
    Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE, 
             DROP ANY TABLE TO cacheuser;
    Command> GRANT ADMIN TO cacheuser;
    
  12. master1hostの新しいインスタンスで、キャッシュ・ユーザーとしてttMigrateユーティリティを使用して、前に作成したバイナリ・ファイルからmaster1をリストアします。(この例では、20MB分のデータがリストアされるたびにチェックポイント操作が実行されます。Oracle DatabaseでのパスワードはTimesTenと同じとします。)
    ttMigrate -r -cacheuid cacheuser -cachepwd cachepassword -C 20 -connstr
     "DSN=master1;uid=cacheuser;pwd=cachepassword;oraclepwd=cachepassword"
     master1.bak
    
  13. master1hostで、ttAdminを使用してレプリケーション・エージェントを開始します。
    ttAdmin -repStart master1

    ノート:

    また、このステップによりデータベースはアクティブ状態になります。ここでttRepStateGet組込みプロシージャ(パラメータなし)をコールして状態を確認できます。

  14. master1hostで、ttCacheStart組込みプロシージャをコールするか、ttAdminを使用してキャッシュ・エージェントを開始します。
    ttAdmin -cacheStart master1
    

    次に、ttStatusユーティリティを使用して、レプリケーションおよびキャッシュ・エージェントが開始されているかを確認できます。

  15. 各自動リフレッシュ・キャッシュ・グループをAUTOREFRESH PAUSED状態にします。この例では、ttIsqlを使用します。
    Command> ALTER CACHE GROUP mycachegroup SET AUTOREFRESH STATE paused;
    
  16. master1から、各キャッシュ・グループを再ロードし、キャッシュ・グループの名前と捜査中のコミットの頻度を指定します。この例では、ttIsqlを使用します。
    Command> LOAD CACHE GROUP cachegroupname COMMIT EVERY n ROWS;
    

    オプションとして、パラレル・ロードも指定できます。詳細は、Oracle TimesTen In-Memory Database SQLリファレンスLOAD CACHE GROUP SQL文を参照してください。

  17. master2hostで、ttDestroyユーティリティを使用してスタンバイ・データベースを破棄します。-forceオプションを使用するか、最初にすべてのキャッシュ・グループを削除する必要があります。-forceを使用する場合は、前述のように後でスクリプトcacheCleanup.sqlを実行します。
    ttDestroy -force /data_store_path/master2
    
  18. 新しいメジャー・リリースの新しいインストール環境および新しいインスタンスをmaster2hostに作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。
  19. master2hostの新しいインスタンスでttRepAdmin-duplicateオプションで使用し、アクティブ・データベースmaster1の複製を作成してスタンバイ・データベースmaster2として使用します。master1の適切な管理ユーザーを指定し、キャッシュ・マネージャのユーザーとパスワードを指定し、キャッシュ・グループを保持します。
    ttRepAdmin -duplicate -from master1 -host master1host -uid pat -pwd patpwd 
    -cacheUid orcluser -cachePwd orclpwd -keepCG master2
    
  20. master2hostで、ttAdminを使用してレプリケーション・エージェントを開始します。(かわりに、前のステップでttRepAdminオプションの-setMasterRepStartを使用できます。)
    ttAdmin -repStart master2
    
  21. master2で、レプリケーションの状態が自動的にSTANDBYに設定されます。ttRepStateGet組込みプロシージャをコールしてこれを確認できます。(非同期で実行され、少し時間がかかります。)
    call ttRepStateGet();
    
  22. master2hostで、ttCacheStart組込みプロシージャをコールするか、ttAdminを使用してキャッシュ・エージェントを開始します。
    ttAdmin -cacheStart master2
    

    その後、ttStatusユーティリティを使用して、レプリケーションおよびキャッシュ・エージェントが開始されているかを確認できます。

読取り専用のサブスクライバ・データベースを作成する場合は、各サブスクライバ・ホストで、ttRepAdminユーティリティの-duplicateオプションを使用して、スタンバイ・データベースを複製できます。次の例では、読取り専用のサブスクライバに適切なように、キャッシュ表を標準のTimesTen表に変換するため、前述の手順と同じADMINユーザーおよび-nokeepCGオプションを使用して、subscriber1を作成します。

ttRepAdmin -duplicate -from master2 -host master2host -nokeepCG 
-uid pat -pwd patpwd subscriber1

関連情報については、Oracle TimesTen In-Memory Databaseレプリケーション・ガイド障害時リカバリ・サブスクライバのローリング・アウトを参照してください。