複数のデータベースの同時作成を効率化する場合は、このプロシージャを使用します。
前提条件
SYS_REPLICATION_ADMIN_ROLE システムロールが必要です。
統合データベースのコピーを作成し、統合データベースからリモートユーザのサブスクリプションを開始します。次に例を示します。
統合データベースと SQL Remote Message Agent (実行されている場合) を停止します。
dbeng16 と異なるサーバ名を使用して統合データベースのローカルコピーを開始して、他のプロセスがローカルコピーに接続していないことを確認します。
サブスクリプションを開始します。
統合データベースのコピー作成と同時に、サブスクリプションを開始する必要があります。データベースのコピー作成とサブスクリプション開始の間に発生したオペレーションはすべて失われ、これが原因でリモートデータベースでのエラーが発生する恐れがあります。統合データベースでサブスクリプションを開始すると、サブスクライバのデータベースがまだ存在しない場合でも、メッセージをパッケージしてサブスクライバに送信できます。
1 つのトランザクション内でいくつかのサブスクリプションを開始するには、REMOTE RESET 文を使用します。
ただちに統合データベースを停止します。
統合データベースをコピーします。
デフォルトでは、抽出ユーティリティ (dbxtract) とデータベース抽出ウィザードはともに、独立性レベル 3 で実行されます。この独立性レベルでは、抽出されたデータベース内のデータは、データベースサーバのデータと一致しますが、他のユーザがデータベースを使用できなくなる場合があります。統合データベースのコピーに対してリモートデータベースを抽出することをおすすめします。
統合データベースを再起動します。統合データベースで SQL Remote Message Agent が実行されていた場合は、SQL Remote Message Agent も再起動します。
統合データベースのコピーからリモートデータベースのスキーマを抽出します。データベースはコピーであるため、ロックと同時性の問題は発生しません。ただし、多数のリモートデータベースがある場合は、この処理に時間がかかることがあります。
リモートデータベースのスキーマを抽出する場合、次のオプションを選択します。
リモートデータベースのスキーマのみを抽出する。
デフォルトでは、抽出ユーティリティ (dbxtract) とデータベース抽出ウィザードはともに、各ユーザ用のスキーマとデータを含め、一度にデータベースを 1 つだけ処理します。ただし、ほとんどの配備シナリオでは、各リモートデータベースで使用するデータは異なりますが、スキーマは同じです。抽出ユーティリティ (dbxtract) またはデータベース抽出ウィザードを使用してユーザごとにスキーマとデータの両方を抽出すると、同じスキーマが繰り返し抽出されることになります。抽出ユーティリティ (dbxtract)の -n オプションを参照してください。
プライマリキーを基準にデータを順序付ける。
デフォルトでは、各テーブルのデータはプライマリキーを基準に順序付けられます。データがプライマリキーを基準に順序付けられると、リモートデータベースへのデータのロード処理が高速になります。抽出ユーティリティ (dbxtract)の -u オプションを参照してください。
reload.sql ファイルを使用して空のリモートデータベースを作成します。このデータベースファイルをコピーして必要な数のリモートデータベースを作成します。
リモートデータベースごとに、各リモートユーザに固有の SQL Remote 定義を定義します。
リモートユーザごとに、統合データベースからユーザに対応するデータのみを抽出します。抽出ユーティリティ (dbxtract)の -d オプションを参照してください。
各リモートユーザのデータを対応するリモートデータベースにロードします。
各リモートデータベースが作成されると、その情報はライブ統合データベースより古いものになります。
しかし、SQL Remote Message Agent (dbremote) を実行すると、各ユーザはライブ統合データベースから送信されたメッセージを受信して適用し、そのリモートデータベースを最新の情報に更新できます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |