- PR -

DB2でWindowsからLinuxへ接続できない

1
投稿者投稿内容
B
会議室デビュー日: 2008/04/01
投稿数: 10
投稿日時: 2008-05-27 02:03
DB2 Express-C を Windows機とLinux機にインストールしました。
Linux側でDBを作成し、Windows側から以下の手順で接続を試みたのですが、
上手く接続できません。
お気づきの方、ご教授願えませんでしょうか?

--Spec--
【Windows機】
 os:WindowsXP
 ip:192.168.11.5
【Linux機】
 os:fedora8
 ip:192.168.11.44
 インスタンス:db2inst1 (PW hogepw)
 DB名:hogedb
  ※fedora8はサポート対象外であることは認識済みですが、
  サポートのRHで社内で試しても同様のエラーが出ました


--手順--

【接続設定】
1.Linux側:db2set DB2COMM=TCPIP
2.Linux側:db2 update dbm cfg using SVCENAME 50010
3.Linux側:db2stop
4.Linux側:db2start

【カタログ設定】
5.Windows側:db2 catalog tcpip node hogenode remote 192.168.11.44 server 50010
6.Windows側:db2 catalog db hogedb at node hogenode

【接続】
7.Windows側:db2 connect to hogedb user db2inst1 using hogepw
(!エラー!)

SQL30081N 通信エラーが検出されました。使用された通信プロトコル:"TCP/IP"。使用している通信 API: "SOCKETS"。エラーが検出されたロケーション:"192.168.11.44"。エラーを検出した通信関数:"connect"。プロトコル固有エラー・コード: "10061"、"*"、"*"。 SQLSTATE=08001

【追記】
◆windows機を別に用意し、そこに同様の操作を行っても、なんのエラーも出ずコネクトが出来ました。
◆FWも50010は許可していますし、アンチウィルスソフトも未起動です。
◆fedoraサポート対象外とはいえ、他なんの問題もなくDB2を使用できております。

以上、情報お待ちしております。
Java僧
ぬし
会議室デビュー日: 2003/11/06
投稿数: 261
投稿日時: 2008-05-27 13:13
DB2は詳しくないですケド。
50010/tcpにconnectするプログラムを自作してみて問題を切り分けたらどうですか?
dodo
ベテラン
会議室デビュー日: 2004/05/12
投稿数: 99
お住まい・勤務地: 東京都渋谷区
投稿日時: 2008-05-27 22:30
引用:

Bさんの書き込み (2008-05-27 02:03) より:
DB2 Express-C を Windows機とLinux機にインストールしました。

【追記】
◆windows機を別に用意し、そこに同様の操作を行っても、なんのエラーも出ずコネクトが出来ました。


他のWindowsPCからつながるということから、サーバ側(Linux)の問題よりも、クライアント(Windows機)の問題のように思われます。
とりあえず基本的なところとして、
1. Windows機からLinux機に対してpingは通りますか?
2. DB2のバージョンはいくつですか?(8.2とか9.1、9.5)
3. Express-Cはほとんど触ったことがないので付いていないかもしれないですけど、DB2構成アシスタントで設定しようとするとどうなりますか?
4. つながるPCとつながらないPCで、何か違い(特にソフトウェアやOS)はないですか?

# サーバ側の問題だったら、db2diag.logを見たり、db2pdコマンドなどで調べることができます。(自分は使ったことないです)
# http://www-06.ibm.com/jp/software/data/developer/pd/05_02.html#2
# http://www-06.ibm.com/jp/domino01/mkt/dminfo.nsf/doc/00217BBA
B
会議室デビュー日: 2008/04/01
投稿数: 10
投稿日時: 2008-05-28 01:40
Java僧様
引用:

50010/tcpにconnectするプログラムを自作してみて問題を切り分けたらどうですか?


貴重なご意見ありがとうございます。
ソケットプログラムを作成した経験がないので、私に取って高いハードルではありますが、プログラムが完成出来れば貴重な経験となると確信しました。
問題と平行し頑張って作成してみたいと思います。


dodo様
引用:

1. Windows機からLinux機に対してpingは通りますか?
2. DB2のバージョンはいくつですか?(8.2とか9.1、9.5)
3. Express-Cはほとんど触ったことがないので付いていないかもしれないですけど、DB2構成アシスタントで設定しようとするとどうなりますか?
4. つながるPCとつながらないPCで、何か違い(特にソフトウェアやOS)はないですか?


貴重なご意見ありがとうございます。
確認点についてご返答申し上げます。

