アクティブ・スタンバイ・ペア内のキャッシュ・グループのレプリケート

読取り専用キャッシュ・グループまたはASYNCHRONOUS WRITETHROUGH (AWT)キャッシュ・グループをレプリケートするアクティブ・スタンバイ・ペアでは、フェイルオーバーおよびリカバリの一環としてキャッシュ・グループの役割を自動的に変更できます。これにより、データの損失を最小限に抑えてキャッシュ・インスタンスの高可用性を実現できます。

アクティブ・スタンバイ・ペア内でキャッシュ・グループを使用する利点を理解するには、「AWTキャッシュ・グループのレプリケート」および「読取り専用キャッシュ・グループのレプリケート」を参照してください。

ノート:

TimesTenでは、アクティブ・スタンバイ・ペアでのユーザー管理キャッシュ・グループまたはSYNCHRONOUS WRITETHROUGH (SWT)キャッシュ・グループのレプリケーションはサポートしていません。

次の項では、キャッシュ・グループを使用したアクティブ・スタンバイ・ペアの設定方法を説明します。

AWTキャッシュ・グループのアクティブ・スタンバイ・レプリケーションを設定するときに、特別な障害時リカバリ読取り専用サブスクライバを作成することもできます。この特別なサブスクライバはリモートの障害時リカバリ・サイトに配置されており、(同様に障害時リカバリ・サイトに配置されている)2番目のOracle Databaseに更新を伝播できます。「アクティブ・スタンバイ・ペアでの障害時リカバリ・サブスクライバの使用」を参照してください。

AWTキャッシュ・グループが構成されたアクティブ・スタンバイ・ペアの設定

アクティブ・スタンバイ・ペアのレプリケーション・スキームでは、すべてのAWTキャッシュ・グループをレプリケートする必要があります。アクティブ・スタンバイ・ペアのレプリケーション・スキームの作成前または後に、キャッシュ・グループをアクティブ・マスターに作成できます。

  • アクティブ・スタンバイ・ペアの作成前: アクティブ・スタンバイ・ペアのレプリケーション・スキームの作成前に、キャッシュ・グループをアクティブ・マスターに作成できます。その後、アクティブ・スタンバイ・ペアのレプリケーション・スキームを作成し、キャッシュ・グループを組み込むためのディストリビューションを実行します。AWTキャッシュ・グループを作成してからそれを新しいアクティブ・スタンバイ・ペア内に含める手順の詳細は、『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』TimesTen Classicでのキャッシュ表のレプリケートを参照してください。

  • アクティブ・スタンバイ・ペアの作成後: アクティブ・スタンバイ・ペアのレプリケーション・スキームの作成後に、キャッシュ・グループをアクティブ・マスターに作成できます。その後、キャッシュ・グループを含めるディストリビューションを実行します。「アクティブ・スタンバイ・ペアに対するその他の変更」を参照してください。

どちらの方法でも、キャッシュ・グループを含めるためのディストリビューションを実行した後に、キャッシュ・グループはアクティブ・スタンバイ・ペアのレプリケーション・スキームに追加されます。

読取り専用キャッシュ・グループが構成されたアクティブ・スタンバイ・ペアの設定

アクティブ・スタンバイ・ペアのレプリケーション・スキームでは、任意の読取り専用キャッシュ・グループをレプリケートするように選択できます。アクティブ・スタンバイ・ペアのレプリケーション・スキームの作成前または後に、キャッシュ・グループをアクティブ・マスターに作成できます。

どちらの方法でも、キャッシュ・グループを含めるためのディストリビューションを実行した後に、キャッシュ・グループはアクティブ・スタンバイ・ペアのレプリケーション・スキームに追加されます。

新しいアクティブ・スタンバイ・ペア内に含める読取り専用キャッシュ・グループの作成

読取り専用キャッシュ・グループ内のキャッシュ表をレプリケートする、アクティブ・スタンバイ・ペアを設定できます。

データベースを作成する前に、次の項の情報を参照してください。

