Oracle Database 21c からDBLINK でCData ODBC Driver を使ってみる(Windows 編)

by 大川智久 | 2022年12月02日

こんにちは、CData Software Japan の大川です。 この記事は、Qiita CData Software Advent Calendar 2022 2日目の記事になります。Oracle Database では、「Database Gateway for ODBC」という機能を使ってDBLINK からODBC ドライバ経由でOracle 以外のデータへアクセスすることができます。この機能とCData のODBC ドライバを使って、DBLINK  でSaaS上のデータにアクセスすることが可能です。

今回はWindows Server 上でのOracle Database 21c のインストールからDBLINK 経由でkintone のデータにアクセスするまでの手順について解説します。

Oracle Database 21cについて

Oracle Database 21c は「Innovation Release」と呼ばれるもので、LTS (Long Term Support) 版と比べてサポート期間が短いリリースです。そのため、このリリースを本番系として使うことは少ないと思います。しかし、今後Oracle Database の機能がどのようになっていくのかを確認するのには適しています。

今回は、このリリースとCData kintone ODBC Driver を使い、DBLINK 経由でkintone のデータへアクセスしてみます。

Oracle Database 21cのWindows Server へのインストール

Oracle Database 18c から、「イメージベース」と呼ばれるインストーラ形式となっています。それ以前はインストーラのzip ファイルを任意のフォルダに展開してsetup.exe を実行するという手順でしたが、イメージベースのインストーラではzip ファイルをORACLE_HOME フォルダに展開しておいてsetup.exe を実行する、という手順となります。

今回はWindows Server 上に「C:\app\oracle\product\21.3.0\dbhome_1」というフォルダをあらかじめ作成しておき、そこにインストーラのzip を展開します。なお、以降は全てAdministrator ユーザで作業しています。

展開したら、フォルダの中のsetup.exe を実行します。今回は簡単のため、「単一インスタンス・データベースを作成および構成します」を選択して、インストーラ上でDB やリスナも作成します。主な設定項目は以下です。

  • システム・クラス:デスクトップ・クラス
  • Oracleホーム・ユーザー:仮想アカウントの使用
  • Oracleベース:C:\app\oracle
  • グローバル・データベース名:orcl
  • プラガブル・データベース名:orclpdb

インストールが終わったら、コマンドプロンプトを起動してテストに使うユーザを作っておきます。

C:\Users\Administrator>sqlplus / as sysdba
...
SQL> alter session set container=orclpdb;

セッションが変更されました。

SQL> create user testuser identified by testuser quota unlimited on users;

ユーザーが作成されました。

SQL> grant connect,resource,create view,create database link to testuser;

権限付与が成功しました。

CData kintone ODBC Driver のインストール

CData kintone ODBC Driver は30 日間機能の制限なく試用可能です。以下のダウンロードリンクから「ダウンロード 評価版」をクリックしてインストールします。

Download ODBC Driver for Kintone. 30-Day Free Trial (cdata.com)

また、システムDSN(64bit)を設定してkintone に接続できるようにしておきます。

「詳細」タブで以下の設定をしておきます。

  • Include Dual Table: True
  • Maximum Column Size: 4000
  • Upper Case Identifiers: True

「標準」タブで接続に必要な項目を入力し、「接続テスト」ボタンで疎通テストを行います。

以下のように表示されたら接続テストは完了です。

Database Gateway for ODBC の設定

次に、Database Gateway for ODBC の設定を行います。今回は、リスナが「kintone」というSID 経由でkintone ODBC Driver を使用するように設定します。

まず、「C:\app\oracle\homes\OraDB21Home1\hs\admin」フォルダに「initkintone.ora」というファイルを以下のような内容で作成します。

HS_FDS_CONNECT_INFO = "CData Kintone Sys"

次に、「C:\app\oracle\homes\OraDB21Home1\network\admin\listener.ora」ファイルの「SID_LIST_LISTENER」にDatabase Gateway for ODBC 用の設定を追加します。以下は追加した後の「SID_LIST_LISTENER」の内容です。

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\oracle\product\21.3.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\21.3.0\dbhome_1\bin\oraclr.dll")
    )
    (SID_DESC =
      (SID_NAME = kintone)
      (ORACLE_HOME = C:\app\oracle\product\21.3.0\dbhome_1)
      (PROGRAM = dg4odbc)
    )
  )

最後に、「C:\app\oracle\homes\OraDB21Home1\network\admin\tnsnames.ora」に接続のためのTNS 名を追加します。以下の記載を追加します(HOST の値はサーバのIP アドレスとしてください)。

kintone =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=172.XX.XX.XX)(PORT=1521))
    (CONNECT_DATA=(SID=kintone))
    (HS=OK)
  )

これで設定は完了です。コマンドプロンプトでリスナを再起動し、設定を反映させます。

C:\Users\Administrator>lsnrctl stop
C:\Users\Administrator>lsnrctl start

DBLINK の設定

ここまできたら、あとはSQL Developer から接続してDBLINK の設定をします。以下のように設定して「テスト」ボタンで「ステータス: 成功」と出ることを確認し、「接続」ボタンで接続します。

接続したら、以下のようにDBLINK を作成します。なお、ここでID やパスワードに使用している値(「foo」や「bar」)は何でも構いません。実際のkintone への接続にはシステムDSN で設定した情報が使用されます。

CREATE DATABASE LINK kintonedblink CONNECT TO foo IDENTIFIED BY bar USING 'kintone';

作成したら、早速kintone のデータをクエリしてみましょう。

SELECT * FROM APPS@kintonedblink;

SELECT * FROM "案件管理(営業支援パック)"@kintonedblink;

うまくOracle Database からkintone のデータをクエリできました!

さいごに

今回はOracle Database 21c からCData kintone ODBC Driver を使ってDBLINK 経由でkintone のデータをクエリしてみました。

CData kintone ODBC Driver は今回ご紹介したkintone をはじめ250 種類以上のデータソースに対応しており、すべて30 日間機能無制限で試用可能です。是非お試しいただければと思います!

CData Software Japan - ODBC Drivers

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。