« PHPでOracleを使おう! and XMLDB! on Direct Seminar | Main | 10月のメインフレーム on ダイレクトセミナー »

Database 11gR1の新機能 - Database Gateway for ODBC セットアップ編

唐突ですが連携系。

新機能といいつつ、実は9iぐらいから標準搭載の機能でGeneric Connectivityというものがありました。

11gR1からこれがOracle Database Gateway for ODBCという名称に変更になり旧称Oracle Transparent Gatewayとともにれっきとしたデータベースゲートウェイの一員となりました。
なお、無償で利用可能です。

機能を解説すると、ま、名前のとおりではあるんですがODBCを使ってデータベースアクセスをするゲートウェイですが・・・

1.Oracle Database側からSQLでシームレスにアクセスできる!
2.ODBCでつながるデータベース/データソースならなんでもアクセス!

というものです。
SQLベースのアクセスができるのでデータベースな人なら扱いやすいかもしれません。


また、11gR1からはDatabaseとは別に導入することが可能になったので別サーバーなどで導入することができます。

構成図としては以下のとおり。

DG4ODBC-ENVIRONMENT.JPG


では、セットアップを。
ではGatewayの導入から。

GatewayはDatabase メディアパック「Oracle® Database Gateways 11g Release 1 (11.1.0.6.0) for Microsoft Windows (32-bit) CD」
もしくはedelivery.oracle.comから入手してください。

導入元からSetup.exeから起動します。

GW11gOUI1.JPG

今回は、D:\oracle\product\11.1.0\tg_1 というディレクトリに導入しています。

GWdir1.JPG

続いて、連携する側のPostgreSQLのデータソースを設定します。

odbc_dsn1.JPG

細かい設定の説明はさけますが、試した環境では文字コードの対応のために、PostgreSQL ANSIドライバが必要でした。


続いて、中間でゲートウェイをする設定を行います。

Gateway側の設定
1. Listenerの設定
- Gatewayはリスナとして起動します。
listener.oraを編集します。

これは、D:\oracle\product\11.1.0\tg_1\NETWORK\ADMINにあります。
Listenerora1.JPG

この中、今回の環境では同一サーバーにあるListenerと競合をさけるため、"PORT=1522"を指定しています。
また、特殊なところとして対応するGWのSIDとしてHOGEHOGE、PROGRAMにdg4odbcを記載してあります。

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=HOGEHOGE)
(ORACLE_HOME=D:\oracle\product\11.1.0\tg_1\)
(PROGRAM=dg4odbc)
)
)

2. HSの設定
続いて、SID=HOGEHOGEに対するGWサービスをつくります。 

initHOGEHOGE.JPG

この設定はD:\oracle\product\11.1.0\tg_1\hs\adminにあるinitdg4odbc.oraというサンプルファイルをinit.oraとしてコピーして設定します。
今回の場合はHOGEHOGEなのでinitHOGEHOGE.oraです。

中身としては、スクリーンショットのとおりですが
HS_FDS_CONNECT_INFO = hogehoge
と記述しています、このhogehogeはODBCドライバに設定したDSN名です。

3. 起動
次にGatewayのListnerを起動しましょう。

gwstartup.JPG

Windowsサービスから起動します。

4. Database側の設定
GWを呼び出すデータベースのほうから接続可能なようにtnsnames.oraを設定します。
GWはリモートのオラクルにみえているのでLisenしているポートとサービスしているTNS名を指定するだけです。

db-tnsnames.ora.JPG

*この設定はGWではなくDBの方を設定してます。
D:\app\mmatsuza\product\11.1.0\db_1\NETWORK\ADMIN\tnsnames.ora

hogehoge =
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=mmatsuza-jp2)
(PORT=1522)
)
(CONNECT_DATA=
(SID=HOGEHOGE))
(HS=OK))

ここでのポイントはPORT=1522, HS=OK, SID=HOGEHOGEの3つの設定です。

5.動作確認
対Oracleに対するDBLINKの作成とにてます。
試してみますと、以下のような感じです。

CreateDBLINK.JPG

解説すると、以下のようになります。
create public database link "<DBLINK名>" connect to "<ODBC接続ユーザー名>" identified by "<ODBC接続ユーザーパスワード>" using '<tnsnames記載のGW/サービス名>';

サービス名のクォートが'であるところが注意!

3.実行確認
では、実行してみます。

Selectdg.JPG

SELECT * FROM "<リモートテーブル名>"@<DBLINK名>
と、検索を実行してます。ポイントはリモートテーブル名を"でクォートしてます。
ためしたPostgreSQLはケースセンシティブなので入れておかないとエラーになったり
します。いれないとUpper Caseでなげちゃうので。

以上で利用可能です。

次回は実際の利用について検証します。

TrackBack

TrackBack URL for this entry:
http://blogs.oracle.com/mte1521/mt-tb.cgi/7009

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About This Entry

This page contains a single entry from the blog posted on 2008年09月22日 11:04.

The previous post in this blog was PHPでOracleを使おう! and XMLDB! on Direct Seminar.

The next post in this blog is 10月のメインフレーム on ダイレクトセミナー.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type and Oracle