ローカルの読取り専用キャッシュ・グループをレプリケートするアクティブ・スタンバイ・ペアを設定するには、次の手順を実行します。

  1. Oracle Databaseでキャッシュ管理ユーザーを作成します。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』Oracleデータベースでのユーザーの作成を参照してください。
  2. データベースを作成します。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』TimesTenデータベースのDSNの作成を参照してください。
  3. ttCacheUidPwdSet組込みプロシージャをコールして、キャッシュ管理ユーザーのIDおよびパスワードを設定します。『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』TimesTenデータベースでのキャッシュ管理ユーザー名およびパスワードの設定を参照してください。例:
    call ttCacheUidPwdSet('cacheadmin','orapwd');
  4. データベースでキャッシュ・エージェントを起動します。ttCacheStart組込みプロシージャまたはttAdmin -cachestartユーティリティを使用します。
    call ttCacheStart;
  5. CREATE CACHE GROUP文を使用して、読取り専用キャッシュ・グループを作成します。例:
    CREATE READONLY CACHE GROUP customer_orders
            AUTOREFRESH INTERVAL 5 SECONDS
            FROM sales.customer
            (cust_num NUMBER(6) NOT NULL,
             region VARCHAR2(10),
             name VARCHAR2(50),
             address VARCHAR2(100),
             PRIMARY KEY(cust_num)),
            sales.orders
            (ord_num NUMBER(10) NOT NULL,
             cust_num NUMBER(6) NOT NULL,
             when_placed DATE NOT NULL,
             when_shipped DATE NOT NULL,
             PRIMARY KEY(ord_num),
             FOREIGN KEY(cust_num) REFERENCES sales.customer(cust_num));
  6. AUTOREFRESH STATEがPAUSEDに設定されていることを確認します。キャッシュ・グループの作成後、デフォルトではAUTOREFRESH STATEはPAUSEDになっています。AUTOREFRESH STATEは、ttIsql cachegroupsコマンドを実行して確認できます。
    cachegroups;
  7. CREATE ACTIVE STANDBY PAIR文を使用して、レプリケーション・スキームを作成します。

    たとえば、master1およびmaster2がマスター・データベースとして定義され、sub1およびsub2がサブスクライバ・データベースとして定義されているとします。これらのデータベースは、node1node2node3およびnode4に存在しています。RETURNサービスはRETURN RECEIPTです。レプリケーション・スキームは、次のように指定できます。

    CREATE ACTIVE STANDBY PAIR master1 ON "node1", master2 ON "node2"
            RETURN RECEIPT
            SUBSCRIBER sub1 ON "node3", sub2 ON "node4"
            STORE master1 ON "node1" PORT 21000 TIMEOUT 30
            STORE master2 ON "node2" PORT 20000 TIMEOUT 30;
  8. ttRepStateSet組込みプロシージャをアクティブ・データベース(master1)でコールして、レプリケーション状態をACTIVEに設定します。例:
    call ttRepStateSet('ACTIVE');
  9. master1にレプリケーション・エージェント・ポリシーを設定し、レプリケーション・エージェントを起動します。「レプリケーション・エージェントの起動および停止」を参照してください。
  10. LOAD CACHE GROUP文を使用してキャッシュ・グループをロードします。これにより、自動リフレッシュ・プロセスが開始されます。例:
    LOAD CACHE GROUP customer_orders COMMIT EVERY 256 ROWS;
  11. インスタンス管理者として、アクティブ・データベース(master1)をスタンバイ・データベース(master2)に複製します。-keepCGオプションを指定してttRepAdmin -duplicateユーティリティを使用し、キャッシュ・グループを保持します。ttRepDuplicateEx C関数を使用してデータベースを複製することもできます。「データベースの複製」を参照してください。ttRepAdminによって、-uid-pwd-cacheuidおよび-cachepwdの値を入力するよう求められます。
    ttRepAdmin -duplicate -from master1 -host node1 -keepCG 
     -connStr "DSN=master2;UID=;PWD="
  12. master2にレプリケーション・エージェント・ポリシーを設定し、レプリケーション・エージェントを起動します。「レプリケーション・エージェントの起動および停止」を参照してください。
  13. スタンバイ・データベースは自動的にSTANDBY状態になります。master2STANDBY状態になるまで待機します。master2の状態を確認するには、ttRepStateGet組込みプロシージャをコールします。例:
    call ttRepStateGet;
  14. ttCacheStart組込みプロシージャまたはttAdmin -cacheStartユーティリティを使用して、master2のキャッシュ・エージェントを起動します。例:
    call ttCacheStart;
  15. インスタンス管理者として、サブスクライバ(sub1およびsub2)をスタンバイ・データベース(master2)から複製します。ttRepAdmin -duplicate-noKeepCGコマンドライン・オプションを使用し、サブスクライバでキャッシュ表を通常のTimesTen表に変換します。ttRepAdminによって-uidおよび-pwdの値を入力するよう要求されます。「データベースの複製」を参照してください。例:
    ttRepAdmin -duplicate -from master2 -host node2 -nokeepCG
     -connStr "DSN=sub1;UID=;PWD="
  16. サブスクライバでレプリケーション・エージェント・ポリシーを設定し、各サブスクライバ・データベースのレプリケーション・エージェントを起動します。「レプリケーション・エージェントの起動および停止」を参照してください。