ACCESSからOracleにODBC接続するためにはOracle Instant Client を利用します。
この記事ではACCESSからOracleへODBC接続する手順を出来る限り解りやすくご紹介しています。
Oracle Instant Client の入手
利用環境にあったバージョンをORACLEのホームページより入手します。
ここでは、Oracle Instant Client Downloads for Microsoft Windows (x64) 64-bitを例として利用するため下記のbasicとodbcの二つをダウンロードします。※バージョンは適宜読み替えてください。
Name | Download |
Basic Package | instantclient-basic-windows.x64-21.3.0.0.0.zip |
ODBC Package | instantclient-odbc-windows.x64-21.3.0.0.0.zip |
instantclient ファイルの配置
ダウンロードしたファイルを適当な場所へ解凍します。
ここでは D:\Oracle フォルダを作成しその中に解凍しています。以降 D:\Oracle フォルダで作業を行います。
解凍したフォルダの中にある instantclient_XX_X というフォルダ一式をコピーして、外に出します。(この段階で削除や切り取りはしないでください)
次に instantclient_XX_X というフォルダは basic と odbc の両方にあるので1つにまとめます。
ここでコピーとした理由は、oracle instantclientのインストール時に一部ファイルが消失する現象が発生する為、その際に補完を行う必要があるからです。(2022/1現在)
Oracle Instant Client インストール
インストールはコマンドプロンプトより行います。
[windowsロゴ]キー + [R]キー でファイル名を指定して実行を開きます。
名前のところに cmd と入力して [Shift]キー + [Ctrl]キー を押しながら[Enter]キーで管理者権限で起動できます。
instantclient_21_3 フォルダ内の odbc_install.exe を利用してインストールを行います。
cd D:\Oracle\instantclient_21_3
odbc_install.exe JA
インストールは以上で完了です。
ここで、消失したファイルを再配置します。
odbcフォルダ内の sqora32.dll と sqoras32.dll と sqresja.dll と sqresus.dll の4ファイルをコピーして、外にまとめておいた「instantclient_21_3」フォルダ内に再度コピーします。4つのうちいずれか1つが消失しています。(2022/1現在)
tnsnames.ora ファイルの作成と配置
ODBC接続する際に利用するtnsnames.oraファイルの作成と配置を行います。
(基本的な構文)
net_service_name=
(DESCRIPTION=
(ADDRESS=(protocol_address_information))
(CONNECT_DATA=
(SERVICE_NAME=service_name)))
tnsnames.oraファイルの記述方式は様々です。詳しくは下記を参照してください。
https://docs.oracle.com/cd/E16338_01/network.112/b56287/tnsnames.htm
ここでは例として下記のように作成しました。
赤字の部分は適宜ご自身の環境に合わせて変更が必要です。
TNSNAMEはODBC接続する際に選ぶことになるTNSサービス名です。わかり易い名前にします。
HOSTは接続先データベースのIPアドレス
PORTはデータベースに接続する際のPORT番号(Oracleのデフォルトは1521)
SERVICE_NAMEは接続するOracleの「データベース名」を指定します。
TNSNAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.24.100)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ODBCTEST)
)
)
tnsnames.oraファイルの配置場所は、D:\Oracle\instantclient_21_3 のフォルダ内としました。
環境変数の登録
環境変数を登録して tnsnames.ora ファイルへのパスを通します。
コントロール パネル ⇒ ユーザー アカウント ⇒ 環境変数の変更
変数名 ⇒ TNS_ADMIN
変数値 ⇒ D:\Oracle\instantclient_21_3
(※変数値はtnsnames.oraを配置するディレクトリまでのフルパス)
文字化け対策
Oracleサーバ側とローカルPC側の文字コードが異なる場合、データ取得時に文字化けが起こることがあります。
ログインユーザの環境変数に下記を登録して対策をとります。
変数名:NLS_LANG
変数値:JAPANESE_JAPAN.JA16SJISTILDE
※設定後Accessを起動している場合は、Accessを再起動します。
ODBCデータソースの登録
ここではACCESS側でOracleに接続する時に利用するODBC接続用のデータソースを作成していきます。
Windows検索窓に ODBC と入力して ODBC データソースを起動します。
今回 64bit 版の Oracle Instant Client をインストールしたため、ODBCデータソースも 64bit版を利用します。
ユーザーDSNで「追加」ボタンを押して、インストールした Oracle instantclient を選択して完了ボタンを押します。
TNSサービス名のところでtnsnames.ora ファイルに記載したサービス名を選択します。
ここでプルダウンメニューに表示されない場合は、環境パスの設定が誤っているか、tnsnames.oraファイルの配置ミス、記載ミスの可能性があります。
必要事項を入力したら[接続テスト]ボタンを押して接続テストを行ってください。
正常に接続できることを確認してOKボタンで閉じて完了となります。
ACCESSでリンクテーブルを作成してOracleにODBC接続
それでは、実際に作成したデータソースを利用してOracleにODBC接続してみましょう。
以下、AccessからODBC接続する簡単な流れになります。
1.ACCESS起動後、外部データタブ ⇒ ODBCデータベース の順にクリックして外部データの取り込み画面を起動
2.「リンクテーブルを作成してソースデータにリンクする」を選択
3.「コンピューターデータソース」タブで作成したデータソースを選択
4.Oracle ODBCドライバ接続ダイアログでOracleのユーザー名とパスワードを入力
5.接続するテーブルを選択
次回接続時にパスワードの入力を省略したい場合は、パスワードの保存を選択。
※ソースからユーザIDとパスワードが見ることが出来るので知られて困る場合はチェックを外す。
以上でAccessからOracleへODBC接続してリンクテーブルを作成するまでの手順は完了です。
今回設定したODBC接続は設定した端末からしか利用できませんが、他の端末でも同じODBCデータソースの設定を行うことで、ACCESS側で設定を変更せずともOracleへの接続が可能となります。