1.pingは正常に応答があります。
2.バージョンは全てDB2 Express-C 9.5を使用しております。
3.同じ内容のエラーが出力され完了となりませんでした。
4.違いはOSの違いだけでした。
 WindowsXP ⇔ Windows2k 正常
WindowsXP ⇔ WindowsXP 正常
 WindowsXP ⇔ RedHat 同エラー
 WindowsXP ⇔ fedora 同エラー
 Windows2k ⇔ fedora 同エラー

引用:

# サーバ側の問題だったら、db2diag.logを見たり、db2pdコマンドなどで調べることができます。(自分は使ったことないです)
# http://www-06.ibm.com/jp/software/data/developer/pd/05_02.html#2
# http://www-06.ibm.com/jp/domino01/mkt/dminfo.nsf/doc/00217BBA


失礼しました。一度調べた時に所在が分からず確認漏れておりました。
さっそく探し出し、注意深く確認したいと思います。
何か分かりましたら、ご報告申し上げます。

ご協力感謝致します。
B
会議室デビュー日: 2008/04/01
投稿数: 10
投稿日時: 2008-05-28 03:51
dodo様
ご協力ありがとう御座います。
調査した結果、進展が御座いましたのでご報告致します。

dodo様のアドバイスに構成アシスタントからの操作が御座いますが、
その中で詳しいエラー内容が出力されますが、そこに再度注目してみました。
「natstat -a でのポート確認」が書かれておりましたので、さっそく試してみました。

すると50010での待機がされていないことが判明しました。
これが原因ではないかと判断して以下の操作を行いました。

1.vi /etc/services で50010の句を確認
2.db2tcp 50010/tcp と db2tcp 50010/udp が定義されていることが判明
 (【ミス1】おそらく漫然に何かコピーしてそのまま書き換えてしまっていた)
3.Linux側:db2 update dbm cfg using SVCENAME db2tcp で再定義
 (【ミス?2】試行錯誤中 SVCENAME に直接 50010 と入力しても可能かと解釈してしまっていたのでservices定義変数に変更)
4.Windows側から connect を実行
5.先のエラーが消え接続しようとしている様子に状況が変わった!
・・・だが上手くいかない。


5.ですが、具体的なエラー内容は以下です。

SQL1224N データベース・マネージャーが新しい要求を受け付けることができないか、進行中のすべての要求処理を終了したか、エラーまたは強制割り込みがあったために特定の要求を終了しました。 SQLSTATE=55032


先のエラーでなければすぐ解決できるかと調べてはいるのですが、
なかなか解決出来ず朝を迎えそうです。。
今は以下情報の意味を咀嚼中です。
http://www-1.ibm.com/support/docview.wss?uid=std3970c960cc57adbcb4925730d000347e8

引き続き、何かお気づきの点やアドバイス等御座いましたら、ご教授願えれば幸いです。

以上、宜しくお願い致します。
dodo
ベテラン
会議室デビュー日: 2004/05/12
投稿数: 99
お住まい・勤務地: 東京都渋谷区
投稿日時: 2008-05-28 05:10
徹夜で作業ですか...、お疲れ様です。
引用:

Bさんの書き込み (2008-05-28 03:51) より:

「natstat -a でのポート確認」が書かれておりましたので、さっそく試してみました。
すると50010での待機がされていないことが判明しました。


どうやら、サーバ側の設定に問題がありそうですね。db2のデフォルトのポート番号は50000ですので、/etc/services にその設定が残っていないかどうかも確認してください。

引用:

1.vi /etc/services で50010の句を確認
2.db2tcp 50010/tcp と db2tcp 50010/udp が定義されていることが判明
3.Linux側:db2 update dbm cfg using SVCENAME db2tcp で再定義
4.Windows側から connect を実行
5.先のエラーが消え接続しようとしている様子に状況が変わった!

SQL1224N データベース・マネージャーが新しい要求を受け付けることができないか、進行中のすべての要求処理を終了したか、エラーまたは強制割り込みがあったために特定の要求を終了しました。 SQLSTATE=55032




設定変更後(3と4の間)、DB2のインスタンスの再起動を行っていますでしょうか?
Windowsだと普通はdb2adminユーザーしかいないのですが、Linuxだとdb2のインスタンスユーザーと、管理サーバーのユーザーが分かれているので、注意が必要です。

例)
DB2管理サーバーのユーザー名(デフォルト:dasadm1)
DB2のインスタンス・オーナー・ユーザー名(デフォルト:db2inst1)
fencedユーザーのユーザー名(デフォルト:db2fenc1)

