データベースの分散スキームの設定または変更(dbDistribute)

dbDistributeコマンドは、データベースの分散マップでデータベースの要素を追加、削除、除外および置換した後、要素間にデータを分散または再分散できます。変更を適用しデータを再配布するには、常に-applyを使用する必要があります。これは、同じコマンドまたは別のコマンドのいずれかで実行できます。

ttGridAdmin dbDistribute name 
         [-list]
         [-add all | hostname[.instancename]]
         [-remove hostname[.instancename] [-replaceWith hostname[.instancename]]]
         [-evict hostname[.instancename] [-replaceWith hostname[.instancename]]]
         [-apply|-reset|-resync]

dbDistributeを使用する前に、操作を実行するすべてのインスタンスに要素がロードされるまで待機します。dbStatusコマンドを使用すると、これを確認できます。

詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』「データベースの分散マップの定義」を参照してください。

オプション

dbDistributeコマンドには、次のオプションがあります。

オプション 説明

name

データ分散変更の対象となるデータベースの名前。

-add all | hostname[.instancename]

分散マップに要素を追加します。グリッドにある既存のすべての要素か、指定したインスタンスにある要素のいずれかです。(インスタンスが停止しているために要素が作成されなかった場合、-add allでは要素の追加は試みられません。その要素はまだ存在しません。)

用途ごとに1つのインスタンスを指定しますが、-addはコマンドラインで複数回使用できます。

追加が適用されると、データはグリッド全体に均等に分散されます。

ノート:

  • -add allを使用する場合は、同じコマンドで-applyを使用する必要があります。

  • -applyを発行するまで、要素は追加対象としてマークされますが、実際にはまだ追加されていません。

また、このオプションと、hostname[.instancename]を取るその他のオプションについては、次の「ノート」も参照してください。

-remove hostname[.instancename]

このオプションは、古いホスト・システムを新しいものと置き換えるなど、要素を削除し、必要に応じて置換する場合に使用します。また、次の「ノート」も参照してください。

用途ごとに1つのインスタンスを指定しますが、-removeはコマンドラインで複数回使用できます。

通常は、-replaceWithを使用して要素を置き換えます。-replaceWithなしで-removeオプションを指定すると、データが再分散されます。

k=2のグリッドがある場合に、レプリカ・セットのある要素を削除したときは、それを置き換えるか、レプリカ・セットの他の要素も削除する必要があります。

ノート: -applyを発行するまで、要素は削除対象としてマークされますが、実際にはまだ削除されていません。

『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』「データベース内のデータの再分散」も参照してください。

-evict hostname[.instancename]

このオプションは、レプリカ・セットのすべての要素(k=1の場合は1つの要素、k=2の場合は2つの要素)にリカバリ不能な障害があり、修復できない場合に使用します。

重要: -evictオプションを使用すると、データの損失は避けられません。最後の手段としてのみ使用してください。

用途ごとに1つのインスタンスを指定しますが、-evictはコマンドラインで複数回使用できます。

-evictを使用する場合は、レプリカ・セット内のすべての要素を除外する必要があります。

-replaceWithを使用して要素を置き換えることができます。

ノート:

  • -evictを-addまたは-removeと一緒に発行または適用しないでください。

  • -applyを発行するまで、要素は除外対象としてマークされますが、実際にはまだ除外されていません。

  • 除外すると、要素が強制的にアンロードされます。

詳細は、次の「ノート」も参照してください。

詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』「データベース内のデータの再分散」を参照してください。

-replaceWith hostname[.instancename]

必要に応じて、指定した置換に同じデータを含めるには、これを-evictまたは-removeとともに使用します。置換後のインスタンスの要素は、以前に分散に追加されていない必要があります。

-replaceWithオプションは、コマンドラインで対応する-removeオプションまたは-evictオプションのすぐ後に続ける必要があります。

-list

データベースの現在および保留中の分散マップを表示します(それぞれ「Holds Data」および「Will Hold Data」)。

-apply

データベースに新しい分散を適用します。このオプションを単独で使用して、以前のコマンドから設定を適用したり、同じコマンドラインにその設定を指定できます。

-reset

まだ適用されていないすべての分散設定を破棄します。このオプションは他のオプションと組み合せることはできません。

ノート: 分散(-apply)の進行中に、-resetは使用できません。必要に応じて、かわりに-resyncを試行できます。

-resync

dbDistribute -applyコマンドの状態が不明な場合に、アクティブな管理インスタンスのメタデータでユーザー・データベース内のメタデータを再同期化することが試みられます。たとえば、ユーザー・データベースと管理インスタンスは、通信の失敗または損失が原因で状態が一致していない可能性があります。場合によっては、管理インスタンスがデータ・インスタンスに対するdbDistribute操作の成功または失敗を認識できず、中間状態のままになることがあります。

このオプションは他のdbDistributeオプションとともに使用できません。

関連情報については、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』「データ分散エラーからのリカバリ」を参照してください。

ノート: -resyncオプションを指定すると、管理インスタンスのメタデータが読み取られ、進行中でコミットもロールバックもされていないdbDistribute操作があるかどうかが確認されます。再同期化には、(管理インスタンスに記録される) dbDistribute操作によるメタデータの変更のコミットまたはロールバックが含まれる場合があります。

