Windows10 64bit環境でACCESSからODBCでOracleに接続する方法
今までWindow環境からODBCを使用し、ACCESSでOracle内にあるテーブル等を参照する事を行っていました。
Windows10の64bitに切り替えてからしばらく行っていなかったのですが、久しぶりにACCESSから接続しようとしてもODBCの設定が過去の記憶通りに進められません。
検索して解決に至りましたが、64bitである事がこんな所にも影響してくるとは思ってもなかったのでちょっとまとめてみました。
何も調べず今まで通りにやってみた
元々OsqlEditでの接続は行っていたのでOracle Clientは11g(32bit)をインストールしており、またOfficeはOSが64bitだからという事で64bit版をインストールしていました。
Officeが64bitだったのは単にOSに併せた以外に理由はありません。
またこれまでACCESSからODBCドライバー経由でOracleに接続していた事もあり、今回も同じ様に接続できると考え設定を開始します。
まずはODBCの設定を、という事でコントロールパネル、または「Windows管理ツール」の中から設定を開きます。
その際、ODBCの設定が32bitと64bitの2つあります。
開いてみると64bit側にはほとんどドライバーがありませんが32bit側にはドライバーが大量にあります。
なのでこれまでもそうだったし、Oracle Clientもそうなので32bit側で設定しました。
その後、ACCESSから選択しようと思ってもドライバーが表示されずに接続できないという状況に陥り困ってしまった訳です。
対処方法
調べるまでは他のアプリやドライバーの様に64bitアプリからでも32bitのドライバーが使えると思い込んでいました。
ですが色々と調べてみた所、そもそもACCESS自体に64bit版と32bit版ではODBCの互換性がない事が判明しました(これはMicroSoftのヘルプからですが、URLコロコロ変わるので記載は避けます)。
なので32bit版で使えたドライバーは64bit版では一切使えないそうです。
互換性がない為に認識されない、という原因が分かったので以下の対処法を実施しました。
Officeの入れ直し
今のOfficeは32bit版と64bit版で共存出来ません。
なので入れ直すしかない、という事で任意に32bit版を選択してインストールし直しています。
ちなみに64bit版でのメリットは感じた事はありません。メモリが8GB程度では無用の長物だったみたいです。
この入れ直し時に注意したのはメーラーとして使っているOutlookです。
というのもアンインストール時にデータファイルは予告も警告も無く、 躊躇無く消されます。
仕事のメールアーカイブを消されると困るのでバックアップを取った上で入れ直しています。
今回は64bit版をアンインストールしてすぐ32bitをインストールしたのですが、設定やデータが読めない等の問題は一切起きませんでした。
またOffice以外にインストールしていたVisioも同時に入れ直しています。
どうもOfficeとしてくくられるアプリケーションは全てビット数をそろえる必要があるようですがいい迷惑ですね。
ORACLE Clientのインストール
元々11gの32bit版をインストールしていた事もあり特に何も行いませんでした。
今は会員登録してあればClientをはじめOracleは自由にダウンロードが可能の様です。
ですがOracleの公式サイトでダウンロード場所を見つけるのは結構至難の業。
なので公式サイト内でさまようよりもGoogle等でダウンロードページを検索した方が早いと思います。
またインストールは管理者権限で行い、オプションも全てインストールしています。
ですがただ接続するだけならデフォルトのままで問題ないと思います。
また私は問題ありませんでしたが、バージョンによりインストーラーがこけるエラー等もある様です。
なので別途ご確認頂くか、都度最新版を公式サイトからダウンロードして頂くのがよろしいかと思います。
ODBCの設定
Oracle Clientをインストールすると(当然ですが)ODBCドライバーは32bitだけインストールされています。
Windows10だと[スタートメニュー]-[Windowsシステムツール]-[管理ツール]-[ODBCデータソース(32bit)]をクリックします。
もしくはコントロールパネルを開き、その中にある管理ツールからODBCデータソース(32bit)をダブルクリックしても表示可能です。
表示されたらOracleのドライバーを追加してやります。
追加の設定
Office2016とOracle11gでしたらここまでの設定で接続できるはずです。
11g以前ではシンボリックリンクの設定が必要みたいなのでこちらを参考にしてみてください。
Windows10(64bit)でAccessのODBC接続ができない原因と対処法・解決策 - Useful Info ログ
蛇足ですがODBCはデフォルトのタイムアウトが60秒なので回線状況やオブジェクト量によってはタイムアウトする事があります。
調べてみたら設定で時間を変えられる様な記述もありましたが、今見るとその設定項目は無い様です。
とりあえずはODBCドライバーの設定に「問い合わせタイムアウトを有効化」というチェックボックスがあるので外してやると時間制限によるタイムアウトはしなくなります(位しか方法が無いです)。
おわりに
これらの対策で無事Oralceに接続できる様になりました(と言っても大した事してないですけど)。
マイクロソフトでもオラクルでもいいですけどどこかがちゃんとアナウンスしていい内容だと思うんですけどね。どこかでしてたのかな?
ACCESS、Oracle、ODBCのどれも昔からある為、古い情報も多く調べるのにちょっと手間取りましたが、無事目的を果たせたのでよしとしましょう。