ヘッダーをスキップ
Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド
リリース7.0
E05169-02
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

スクリプトによるレプリケーション・スキームの作成

レプリケーション・スキームをスクリプトで作成すると、時間の節約および誤りの回避に有効です。この項では、Perlを使用してレプリケーション・スキームの作成を自動化する場合の推奨事項をいくつか示します。

例3.32に示す一般ワークロードの双方向スキームについて考えてみます。5つの表repl.accountsrepl.salesrepl.ordersrepl.inventoryおよびrepl.customerへのELEMENT記述への入力を手動で行うと、時間がかかり、エラーも発生しやすくなります。

例3.32

CREATE REPLICATION repl.bigscheme

ELEMENT elem_accounts_1 TABLE repl.accounts

   MASTER westds ON "westcoast"

   SUBSCRIBER eastds ON "eastcoast"

ELEMENT elem_accounts_2 TABLE repl.accounts

   MASTER eastds ON "eastcoast"

   SUBSCRIBER westds ON "westcoast"

ELEMENT elem_sales_1 TABLE repl.sales

   MASTER westds ON "westcoast"

   SUBSCRIBER eastds ON "eastcoast"

ELEMENT elem_sales_2 TABLE repl.sales

   MASTER eastds ON "eastcoast"

   SUBSCRIBER westds ON "westcoast"

ELEMENT elem_orders_1 TABLE repl.orders

   MASTER westds ON "westcoast"

   SUBSCRIBER eastds ON "eastcoast"

ELEMENT elem_orders_2 TABLE repl.orders

   MASTER eastds ON "eastcoast"

   SUBSCRIBER westds ON "westcoast"

ELEMENT elem_inventory_1 TABLE repl.inventory

   MASTER westds ON "westcoast"

   SUBSCRIBER eastds ON "eastcoast"

ELEMENT elem_inventory_2 TABLE repl.inventory

   MASTER eastds ON "eastcoast"

   SUBSCRIBER westds ON "westcoast"

ELEMENT elem_customers_1 TABLE repl.customers

   MASTER westds ON "westcoast"

   SUBSCRIBER eastds ON "eastcoast"

ELEMENT elem_customers_2 TABLE repl.customers

   MASTER eastds ON "eastcoast"

   SUBSCRIBER westds ON "westcoast";

多くの場合、スクリプトを使用してレプリケーション・スキームの作成プロセスを自動化するとより効率的です。たとえば、例3.33に示すPerlスクリプトを使用して、例3.32に示したスキームを作成できます。

例3.33

@tables = qw(

   repl.accounts

   repl.sales

   repl.orders

   repl.inventory

   repl.customers

);

print "CREATE REPLICATION repl.bigscheme";

foreach $table (@tables) {

  $element = $table;

  $element =~ s/repl\./elem\_/;

  print "\n";

  print " ELEMENT $element\_1 TABLE $table\n";

  print "   MASTER westds ON \"westcoast\"\n";

  print "   SUBSCRIBER eastds ON \"eastcoast\"\n";

  print " ELEMENT $element\_2 TABLE $table\n";

  print "   MASTER eastds ON \"eastcoast\"\n";

  print "   SUBSCRIBER westds ON \"westcoast\"";

}

print ";\n";

例3.33の@tables配列は、データ・ストアなどの他のソースから取得できます。たとえば、Perl文でttIsql文およびgrepを使用して、所有者名がreplWestDSNデータ・ストア内のすべての表に対して@tables配列を生成できます。

@tables = `ttIsql -e "tables; quit" WestDSN

           | grep " REPL\."`;

例3.34に、WestDSNデータ・ストア内のすべてのrepl表に対してレプリケーション・スキームを作成する例3.33のスクリプトの変更バージョンを示します。(grep出力から余分な空白および改行を削除するには、置換を行う必要があります。)

例3.34

@tables = `ttIsql -e "tables; quit" WestDSN

           | grep " REPL\."`;

print "CREATE REPLICATION repl.bigscheme";

foreach $table (@tables) {

  $table =~ s/^\s*//;   # Remove extra spaces

  $table =~ s/\n//;     # Remove line feeds

  $element = $table;

  $element =~ s/repl\./elem\_/;

  print "\n";

  print " ELEMENT $element\_1 TABLE $table\n";

  print "   MASTER westds ON \"westcoast\"\n";

  print "   SUBSCRIBER eastds ON \"eastcoast\"\n";

  print " ELEMENT $element\_2 TABLE $table\n";

  print "   MASTER eastds ON \"eastcoast\"\n";

  print "   SUBSCRIBER westds ON \"westcoast\"";

}

print ";\n";