クラシック・レプリケーションを使用したオンライン・アップグレードの実行

この項では、TimesTenレプリケーション機能を使用して、データの継続使用が必要なアプリケーションのオンライン・アップグレードを実行する方法について説明します。

この手順は、一方向、双方向または複数方向のシナリオのクラシック・レプリケーション用です。

通常、データの高可用性が求められるアプリケーションでは、TimesTenレプリケーションを使用して、最新のデータベースのコピーを1つ以上保持しておきます。これらの2つのコピーの一方が更新中の場合にも、一方をアプリケーションで使用できるように保持することで、オンライン・アップグレードが機能します。この項で説明する手順は、Oracle TimesTen In-Memory Databaseレプリケーション・ガイド単方向レプリケーションまたは双方向レプリケーションの説明のとおり、2つのデータベースに対して双方向のレプリケーション・スキームが構成され、実行されていることを前提としています。

次の点に注意してください:

次の項では、レプリケーションを使用したオンライン・アップグレードの実行方法について説明します。

要件

レプリケーションを使用してオンライン・アップグレードを実行する場合は、静的ポートを使用するようにレプリケーションを構成する必要があります。詳細は、Oracle TimesTen In-Memory Databaseレプリケーション・ガイドポートの割当てを参照してください。

ttMigrateユーティリティを使用して作成したデータベースのバックアップ・コピーを格納するために、追加のディスク領域を割り当てる必要があります。通常、バックアップ・コピーのサイズは、使用中のデータベースのサイズとほぼ同じです。このサイズを確認するには、ttIsqlを使用してv$monitorビューを問い合せます。

Command> SELECT perm_in_use_size FROM v$monitor;

アップグレード・ステップ

次のステップは、レプリケーションの実行中にオンライン・アップグレードを実行する方法を示しています。アップグレード・ホストは、データベースのアップグレードが実行されているホストで、アクティブなホストは、アプリケーションが引き続き接続されるデータベースを含むホストです。

ステップ ホストのアップグレード アクティブなホスト

1.

静的ポートを使用してアクティブ・ホストにレプリケートされるように、レプリケーションを構成します。

静的ポートを使用してアップグレード・ホストにレプリケートされるように、レプリケーションを構成します。

2.

該当なし

すべてのアプリケーションをアクティブ・データベースに接続します(接続されていない場合)。

3.

アップグレードするデータベースからすべてのアプリケーションを切断します。

該当なし

4.

該当なし

アップグレード・ホストへのレプリケーションをPAUSE状態に設定します。

5.

アクティブ・ホストに更新が伝播されるまで待機します。

該当なし

6.

レプリケーションを停止します。

該当なし

7.

ttMigrate -cを使用してデータベースをバックアップし、ttDestroyを実行してデータベースを破棄します。

該当なし

8.

以前のリリースのTimesTenデーモンを停止します。

該当なし

9.

新しいリリースの新しいインストール環境および新しいインスタンスを作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。

該当なし

10.

新しいリリースのアップグレード後のデータベースのDSNを作成します。DSNの並列処理オプションを調整します。

該当なし

11.

ttMigrate -rを使用して、バックアップからデータベースをリストアします。

該当なし

12.

ttRepAdmin -receiver -resetを使用して、アクティブ・ホストへのレプリケーションをstopに設定した後start状態に設定し、レプリケーション・ブックマークおよびログを消去します。

該当なし

13.

レプリケーションを開始します。

該当なし

14.

該当なし

アップグレード・ホストへのレプリケーションをstart状態に設定し、レプリケーションの再開後、蓄積された更新が確実に伝播されるようにします。

15.

該当なし

レプリケーションを開始します。

16.

該当なし

すべての更新内容がアップグレード・ホストに伝播されるまで待機します。

17.

アップグレード後のデータベースにすべてのアプリケーションを再接続します。

該当なし

アップグレード・ホストで前述の手順が完了した後、同じステップを使用してアクティブなホストをアップグレードできます。

オンライン・アップグレードの例

この項では、双方向でレプリケートされている2つのデータベースのシナリオでオンライン・アップグレードを実行する手順について説明します。

ここでは、2つのホストを、アップグレード・ホスト(インスタンスとデータベースがアップグレードされる)およびアクティブ・ホスト(アップグレード期間中、操作可能でアプリケーションに接続される)と呼びます。手順が完了した後、同じステップを繰り返してアクティブ・ホストをアップグレードできます。ただし、アップグレードされたインスタンスを最初にテストするために、アクティブ・ホストの変換を遅延することもできます。

この例では、アップグレード・ホストは、サーバーupgradehost上のデータベースupgradeで構成されています。アクティブ・ホストは、サーバーactivehost上のデータベースactiveで構成されています。

以降のステップを記載の順に実行します。

ステップ ホストのアップグレード アクティブなホスト

1.

データベースがリリース間で通信できるように静的レプリケーション・ポート番号を設定し、ttIsqlを使用してレプリケーション・スキームrepschemeを変更します。

Command> call ttRepStop;

Command> ALTER REPLICATION repscheme ALTER STORE upgrade ON upgradehost SET PORT 40000 ALTER STORE active ON activehost SET PORT 40001;

Command> call ttRepStart;

データベースがリリース間で通信できるように静的レプリケーション・ポート番号を設定し、ttIsqlを使用してレプリケーション・スキームrepschemeを変更します。

Command> call ttRepStop;