この例では、分散マップにグリッド内のすべての要素を追加し、要素間でデータを分散します。

% ttGridAdmin dbDistribute database1 -add all -apply
Distribution map updated

その後、-listオプションを使用して、グリッド内の要素(データを保持できる要素)の分散マップを表示できます。

% ttGridAdmin dbDistribute database11 -list
Distribution Map version: 1
RS Host        Instance  Holds Data Will Hold Data Removed Evicted
-- ----------- --------- ---------- -------------- ------- -------
 1  mysys3host griddata1          Y              Y       N       N
 1  mysys4host griddata2          Y              Y       N       N
 2  mysys5host griddata3          Y              Y       N       N
 2  mysys6host griddata4          Y              Y       N       N

ここで、レプリカ・セット1の両方の要素を削除します。-listの出力を再度参照すると、その2つの要素がグリッドから削除され、そのためにデータを保持できないことが示されています。

% ttGridAdmin dbDistribute database1 -remove mysys3host.griddata1
Element mysys3host.griddata1 is removed
Distribution map change enqueued
% ttGridAdmin dbDistribute database1 -remove mysys4host.griddata2
Element mysys4host.griddata2 is removed
Distribution map change enqueued
% ttGridAdmin dbDistribute database1 -apply
Distribution map updated

% ttGridAdmin dbDistribute database1 -list
Distribution Map version: 3
RS   Host        Instance  Holds Data Will Hold Data Removed Evicted
---- ----------- --------- ---------- -------------- ------- -------
NULL  mysys3host griddata1          N              N       Y       N
NULL  mysys4host griddata2          N              N       Y       N
   1  mysys5host griddata3          Y              Y       N       N
   1  mysys6host griddata4          Y              Y       N       N

次に、2つの要素(同じレプリカ・セットのもの)を除外する新しい例を示します。-listの出力を参照すると、2つの要素がグリッドから除外され、そのためにデータを保持できないことが示されています。

% ttGridAdmin dbDistribute database1 -evict mysys3host.griddata1 -evict
mysys4host.griddata2 -apply
Distribution map updated
 
% ttGridAdmin dbDistribute database1 -list
Distribution Map version: 2
RS   Host       Instance  Holds Data Will Hold Data Removed Evicted
---- ---------- --------- ---------- -------------- ------- -------
NULL mysys3host griddata1          N              N       N       Y
NULL mysys4host griddata2          N              N       N       Y
   1 mysys5host griddata3          Y              Y       N       N
   1 mysys6host griddata4          Y              Y       N       N

この例では、-resyncオプションを指定してデータ分散操作が正常に完了します。

% ttGridAdmin dbDistribute database1 -apply
...

(処理が失敗したか、中断された。)

% ttGridAdmin dbDistribute database1 -resync
Distributiom map updated

この例では、-resyncオプションを指定してデータ分散操作がロールバックします。

% ttGridAdmin dbDistribute database1 -apply
...

(処理が失敗したか、中断された。)

% ttGridAdmin dbDistribute database1 -resync
Distributiom map Rolled Back

ノート

  • -listおよび-resyncは、分散の進行中に使用できます。分散が進行中の場合、他の操作は失敗します。

  • 要素を指定するには、そのインスタンスをhostname[.instancename]として表現します。ホスト名は必須です。インスタンス名は、ホストにインスタンスが複数ある場合にのみ必須です。(「グリッド・オブジェクトとオブジェクト・ネーミング」を参照してください。)

  • 各レプリカ・セットに存在する要素を確認する必要がある場合は、-replicaSetオプションを指定したdbStatusコマンドを使用します。

  • 要素が分散から削除または除外された後にできることは、dbDestroy -instanceでそれを削除することのみとなります。これを可能なかぎり早く実行して、その要素が使用していたディスク領域を再利用できるようにすることをお薦めします。インスタンスを後で再度使用する場合は、dbCreate -instanceで要素を再作成して、分散に追加する必要があります。

  • k=2で、レプリカ・セットのいずれかの要素にリカバリ不能な障害がある場合は、-removeおよび-replaceWithを使用して、レプリカ・セットが再度完全に動作するようにします。アクティブなレプリカが使用可能なときは、-evictを使用しないでください。

  • レプリカ・セットのすべての要素が停止している場合は、グローバル操作を実行できません。レプリカ・セットのいずれかの要素をリカバリできない場合、レプリカ・セットからその要素を除外すると、グローバル操作を再度実行できるようになります。ただし、データは完全に失われます。

  • -replaceWithではなく-addを使用して、除外されたレプリカ・セットの要素を置き換えることもできますが、いずれにしても、除外されたレプリカ・セットのデータは失われます。また、-addを指定した場合はデータの再分散が発生しますが、-replaceWith (-evictまたは-removeのいずれかで使用)を指定した場合は発生しません。詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』「レプリカ・セットに永続的な障害が発生した要素がある場合のリカバリ」を参照してください。

  • 障害モードの詳細および考慮事項は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』「障害からのリカバリ」を参照してください。