概要:この文書では、統合データベースのバックアップ・バージョンからリモート・ユーザを抽出する方法を説明します。ここでの説明は、Adaptive
Server Anywhere (SQL Anywhere ) 7.x を対象にしていますが、他のバージョンの
Adaptive Server Anywhere (SQL Anywhere )にも適用できます。
以下では、統合データベースのバックアップ・バージョンからリモート・ユーザを抽出し、統合データベースをコピーするのに必要な時間までダウン・タイムを短縮する方法を説明します。
理由:
SQL Anywhere に付属のマニュアルでは、クワイエット・モードの統合データベースでリモート・データベースを抽出するように推奨しています。実際に、これは理想的な方法です。ただし、リモート・サイトの抽出のために
1、2 時間でも統合データベースをダウンさせることができない状況があります。この例として、抽出するリモート・サイト数が非常に多い組織
(統合データベースが長時間使用できなくなります) や、リモート・ユーザから絶えず更新される統合データベースでの最新データを使用してビジネス上の決定が行われるために、常時稼働させておく必要のある組織などがあります。
ここでは、subscribe by 句のある "MyPub" というパブリケーションを例にとって説明します。最初のリモート・ユーザは
'rem1' と 'rem2' で、それぞれの subscribe by の値は '1' と '2' です。
リモート・ユーザを抽出する際には、新しく作成したリモート・ユーザを抽出するか、既存のユーザを再抽出します。リモート・ユーザ
'rem1' を再抽出中で、'rem3' という新しいユーザを作成したものとします。次のコマンドを記述した
SQL スクリプトを用意します。
GRANT REMOTE TO 'rem1' TYPE FILE ADDRESS 'rem1.1';
REMOTE RESET 'rem1';
GRANT CONNECT to 'rem3';
GRANT REMOTE TO 'rem3' TYPE FILE ADDRESS 'rem3';
CREATE SUBSCRIPTION TO MyPub('3') FOR 'rem3';
REMOTE RESET 'rem3';
抽出するユーザがこれよりも多い場合は、このファイルで処理するリモート・ユーザをすべて追加します。
dbremote と、統合データベースに接続している他のすべてのプロセスを停止し、統合データベースを終了します。スタンドアロン・エンジン
(dbeng7) でデータベースを起動し、前述の SQL ファイルをデータベースに対して実行します。エンジンをもう一度終了し、データベース・ファイルをハードディスク上の別のディレクトリにコピーします。この処理の時間を短縮するため、マシン上の別の物理ドライブにファイルをコピーすることもできます。
ログ・ファイルは不要であるため、コピーしません。
データベースのコピーが終了したら、統合データベースを再起動し、dbremote
を実行します。使用されるアドレスが 'rem1' から 'rem1.1' に変更されたため、再抽出したユーザ
(rem1) 宛ての新しいメッセージはこのユーザに送信されるようになります。「古い」
rem1 データベースが「新しい」 rem1.1 データベース当てのメッセージを受信しないようにします。
次に、統合データベースを別のマシンにコピーします。この別のマシンでデータベース・エンジンを起動し、適当なときに 2 つのリモート・ユーザを再抽出します。多数のリモート・ユーザを操作する場合は、このデータベース・ファイルを複数のマシンにコピーし、別々のマシンで同時に複数の抽出を進めることができます。
次に、統合データベースを別のマシンにコピーします。この別のマシンでデータベース・エンジンを起動し、適当なときに
2 つのリモート・ユーザを再抽出します。多数のリモート・ユーザを操作する場合は、このデータベース・ファイルを複数のマシンにコピーし、別々のマシンで同時に複数の抽出を進めることができます。
|