2006年06月16日
DB2 Viper から IDS10 につないでみました。
IBM DB2 Viper のオープンベータをダウンロードしてみました。せっかくなので Informix Dynamic Server と接続(IDS のデータベースを、DB2 のデータベースであるかのうようにアクセスする)してみました。
まだ必須の環境変数など良くわかっていませんが、とりあえず現在までのメモです。
1. 環境変数の設定
DB2 UDB のサーバープロセスがInformix Connectを使って Informix サーバーに接続する。ゆえに、INFORMIXDIR などの設定必須環境変数は、DB2 UDBのサーバーの環境として設定する必要がある。
方法: db2dj.ini に記述しておく。
INFORMIXDIR
INFORMIXSERVER
INFORMIXSQLHOSTS ( Option )
CLIENT_LOCALE ( ほぼ必須 )
DB_LOCALE ( ほぼ必須 )
DBNLS ( Option )
このほか、INFORMIX_CLIENT_DB_LOCALE などという名前の環境変数が用意されているみたいなんですが、違いが良くわかりません。
2. ユーザー名やパスワードの送信について
ALTER SERVER TYPE INFORMIX OPTIONS ( ADD FOLD_ID 'L );
DB2 から Informix サーバーに接続する時に、ユーザー ID を小文字として送信する。
ALTER SERVER TYPE INFORMIX OPTIONS ( ADD FOLD_PW 'N );
DB2 から Informix サーバーに接続する時に、ユーザー ID を大文字小文字の変換をせずそのまま送信する。
3. 設定例(ここに書いた拡張SQLを、DB2 のSQL実行環境から実行する..事前にDB2 のインスタンスにつないでから。 )
CREATE WRAPPER INFORMIX LIBRARY 'libdb2informix.so' ( Solaris, Linux 環境での例 )
CREATE SERVER servername TYPE INFORMIX VERSION 10 WRAPPER INFORMIX \
OPTIONS ( NODE 'ifx_dbservername', DBNAME 'ifx_dbname' );
CREATE USER MAPPING FOR db2user1 SERVER servername \
OPTIONS ( REMOTE_AUTHID 'ifxuser1', REMOTE_PASSWORD 'ifxpassword' );
CREATE NICKNAME informix_name FOR servername."ifxuser1"."ifxtable"
4. 設定がうまく出来ていることの確認方法例(つないで検索してみる)
SET PASSTHRU servername
SELECT count(*) FROM informix.systables
SET PASSTHRU RESET
5. トラシュー
- UTF8ロケールで作成した IDS DB に接続しようとすると -23101 が発生
db2dj.ini などで、CLIENT_LOCALE, DB_LOCALE を正しく設定しているのに発生。 このエラーは、GLS LOCALE ( CLIENT_LOCALE, DB_LOCALE で指定されたもの ) をロードしようとしたら、システムにそのロケールのためのファイルが入っていない、という場合に発生する。
--> Informix Connect が入っている INFORMIXDIR に、指定のロケールが入っているか確認
特に Windows では、環境変数 INFORMIXDIR と SETNET32(レジストリ ) で設定した INFORMIXDIR の双方を確認。
--> Informix 製品には、UTF-8 対応のロケールは標準では含まれていない。Informix 製品に同梱の、International Language Supplement CDを使って、UTF-8 対応ロケールをインストールしましょうね。
- CLIENT_LOCALE は何に設定すれば良いのかな?(まだ答えが出ていません。)
WRAPPER を作成する、DB2 側のデータベースのコードセットと同等にすればよいのかな?
DB2 でデータベースを作成したときのコードセット:CLIENT_LOCALE
IBM-943: ja_jp.sjis-s
UTF8: ja_jp.utf8
って感じかな?
まだ必須の環境変数など良くわかっていませんが、とりあえず現在までのメモです。
1. 環境変数の設定
DB2 UDB のサーバープロセスがInformix Connectを使って Informix サーバーに接続する。ゆえに、INFORMIXDIR などの設定必須環境変数は、DB2 UDBのサーバーの環境として設定する必要がある。
方法: db2dj.ini に記述しておく。
INFORMIXDIR
INFORMIXSERVER
INFORMIXSQLHOSTS ( Option )
CLIENT_LOCALE ( ほぼ必須 )
DB_LOCALE ( ほぼ必須 )
DBNLS ( Option )
このほか、INFORMIX_CLIENT_DB_LOCALE などという名前の環境変数が用意されているみたいなんですが、違いが良くわかりません。
2. ユーザー名やパスワードの送信について
ALTER SERVER TYPE INFORMIX OPTIONS ( ADD FOLD_ID 'L );
DB2 から Informix サーバーに接続する時に、ユーザー ID を小文字として送信する。
ALTER SERVER TYPE INFORMIX OPTIONS ( ADD FOLD_PW 'N );
DB2 から Informix サーバーに接続する時に、ユーザー ID を大文字小文字の変換をせずそのまま送信する。
3. 設定例(ここに書いた拡張SQLを、DB2 のSQL実行環境から実行する..事前にDB2 のインスタンスにつないでから。 )
CREATE WRAPPER INFORMIX LIBRARY 'libdb2informix.so' ( Solaris, Linux 環境での例 )
CREATE SERVER servername TYPE INFORMIX VERSION 10 WRAPPER INFORMIX \
OPTIONS ( NODE 'ifx_dbservername', DBNAME 'ifx_dbname' );
CREATE USER MAPPING FOR db2user1 SERVER servername \
OPTIONS ( REMOTE_AUTHID 'ifxuser1', REMOTE_PASSWORD 'ifxpassword' );
CREATE NICKNAME informix_name FOR servername."ifxuser1"."ifxtable"
4. 設定がうまく出来ていることの確認方法例(つないで検索してみる)
SET PASSTHRU servername
SELECT count(*) FROM informix.systables
SET PASSTHRU RESET
5. トラシュー
- UTF8ロケールで作成した IDS DB に接続しようとすると -23101 が発生
db2dj.ini などで、CLIENT_LOCALE, DB_LOCALE を正しく設定しているのに発生。 このエラーは、GLS LOCALE ( CLIENT_LOCALE, DB_LOCALE で指定されたもの ) をロードしようとしたら、システムにそのロケールのためのファイルが入っていない、という場合に発生する。
--> Informix Connect が入っている INFORMIXDIR に、指定のロケールが入っているか確認
特に Windows では、環境変数 INFORMIXDIR と SETNET32(レジストリ ) で設定した INFORMIXDIR の双方を確認。
--> Informix 製品には、UTF-8 対応のロケールは標準では含まれていない。Informix 製品に同梱の、International Language Supplement CDを使って、UTF-8 対応ロケールをインストールしましょうね。
- CLIENT_LOCALE は何に設定すれば良いのかな?(まだ答えが出ていません。)
WRAPPER を作成する、DB2 側のデータベースのコードセットと同等にすればよいのかな?
DB2 でデータベースを作成したときのコードセット:CLIENT_LOCALE
IBM-943: ja_jp.sjis-s
UTF8: ja_jp.utf8
って感じかな?
Posted by oninit at 22:01│Comments(0)
│他製品との接続
※このブログではブログの持ち主が承認した後、コメントが反映される設定です。