Mac De Mac De Oracle Heterogeneous! #80 Tweet
今回は、Firebird 1.5と Heterogeneous! 。 ただ、ODBCドライバに影響されやすい
Generic Connectivityなので、Firebird_ODBC_1.2.0.69-Win32だと問題があるようだ。
踏み台にするWindowsには、Oracle10g EE R2を利用した。前回までは、Oracle10g EE R1。
踏み台側の環境は以下。
Windows XP Professional SP2
Firebird V1.5.3.4870 for Windows
Firebird_ODBC_1.2.0.69-Win32
Oracle10g EE R2 10.2.0.1.0 for Windows
Mac側は以前の記事を参考にしてほしい。
1.ODBC
システムDSN
DSN:
firebird_windows
ここがポイント!
For a Windows server:
servername:DriveLetter:¥filesystem-path¥database-file
という形式で指定しないとデータベースを 見つけられない。
以下のようにFirebirdのサンプルデータベースを指定した。
Database:
catfish:C:¥Program Files¥Firebird¥Firebird_1_5¥examples¥EMPLOYEE.FDB
ユーザ名とパスワードはサンプルデータベースのユーザとパスワードを指定した。

2. init
initfirebird_windows.ora
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = firebird_windows
HS_FDS_TRACE_LEVEL = off
HS_FDS_SHAREABLE_NAME = C:¥WINNT¥system32¥IscDbc.dll
3.listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:¥oracle¥product¥10.2.0¥catfish)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = mysqldb4026_windows)
(ORACLE_HOME = E:¥oracle¥product¥10.2.0¥catfish)
(PROGRAM = hsodbc)
)
(SID_DESC =
(SID_NAME = firebird_windows)
(ORACLE_HOME = E:¥oracle¥product¥10.2.0¥catfish)
(PROGRAM = hsodbc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = catfish)(PORT = 1521))
)
)
4.tnsnames.ora
FIREBIRD_WIN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = catfish)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = firebird_windows)
)
(HS = OK)
)
MYSQL4026_WIN =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = catfish)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = mysql4026_windows)
)
(HS = OK)
)
5. SQL*Plusから
以下のデータベースリンクを作成(パブリックデータベースリンクでもOK)
create database link firebird_win
connect to "SYSDBA" identified by "masterkey" using 'FIREBIRD_WIN';
Oracle10g R1では、指定したデータベースリンク名に一致する
データベースリンク名を作成することができたのだが、
Oracle10g R2では、.REGRESS.RDBMS.DEV.US.ORACLE.COMという
ドメイン名がご丁寧に付加される。(悪さはしていない模様。)
SQL> select db_link from user_db_links;
DB_LINK
---------------------------------------------------
FIREBIRD_WIN.REGRESS.RDBMS.DEV.US.ORACLE.COM
MYSQL4026_WIN.REGRESS.RDBMS.DEV.US.ORACLE.COM
SQL>
ディクショナリビューは問題なく問い合わせられる。が・・・
SQL> select table_name from user_tables@firebird_win;
TABLE_NAME
--------------------------------------------------------------
RDB$CHARACTER_SETS
RDB$CHECK_CONSTRAINTS
RDB$COLLATIONS
RDB$DATABASE
・
中略
・
DEPARTMENT
EMP
EMPLOYEE
EMPLOYEE_PROJECT
FISHES
JOB
PROJECT
PROJ_DEPT_BUDGET
SALARY_HISTORY
SALES
44行が選択されました。
SQL>
SQL>
一般の表では、文字型の表示がだめ。
(エンコーディング関連で逃げられるものなのか・・・???)
ODBCドライバ側の問題なのだろうかね。(可能性としては高そう)
SQL> select * from "FISHES"@firebird_win;
ID NAME
---------- ---------------------------------------------------
1 discus
2 atfish
3 on tetra
SQL>
SQL> insert into "FISHES"@firebird_win values(4,'guppy');
1行が作成されました。
SQL> commit;
コミットが完了しました。
SQL> select * from "FISHES"@firebird_win;
ID NAME
---------- -----------------------------------------------------------
1 discus
2 atfish
3 on tetragu
4 py
SQL>
Firebirdの isqlから fishes表を問合せた結果をみると
Oracle側から insertしたデータでも正しく問い合わせられる。
SQL> select * from fishes;
ID NAME
============ ==========
1 discus
2 catfish
3 neon tetra
4 guppy
SQL>
と現時点ではこんな感じなので、FirebirdとHeterogeneous! ネタはいずれまた。
今回は、Firebird_ODBC_1.2.0.69-Win32 というODBCドライバを利用したが
v2.0のODBCドライバもリリースされているようなので時間があったら
ODBCドライバ v2.0でも試してみましょうかね。
尚、この内容は OTN-Jの掲示板FirebirdへのODBC接続に投稿したものとほぼ同じ内容です。
| 固定リンク | 0


コメント