Oracle Database Gateway を使用した異機種間連携について
991317Feb 15 2013 — edited Feb 20 2013お世話になっております。
OracleからPostgreSQLのデータを参照する必要あり、Oracle Database Gateway を使用して
下記のような構成で連携させようと思っています。
Oracle11g - Oracle GW - unixODBC(2.3.0) - PostgreSQL ODBC - PostgreSQL(9.2.1)
(リリース2) (psqlodbc 09.01.0200)
OSはRedhat Enterprise Linux 6.3です。
DB Linkまでは作成でき、OracleからPostgreSQLのデータを参照できるようになったのですが、
VARCHAR2を期待していた列が一部LONGになってしまい、WHERE句に指定できない状態とな
っています。PostgreSQL側では、character varying(2048) で定義していた列が全てLONG型
となってしまっているようです。character varying(2048)以下で定義している列を見ると、全て
9倍の長さになっており、4000バイトを越えるためLONG型にマッピングされてしまっているようで
す。
PostgreSQLの定義
Column | Type | Modifiers
-------------------------------------------------------------------
aaaa | character varying(16) | not null
bbbb | character varying(2048) |
cccc | character varying(2048) |
dddd | character(1) | not null
eeee | character(1) | not null
Oracleでdescした結果
名前 NULL? 型
----------------------------------------- -------- ----------------------------
aaaa NOT NULL VARCHAR2(144)
bbbb LONG
cccc LONG
dddd NOT NULL VARCHAR2(9)
eeee NOT NULL VARCHAR2(9)
恐らく、文字セマンティクスとバイトセマンティクスの変換のためだと思いますが、
LOGN型にマッピングされてしまっている列をVARCHAR2として参照する方法は
ありませんでしょうか。よろしくお願いいたします。