データベースの複製

レプリケーション・スキームの設定またはリカバリの管理における共通のタスクは、データベースの複製です。ttRepAdminユーティリティの-duplicateオプションまたはttRepDuplicateEx C関数を使用して、データベースを複製します。

データベースを複製する場合は、次の条件を満たす必要があります。

  • インスタンス管理者が複製操作を実行します。

  • インスタンス管理者のユーザー名は、複製に含まれる両方のインスタンスで同じである必要があります。

  • ソース・データベースで、ADMIN権限があるユーザーのユーザー名とパスワードを入力する必要があります。

  • キャッシュ・グループを持つアクティブ・マスター・データベースを複製する場合は-keepCGオプションを使用し、キャッシュ管理ユーザー名およびパスワードを指定する必要があります。

  • ターゲットDSNにクライアント属性およびサーバー属性を含めることはできません。

ノート:

Preallocate属性を有効化すると、新しいデータベースに十分な領域があることを確認できます。有効な場合、複製中に新しいデータベースのデータベース・チェックポイント・ファイルにファイル・システムの領域が事前に割り当てられます。Oracle TimesTen In-Memory DatabaseリファレンスPreallocateを参照してください。

ソース・データベースで、次のように入力してユーザーを作成し、そのユーザーにADMIN権限を付与します。

Command> CREATE USER ttuser IDENTIFIED BY ttuser;
User created.

Command> GRANT ADMIN TO ttuser;

インスタンス管理者のユーザー名がtimestenであるとします。ターゲット・ホストでtimestenとしてログインし、次のようにhost1のデータベースdsn1dsn2に複製します。

ttRepAdmin -duplicate -from dsn1 -host host1 dsn2

Enter internal UID at the remote datastore with ADMIN privileges: ttuser 
Enter password of the internal Uid at the remote datastore:

リモート・データベースの内部ユーザーのパスワードを入力するよう要求されたら、ttuserと入力します。

『Oracle TimesTen In-Memory Databaseリファレンス』ttRepAdmin、および『Oracle TimesTen In-Memory Database C開発者ガイド』ttRepDuplicateExを参照してください。

次の項では、複製時のオプションについて説明します。

特定のネットワーク・インタフェースでの複製

データベースの複製が行われる特定のローカルまたはリモートのネットワーク・インタフェースを使用する場合は、オプションでネットワーク・インタフェースの別名またはIPアドレスを指定できます。

ソース・ホストとターゲット・ホストのローカルおよびリモートのネットワーク・インタフェースを指定するには、ttRepAdmin -duplicate-localIPオプションと-remoteIPオプションを使用します。一方または両方のネットワーク・インタフェースが指定されていない場合、TimesTen Classicによって選択されます。

キャッシュ・グループがある場合の複製

定義されているキャッシュ・グループが含まれるアクティブ・データベースを複製している場合は、-keepCGオプションを使用します。

また、-cacheUidおよび-cachePwdオプションを使用して、キャッシュ管理ユーザー名およびパスワードを指定する必要もあります。キャッシュ管理ユーザー・パスワードを指定しない場合、ttRepAdminによってパスワードが要求されます。キャッシュ管理ユーザー名がorauserで、パスワードがorapwdである場合、host1のデータベースdsn1を複製します。

ttRepAdmin -duplicate -from dsn1 -host host1 -keepCG 
 -connStr "DSN=dsn2;UID=;PWD="

Enter internal UID at the remote datastore with ADMIN privileges: ttuser 
Enter password of the internal Uid at the remote datastore:

パスワードを求めるプロンプトが表示されたら、ttuserと入力します。次に、ttRepAdminユーティリティにより、キャッシュ管理ユーザーとパスワードを求めるプロンプトが表示されます。

Enter cache administrator UID: orauser
Enter cache administrator password: 

キャッシュ管理パスワードを要求されたら、orapwdと入力します。

dsn2UIDおよびPWDは、インスタンス管理者である現在のOSユーザーとして接続が確立されるように、接続文字列でNULL値として指定されます。インスタンス管理者のみがttRepAdmin -duplicateを実行できます。dsn2PWDではなくPWDCryptで構成されている場合は、接続文字列がDSN=dsn2;UID=;PWDCrypt=となります。

キャッシュ・グループが構成されたスタンバイ・データベースを読取り専用サブスクライバに複製する場合は、-nokeepCGオプションを使用します。この例では、dsn2がスタンバイ・データベース、sub1が読取り専用サブスクライバです。

ttRepAdmin -duplicate -from dsn2 -host host2 -nokeepCG -connStr "DSN=sub1;UID=;PWD="

ttRepAdminユーティリティによって-uidおよび-pwdの値を入力するよう要求されます。

AWTキャッシュ・グループまたは増分自動リフレッシュを使用したキャッシュ・グループを含むレプリケーション・スキームの複製を実行中に、Oracleデータベースにアクセスできない場合(Oracleデータベースが停止しているか、接続できない場合)、ttRepAdmin -duplicateコマンドではAWTキャッシュ・グループまたは増分自動リフレッシュを使用したキャッシュ・グループが複製された後に、Oracleデータベース上の(AWTキャッシュ・グループおよび自動リフレッシュを使用したキャッシュ・グループを管理するためにキャッシュが使用する)メタデータを更新できません。この場合、次のいずれかのオプションを使用して複製を実行します。

  • すべてのAWTキャッシュ・グループまたは増分自動リフレッシュを使用したキャッシュ・グループがアクティブ・スタンバイ・ペアのレプリケーション・スキームに含まれている状況で、障害が発生したアクティブ・マスターまたはスタンバイ・マスターのいずれかをリカバリするためにttRepAdmin -duplicateを使用している場合は、-keepCG -recoveringNodeオプションを使用します。このオプションを使用する場合は、複製処理の間に発生する変更が追跡されるので、完全な自動リフレッシュを開始する必要がなくなります。

  • これを使用しない場合は、-keepCG -deferCacheUpdateオプションを使用します。このオプションでは完全な自動リフレッシュが開始されることがあります。

-keepCG -recoveringNodeオプションまたは-keepCG -deferCacheUpdateオプションを使用して複製処理を完了した後に、複製処理は正常に終了したがOracle Databaseメタデータへの更新は、キャッシュ・エージェントとレプリケーション・エージェントが起動するまで保留されるという警告メッセージが表示されます。したがって、複製処理が完了したら、新しいノードでキャッシュ・エージェントとレプリケーション・エージェントの両方を起動します。TimesTenのノード障害が次々に発生し、Oracle Databaseとの接続で問題が断続的に発生する場合、キャッシュ・エージェントとレプリケーション・エージェントを起動すると完全自動リフレッシュが開始されることがあります。