このレッスンでは、統合データベースとリモートデータベースにデータを追加し、SQL Remote を実行して変更をレプリケートし、両方のデータベースでデータが一致していることを確認します。
現在、統合データベース (cons) に接続されていない場合は、次のコマンドを実行します。
dbisql -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql" |
統合データベース (cons) で次の文を実行し、追加サンプルデータを従業員テーブルに追加します。
INSERT INTO employees (first_name, last_name) VALUES ('Javier', 'Spoor'); COMMIT; |
Interactive SQL との接続を切断します。
現在、リモートデータベース (rem) に接続されていない場合は、次のコマンドを実行します。
dbisql -c "SERVER=rem;DBN=rem;UID=DBA;PWD=sql" |
リモートデータベース (rem) で次の文を実行し、追加サンプルデータを従業員テーブルに追加します。
INSERT INTO employees (first_name, last_name) VALUES ('Nelson', 'Kreitzer'); COMMIT; |
Interactive SQL との接続を切断します。
統合データベース (cons) で、Message Agent を実行します。
dbremote -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql" -qc -v -o c:\tutorial\cons1.txt |
これにより、統合データベース (cons) のトランザクションログがスキャンされ、FILE メッセージシステムを使用してリモートデータベース (rem) のメッセージが生成されます。デバッグメッセージシステムパラメーターは、統合データベースの FILE メッセージシステム用に設定されているため、c:\tutorial\cons1.txt ファイルを見て、メッセージがc:\tutorial\messages\rem ディレクトリに書き込まれていることを示すデバッグメッセージがあることを確認できます。次に例を示します。
I. 2011-04-12 09:33:03. Processing transactions from active transaction log I. 2011-04-12 09:33:03. Sending message to "rem" (0-0000000000-0000550994-0) I. 2011-04-12 09:33:03. sopen "c:\tutorial\messages\rem\cons.0" I. 2011-04-12 09:33:03. write " c:\tutorial\messages\rem\cons.0" I. 2011-04-12 09:33:03. close " c:\tutorial\messages\rem\cons.0" |
リモートデータベース (rem) で、Message Agent を実行します。
dbremote -c "SERVER=rem;DBN=rem;UID=DBA;PWD=sql" -qc -v -o c:\tutorial\rem.txt |
このコマンドは、HTTP メッセージシステムを使用して、統合データベースで生成されたばかりのメッセージを受信して適用します。次に、トランザクションログをスキャンし、メッセージをリモートデータベースに追加された新しいローとともに統合データベースに送り返します。デバッグメッセージシステムパラメーターは、リモートデータベースの HTTP メッセージシステム用に設定されているため、c:\tutorial\rem.txt ファイルを見て、HTTP メッセージシステムが使用されていることを示すデバッグメッセージがあることを確認できます。次に例を示します。
I. 2011-04-12 09:34:03. Sending message to "cons" (0-0000000000-0000576448-0) I. 2011-04-12 09:34:03. HTTPWriteMessage "rem.0" I. 2011-04-12 09:34:03. HTTPWriteMessage: success -- filename "rem.0" I. 2011-04-12 09:34:03. HTTPDisconnect |
また、RSOE が生成した出力ファイルを見て、その情報がログに印刷されていることを確認することにより、要求が Relay Server を通過したことを確認できます。
I. 2011-04-12 09:34:03. <UpChannel-0000> PacketRead packet-len:257 I. 2011-04-12 09:34:03. <UpChannel-0000> PacketRead packet-opcode:0xf004 I. 2011-04-12 09:34:03. <UpChannel-0000> packet read.. I. 2011-04-12 09:34:03. <UpChannel-0000> successful packet read.. processing it.. I. 2011-04-12 09:34:03. <UpChannel-0000> 259 RS_CLI_SESSION_BEGIN(snum=0006 sfp=4e0e5291 ridx=0) I. 2011-04-12 09:34:03. <UpChannel-0000> Notifying worker thread |
統合データベース (cons) で、Message Agent を実行します。
dbremote -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql" -qc -v -o c:\tutorial\cons2.txt |
このコマンドは、FILE ベースのメッセージシステムを使用してリモートデータベースによって生成されたばかりのメッセージを受信して適用します。
現在、統合データベース (cons) に接続されていない場合は、次のコマンドを実行します。
dbisql -c "SERVER=cons;DBN=cons;UID=DBA;PWD=sql" |
統合データベースに 4 ローのデータがすべて含まれていることを確認するには、次の文を実行して従業員テーブルの内容を表示します。
SELECT * FROM employees; |
クエリは、従業員テーブルから次のデータを返します。ただし、hire_date カラムには、次のテーブルにある値ではなく、そのローを挿入した時間が記載されます。
employee_id | first_name | last_name | hire_date |
---|---|---|---|
1 | Kelly | Meloy | 2011-03-25 08:27:56.310 |
2 | Melisa | Boysen | 2011-03-25 08:27:56.310 |
3 | Javier | Spoor | 2011-03-25 08:30:26.110 |
102000001 | Nelson | Kreitzer | 2011-03-25 08:31:51.970 |
Interactive SQL との接続を切断します。
現在、リモートデータベース (rem) に接続されていない場合は、次のコマンドを実行します。
dbisql -c "SERVER=rem;DBN=rem;UID=DBA;PWD=sql" |
次の文を実行して従業員テーブルの内容を表示することにより、リモートデータベース (rem) に 4 ローのデータがすべて含まれていることを確認します。
SELECT * FROM employees; |
クエリは、従業員テーブルから次のデータを返します。ただし、hire_date カラムには、次のテーブルにあるデータではなく、そのローを挿入した時間が記載されます。
employee_id | first_name | last_name | hire_date |
---|---|---|---|
1 | Kelly | Meloy | 2011-03-25 08:27:56.310 |
2 | Melisa | Boysen | 2011-03-25 08:27:56.310 |
3 | Javier | Spoor | 2011-03-25 08:30:26.110 |
102000001 | Nelson | Kreitzer | 2011-03-25 08:31:51.970 |
Interactive SQL との接続を切断します。
レッスン 6:クリーンアップに進みます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |