DB2 V10、 Linuxで環境構築を行っています。
どうしてもわからない事があり、質問します。

2台のサーバ(同一構成)があり、
それぞれに存在するDBの内容を同期したいと思っています。

マニュアルやWebサイトでの情報から、SQLレプリケーションが使用できそうな気がするのですが、
1点わかりません。

双方向でレプリケーションは可能でしょうか?(更新情報の重複は発生しない前提です。)

データの更新頻度は常に行われるものではないので、
ある程度の間隔でレプリケーションを実行するようにすれば、
データ紛失リスクを許容しようと思っています。

もし参考URL等あれば、、それも教えて頂きたいです。


どなたかアドバイスを頂ければと思います。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

仕組みが違うと思うけど、、、update-anywhere configuration みたいなことがやりたいのかな?


http://froebe.net/blog/wp-content/uploads/2013/0 …
レファレンスのp48(pdfのp56)あたりから書いてあるような気がします。
日本語だとV10のレファレンスが見つからないけど、v8でも同じようなことが書いてあるみたいです。
ftp://public.dhe.ibm.com/ps/products/db2/info/vr …
p55~

いくらするのかわからないけど、このような方法もあるみたいです。
http://www.ibm.com/developerworks/data/library/t …

全くの素人なんで、大いなる勘違い等ございましたらご容赦ください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
該当のURL(ftp:~)を参照しました。
なるべくお金をかけたくないので、どこまでできるか、試してみようと思います。
ありがとうございました。

お礼日時:2016/05/16 13:28

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QストアドプロシジャーでDBの自動更新

お世話になります、

現在Oracleを使用してSystemを構築しているのですが、
あるテーブル(更新日付マスタ)をみてその時刻になったら
自動であるテーブルにアップデートを行いたいのですが
ストアドプロシジャーで組むのでしょうか?

具体的には、ある時刻になると、Oracleが勝手にあるテーブルに対してUpdataを行ってくれるような仕組みを探しています。

よろしくお願いします。

Aベストアンサー

オラクルに限らず、次のような方法で可能です。
プログラムでもシェルスクリプトでもなんでもいいので、OS上のコマンドを
実行すると、該当のテーブルの更新が始まる仕組みを作ります。
UNIX 系なら cron / NT なら AT コマンドでそのOSのコマンドをスケジュール
して実行する。

QDB2の更新ロックについて

DB2 v7を使用しています。
select文で更新ロックをかけました。
PreparedStatementとresultsetをcloseした後、同Connectionでupdate文をかけました。
このとき、select文のロックがかかってるのかわかりませんが、エラーも出ずに更新ができませんでした。
更新ロックのかけ方は 普通のselect文の最後に for updateとしただけです。updateは普通にupdateを行いました。

現在の状況としては、更新ロックがかかっているのかどうかわからないという状態です。
そこで、
(1)更新ロックがかかっているのかどうかを調べる方法があれば、その方法が知りたい。
(2)更新ロックの解除の方法をしりたい。
(3)select文で更新ロックをかけた場合の特別なupdateの方法が、その方法をしりたい。

どなたかご存知のかたがいらっしゃいましたらご教授くださいますようよろしくお願いいたします。

win2000
jdk1.3

Aベストアンサー

(1)
db2のコマンドウィンドウから「db2 get snapshot for locks on データベース名」とするとロックの一覧を参照できます。どのアプリケーションがどのようなロックを取得しているかがわかります。また、更新ロックを保持している間に他のコネクションから該当行(テーブルロックの場合は該当テーブル)に対して更新を行えないことで確認できます。この際にロックタイムアウトまでの待ち時間を無限に設定していると、いつまでたってもロック獲得待ちのままになります。
(2)
コミットまたはロールバックでロックは解除されます。このことはすべてのロックに関していえます。
(3)
特別な方法はありません。更新ロックを獲得した後は同一コネクションからであれば排他ロックを獲得できます(更新できます)。

よく覚えていませんが、更新ロックに関してもロック保持期間が分離レベルで異なっていたような気がします。特に指定しなければ分離レベルはCS(ReadCommited)ですので、(コミットやロールバックを行わなくても)カーソルが離れた瞬間にロックが開放された気がします。

(1)
db2のコマンドウィンドウから「db2 get snapshot for locks on データベース名」とするとロックの一覧を参照できます。どのアプリケーションがどのようなロックを取得しているかがわかります。また、更新ロックを保持している間に他のコネクションから該当行(テーブルロックの場合は該当テーブル)に対して更新を行えないことで確認できます。この際にロックタイムアウトまでの待ち時間を無限に設定していると、いつまでたってもロック獲得待ちのままになります。
(2)
コミットまたはロールバックでロック...続きを読む

QDBの自動更新の方法

すみません、データーベース初心者なので教えてください。
sybaseで毎週、週1回決まったDBのある項目を更新しなくてはいけません。
項目はきまってるのですが、更新する値が毎回違います。
普段は毎回sqlのスクリプトの内容を書き換えてコマンドラインから実行しています。
sqlのスクリプトの内容は以下のような感じです。

update A_DATA set bbb = 'あいうえお' where ccc=1

みたいな単純な更新です。
ただ毎回 bbbの項目にセットする内容が変わります。


何かいい方法、そのような事がのっているサイトがありましたら
教えてください。

よろしくお願いします。

Aベストアンサー

自動更新というのはいちいちスクリプトを編集せずにということかな。
次のようなスクリプトを作ればいちいち編集する必要はないですよね。
unix 環境と仮定してですが、

#!/usr/bin/sh

isql -Uusername -Ppassword -Jeucjis << EOF
use dbname
go
update A_DATA set bbb="$1" where ccc=1
go
EOF

というシェルスクリプトを作成して(そのファイル名を A_DATA_UPD
としましょう)

% A_DATA_UPD あいうえお

のようにすればいちいち編集する必要はなくなります。
ヒアドキュメントとシェル変数の展開を応用すれば結構いろいろ
なことができますよ。
シェルスクリプトの一般的な話なので、市販本を読んでみてみると
いいかもしれませんね。

前もって変更する値がわかっていれば VDSLさんのようにテーブルを用意する
という方法もありますね。
SYBASE はサブクエリを使わなくても

update A_DATA set bbb = TempTable.bbb
from TempTable
where ccc = 1 and TempTable.bbb = getdate()

でOKです。

自動更新というのはいちいちスクリプトを編集せずにということかな。
次のようなスクリプトを作ればいちいち編集する必要はないですよね。
unix 環境と仮定してですが、

#!/usr/bin/sh

isql -Uusername -Ppassword -Jeucjis << EOF
use dbname
go
update A_DATA set bbb="$1" where ccc=1
go
EOF

というシェルスクリプトを作成して(そのファイル名を A_DATA_UPD
としましょう)

% A_DATA_UPD あいうえお

のようにすればいちいち編集する必要はなくなります。
ヒアドキュメントとシェル...続きを読む

QフリーでDBのデータ更新できるソフト

DBを利用するとあるシステムを作っています。
画像を登録、関連情報をDBに登録し、検索や閲覧にはブラウザを使った画像DBのようなものです。

この制作には予算がほとんどなく、制作依頼先に確認しても表側(閲覧ページ)とDB設計/構築くらいの予算でしかないといわれました。
しかし、運用する以上メンテナンスは私の方で行わなければなりません。
ところが、私ではSQLやDBについての知識はほとんどなく、自分でコマンド等でDBにデータを登録していくことは出来ません。
また、量も大量にあります。
本来、予算が十分にあればブラウザベースのメンテナンスページや、たとえばアクセス等でGUIを持つもののを作ってもらえるのですが・・・。

そこで、例えば登録したいDB内容をCSVで作成し、ソレを流し込むだけでDB更新や修正できるようなフリーのソフトウェアがあればと考えました。

どなたか、こういった用途にあったDB接続できるフリーウェアをご存知の方おられませんか?

Aベストアンサー

#1です。
PostgreSQL はツールが付属していないようですね。

[Common SQL Environment ver1.59]
などはデータの更新が出来るフリーツールのようです。

AccessではVBAを作成しないでも、データの修正などが可能です。
PostgreSQL のODBCドライバ(http://www.interwiz.koganei.tokyo.jp/software/PostgreSQL/windows.html)を使用し、設定をすればAccess上でも出来ると思います。

参考URL:http://www.hi-ho.ne.jp/tsumiki/

QMongoDBのデータ更新はDBを排他制御?

WebサイトのDBとしてMongoDBを使ってみようか迷っています。

「MongoDBは1レコードを更新する際、DB単位でロックする。」といった表現がちらほらネット上で散見されるため、ユーザによる更新が頻繁に発生するようなWEBサイト(SNS)でのMongoDBの使用をためらっています。

で、「MongoDBは1レコードを更新する際、DB単位でロックする。」とは本当でしょうか?
(「コレクション単位でロック」などの表現もみられるのですが、どっちにしろ、
頻繁にロックで待機がかかると実用性が乏しくなってしまう気がしています。)

よろしくお願いいたします。

Aベストアンサー

自分はMongoDBを使ったことはありませんが、MongoDBのマニュアルにはそういうことが書いてあるように見えます。
http://docs.mongodb.org/manual/faq/concurrency/

http://docs.mongodb.org/manual/faq/concurrency/#how-granular-are-locks-in-mongodb
によれば、ほとんどの操作に対してdatabase単位でロックを行なっているようです。
read/write lockなのでwrite lockが必要なケースが少ないと問題ないでしょうが、ユーザーによる更新が多発する場合には大きな問題になりそうです。

http://docs.mongodb.org/manual/faq/concurrency/#which-operations-lock-the-database
更新の際には当然、write lockが行われるようです。

work aroundとしてはすべてのユーザーを単一のdatabaseに入れるのではなく、ユーザーIDごとに散らして入れておくという方法がありそうですが。複数のユーザーに関わる操作をされた場合には複数のdatabaseのロックを取得しないといけなくなります。

自分はMongoDBを使ったことはありませんが、MongoDBのマニュアルにはそういうことが書いてあるように見えます。
http://docs.mongodb.org/manual/faq/concurrency/

http://docs.mongodb.org/manual/faq/concurrency/#how-granular-are-locks-in-mongodb
によれば、ほとんどの操作に対してdatabase単位でロックを行なっているようです。
read/write lockなのでwrite lockが必要なケースが少ないと問題ないでしょうが、ユーザーによる更新が多発する場合には大きな問題になりそうです。

http://docs.mongodb.org/m...続きを読む


人気Q&Aランキング

おすすめ情報