こうこく
作 ▸
改 ▸

WindowsでOracleDBにOracle Instant ClientでODBC接続する

Windows7 (32-bit) に Oracle Instant Client 11.2.0.4.0 を入れる方法です。

前にWindows⇔Oracleのテスト環境を作ろうとしたときに、ちょっと困ったので書いておきます。

パッケージを入手

Oracleのサイトに行きます。

Oracle Instant Client

ダウンロードページに行きます。

『Instant Clientのダウンロード』をクリック
『Instant Clientのダウンロード』をクリック

『Instant Client for Microsoft Windows (32-bit)』をクリック
『Instant Client for Microsoft Windows (32-bit)』をクリック

規約に同意して、BasicとODBCのパッケージをダウンロードします。途中で「ダウンロードするならOracleの会員登録をしてね」的なことを言われたら会員登録してね。

『Accept License Agreement』にチェック
『Accept License Agreement』にチェック

『Basic』と『ODBC』をダウンロード
『Basic』と『ODBC』をダウンロード

以下のファイルを入手したら次に進みます。64bit版Windows用のだと、すこしファイル名が違うかもしれません。

  • Basic → instantclient-basic-nt-11.2.0.4.0.zip
  • ODBC → instantclient-odbc-nt-11.2.0.4.0.zip

インストール

入手したzipを解凍して中身を同じフォルダに入れます。アーカイバの設定によりますが、デフォルトでは両方とも同名の instantclient_11_2 フォルダに展開されるので、そのままでOKだと思います。

両方とも解凍して『instantclient\_11\_2』に入れる
両方とも解凍して『instantclient_11_2』に入れる

中身はこんな感じになります。ODBC_IC_Readme_Win.html を読めばこのページは用無しです。

odbcうんたらってファイルが入ってるか確認
odbcうんたらってファイルが入ってるか確認

そしたら C:\Oracle フォルダを作成して、そこに先程の instantclient_11_2 フォルダを移します。

※作らなくても C:\Oracle フォルダがもうあったよって場合は中断してください。この方法を使わなくても接続できる気がするので、そのパソコンにOracleの何かを入れた人に相談してください。

C:\Oracleに設置
C:\Oracleに設置

当該フォルダの odbc_install.exeJA オプションをつけて実行します。コマンドプロンプトで下記コマンドを実行してください (一瞬だけ黒窓がポップすると思います)。もしWindowsに『次の不明な発行元から~』と聞かれたらOKしてください。

cd C:\Oracle\instantclient_11_2
odbc_install JA

ここでODBCデータソースアドミニストレーターを起動してインストール済みのODBCドライバを確認すると、Oracle in instantclient_11_2 がインストールされているのが確認できます。

ODBCデータソースアドミニストレーターは、スタートメニュー→『プログラムとファイルの検索』にODBCと入力→『データ ソース (ODBC)』から開けます。

インストールできてる
インストールできてる

しかしここで謎の罠があるので注意です。上記コマンド実行後、 なぜか instantclient_11_2sqresus.dll が消えます。 この点は以下サイト様の記事がとっても参考になりました。

Oracle instant clientのODBCインストールではまった「Error Cannot Load Resource File sqresus.dll」 - kitatamittakaのIT系メモ帳kitatamittakaのIT系メモ帳

なので再度 instantclient-odbc-nt-11.2.0.4.0.zip を解凍して、sqresus.dll を取り出して移しておきましょう。

消えたsqresus.dllを復活
消えたsqresus.dllを復活

最後に環境変数をみっつほど設定します。もしふたつめとみっつめがすでにあったりしたら、やはり中断してそのパソコンにOracleの何かを入れた人に相談してください。

  1. PATHC:\Oracle\instantclient_11_2 を追加
  2. NLS_LANGJAPANESE_JAPAN.JA16EUC を設定
  3. TNS_ADMINC:\Oracle を設定 (接続先設定ファイル置き場なので任意です)

これでインストールは完了です。

接続設定

接続先を書いた tnsnames.ora ファイルを作成します。上で設定した TNS_ADMIN と同じ場所に置くので、ここでは C:\Oracle\tnsnames.ora ということになります。

tnsnames.ora
# データソース名【my_dsn】で、
# IP【111.111.111.111】ポート番号【1521】のサービス名【my_service】に接続する場合

my_dsn=
(DESCRIPTION =
	(ADDRESS = (PROTOCOL = TCP)(HOST = 111.111.111.111)(PORT = 1521))
	(CONNECT_DATA =
		(SERVICE_NAME = my_service)
	)
)

tnsnames.ora の書き方ですが、上記は一例です。接続先のOracleのバージョンか何かによって書き方が異なるみたいなので、以降の手順でうまくいかなかったらググって修正してください。。。例えば以下の記事によると、サービス名も SERVICE_NAME ではなく SID で指定する場合があったりするそうです。

tnsnames.ora の SID と SERVICE\_NAME - ablog

データソース作成

すべて完了したら、データソースを作成します。インストールした Oracle in instantclient_11_2 をドライバとして設定します。(画像の)

データソース追加
データソース追加

ドライバ選択
ドライバ選択

データソース名は一応上で設定したデータソース名と同じにしてください (ここあまり試してないです)。TNSサービス名のプルダウンに、上で設定したデータソース名が表示されるはずなので選択します。表示されない場合、tnsnames.ora の置き場所か書き方を見直してみてください。

日本語でインストールしなかったり、NLS_LANG を設定し忘れると、このへんが英語表示になってた気がします。

TNSサービス名が表示されるはず
TNSサービス名が表示されるはず

ほかの設定はデフォルトでOKです。設定したら接続テストしてみましょう。接続先DBのユーザーIDとパスワードを入力して、『正常に接続できました』と表示されればOKです。

接続テスト
接続テスト

OK!
OK!

使ってみる

おまけですが、作成したデータソースで試し斬りします。ここではA5:SQL Mk-2を用います。私も使ってるよって人は、もし起動中なら一旦終了して、もう一度起動しなおしてから試してください。

データベースの追加で Oracle Database を選択し、OCI経由 (Oracle Client利用) に設定して、接続文字列に先程作成したデータソース名を入力します。ユーザーIDとパスワードを入力して接続テストします。

OCI接続を選択
OCI接続を選択

接続できたらOKです。お疲れ様でした。

OK!
OK!

もしダメだったら、試しに接続文字列に (接続先IP):(ポート番号)/(サービス名) を入力して再度テストしてみてください。

ダメだったら
ダメだったら

これで接続できたとしたら、Oracle Instant Clientのインストール自体はできてるけど、データソースの作り方を間違えてるかもしれません。

この記事に何かあればこちらまで (非公開)