9.5でしたらこの記事が参考になるかと思います。リモートからの接続方法も後ろのほうに書いてあります。
(私の説明よりもずっと役に立つかと..)
http://www.ibm.com/developerworks/jp/offers/db2express-c/installlin_v95/

それとDB2逆引きwikiの、「インスタンスにTCP/IPで接続できるように設定するには」のリンクを貼っておきます。
http://db2watch.com/wiki/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%ABTCP/IP%E3%81%A7%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF

【追記】
他に考えられる点として、FedoraでSELinuxの設定が無効になっていることも、確認してください。
Errorメッセージの出力を見る限りでは、可能性は低いと思いますが念のため。
http://tldp.org/HOWTO/DB2-HOWTO/fedora6.html

[ メッセージ編集済み 編集者: dodo 編集日時 2008-05-28 05:19 ]
B
会議室デビュー日: 2008/04/01
投稿数: 10
投稿日時: 2008-05-28 18:38
結果からご報告いたします。

上手くいきました!!!
ありがとうございます。

経過は以下の通りです。

引用:

db2のデフォルトのポート番号は50000ですので、/etc/services にその設定が残っていないかどうかも確認してください。


確認してみましたが、異常な設定は他にはありませんでした。

引用:

設定変更後(3と4の間)、DB2のインスタンスの再起動を行っていますでしょうか?
Windowsだと普通はdb2adminユーザーしかいないのですが、Linuxだとdb2のインスタンスユーザーと、管理サーバーのユーザーが分かれているので、注意が必要です。


再起動ですが、db2start db2stopは行っておりました。
が、管理サーバでの再起動を行っていなかったので実施しました。
しかし現状に変わりはありませんでした。

引用:

9.5でしたらこの記事が参考になるかと思います。リモートからの接続方法も後ろのほうに書いてあります。
(私の説明よりもずっと役に立つかと..)
http://www.ibm.com/developerworks/jp/offers/db2express-c/installlin_v95/


手順は一通り既に行っておりました。参考サイトありがとうございます。

引用:

他に考えられる点として、FedoraでSELinuxの設定が無効になっていることも、確認してください。


ご指摘ありがとうございます。
SELinuxはfedoraインストール後すぐにアンインストールしておりました。
ご報告が洩れており申し訳ありませんでした。


・・・一通りご案内頂いたサイトを読み終えた後、しばらくあれやこれや操作しておりましたが上手くいかず、
ここで初心に戻り、Windows側からのリモートコネクトを中断して、
fedoraから自身のDBにコネクトをしようとしました。
しかし、Windows側と同じエラーが出てコネクト出来なくなっておりました。

昨日の朝方まで普通にコネクトできていたので、何故同じエラーが突然出るようになったか不明です。
コネクトが出来ないので調査しようにもdb2 get db cfgも実施できません。
とにかくDB自体がおかしくなってしまったのではないかと考えました。

そこで新しいDBを作成し直し、fedoraでコネクトを確認。⇒成功。
Windows側から既に作成済みのノードで新DBにコネクトを試みる。⇒ 成功!!


ということで、最後謎でしたが何とか解決まで辿り着く事が出来ました。
さまざまなアドバイス・ご指摘、本当に助かりました。
ご協力がなければ、まだ眠れない日が続いていたかと思います。
本当にありがとうございました!!
dodo
ベテラン
会議室デビュー日: 2004/05/12
投稿数: 99
お住まい・勤務地: 東京都渋谷区
投稿日時: 2008-05-28 21:54
引用:

Bさんの書き込み (2008-05-28 18:38) より:
結果からご報告いたします。

上手くいきました!!!
ありがとうございます。
(中略)
昨日の朝方まで普通にコネクトできていたので、何故同じエラーが突然出るようになったか不明です。
コネクトが出来ないので調査しようにもdb2 get db cfgも実施できません。
とにかくDB自体がおかしくなってしまったのではないかと考えました。

そこで新しいDBを作成し直し、fedoraでコネクトを確認。⇒成功。
Windows側から既に作成済みのノードで新DBにコネクトを試みる。⇒ 成功!!



こちらこそ大してお役に立てず、何とも恥ずかしい限りです。
似たような事例として、DB2のUser's Forumに、「"TOOLSDB"をCreateしなおしたら接続できるようになった」とのトピックが見つかりましたので、載せておきます。

http://db2forum.jp/viewtopic.php?t=1400&view=next&sid=1eff6d8b5c783d5927977b550c4632d7
1

スキルアップ/キャリアアップ(JOB@IT)