Command> ALTER REPLICATION repscheme ALTER STORE upgrade ON upgradehost SET PORT 40000 ALTER STORE active ON activehost SET PORT 40001;

Command> call ttRepStart;

2.

データベースに接続されているすべての本番アプリケーションを切断します。アップグレード・ホストで実行されているワークロードが、かわりにアクティブ・ホストで実行を開始する必要があります。

ttRepAdminユーティリティを使用して、データベースactiveからデータベースupgradeへのレプリケーションを一時停止します。

ttRepAdmin -receiver -name upgrade
 -state pause active

このコマンドにより、データベースactiveからデータベースupgradeへの更新のレプリケーションは一時的に停止されますが、activeに対する更新内容はデータベースのトランザクション・ログ・ファイルに保存されます。アップグレード手順の実行中にactiveに対して行われた更新は、後でupgradeが再起動されたときに適用されます。

詳細は、Oracle TimesTen In-Memory Databaseレプリケーション・ガイドサブスクライバのレプリケーション状態の設定を参照してください。

3.

データベースactiveに送信されるすべてのレプリケーションの更新を待機します。データベースupgradeで、更新の確認用として予約されている表に認識可能な更新を適用することで、更新がすべて送信されたことを確認できます。データベースactiveに更新が適用されると、すべての以前の更新が送信されたことになります。

たとえば、ttRepSubscriberWait組込みプロシージャをコールします。タイムアウトではなくクリーンな応答があったことを示す値<00>が返されることを予期する必要があります。(タイムアウトがあった場合、ttRepSubscriberWaitは値01を返します。)

Command> call ttRepSubscriberWait (,,,,60);
< 00 >
1 row found.

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

該当なし

4.

ttAdminを使用して、レプリケーション・エージェントを停止します。

ttAdmin -repStop upgrade

これ以降、データベースactiveに更新は送信されません。

ttAdminを使用して、レプリケーション・エージェントを停止します。

ttAdmin -repStop active

これ以降、データベースupgradeに更新は送信されません。

詳細は、 Oracle TimesTen In-Memory Databaseレプリケーション・ガイドレプリケーション・エージェントの起動および停止を参照してください。

5.

ttMigrateを使用して、データベースupgradeをバックアップします。データベースが非常に大規模な場合は、このステップに長時間かかる可能性があります。/backupファイル・ホストに十分なディスク領域の空きがある場合は、次のttMigrateコマンドを使用します。

ttMigrate -c upgrade /backup/upgrade.dat

該当なし

6.

ttMigrateコマンドが正常に実行された場合、データベースupgradeを破棄します。

ttDestroy upgrade

データベースactiveのレプリケーション・エージェントを再開します。

ttAdmin -repStart active

7.

新しいリリースの新しいインストール環境および新しいインスタンスを作成します。詳細は、Linux/UNIXでのインストール環境の作成およびLinux/UNIXでのインスタンスの作成: 基本を参照してください。

レプリケーション状態をstartに設定して、activeからupgradeへのレプリケーションを再開します。

ttRepAdmin -receiver -name upgrade
 -start start active

8.

ttMigrateを使用して、ステップ5で作成したバックアップを新しいリリースのデータベースupgradeにロードします。

ttMigrate -r upgrade /backup/upgrade.dat
ramPolicymanualに変更します(ramPolicyはデフォルトでinUseに設定されています)。
ttAdmin -ramPolicy manual upgrade
ttAdmin -ramLoad upgrade

ノート: このステップでは、アップグレード先の新しいリリースに含まれているttMigrateユーティリティを使用する必要があります。

該当なし

9.

ttRepAdminを使用して、データベースactiveの受信側の状態を再設定し、レプリケーションをstop状態に設定した後start状態に設定することで、レプリケーション・ブックマークおよびログを消去します。

ttRepAdmin -receiver -name active
   -reset upgrade
ttRepAdmin -receiver -name active
   -state stop upgrade
sleep 10
ttRepAdmin -receiver -name active
   -state start upgrade
sleep 10

ノート: リソースやオペレーティング・システムによっては、状態の変更に最大で10秒かかるものもあるため、それぞれの状態が確実に有効になるようにsleepコマンドを使用しています。

該当なし

10.

ttAdminを使用して、新しいデータベースupgradeのレプリケーション・エージェントを開始し、データベースactiveへの更新の送信を開始します。

ttAdmin -repStart upgrade

該当なし

11.

データベースupgradeがデータベースactiveから更新を受信するかを確認します。データベースactiveで、更新の確認用として予約されている表に認識可能な更新を適用することで、更新が送信されたことを確認できます。upgradeに更新が適用されると、レプリケーションが動作していることになります。

アプリケーションがデータベースactiveで実行中の場合は、データベースupgradeの移行が正常に終了し、更新がactiveからupgradeに正しくレプリケートされたことを確認するまで、そのまま実行しておきます。

12.

該当なし

更新が正常にレプリケートされていることを確認したら、すべてのアプリケーションをデータベースactiveから切断し、データベースupgradeに再接続できます。activeからの最後の更新がupgradeにレプリケートされたことを確認した後、activeのインスタンスはアップグレード可能となります。

ノート: 新しいリリースのデータベースupgradeで十分なテストが実行されるまで、新しいリリースへのactiveのインスタンスのアップグレードを遅延できます。アクティブになっているインスタンスを新しいリリースにアップグレードする準備ができたら、詳細についてアクティブ・マスターのオンライン・パッチ・アップグレードのステップに従ってください。