4 クライアント接続設定(クライアント編)

本ページではORACLEデータベースに接続するためのクライアント側の接続手順を記載します。

関連:ORACLEクライアント接続設定(サーバ編)


前提

クライアント側からサーバに接続するためにはoracleクライアントと呼ばれるプログラム群がクライアントにインストールされている必要があります。 oracleクライアントはサーバソフトウエア(enterprise editionやstandard edition等のデータベースを起動するためのソフトウエア)に含まれているため サーバソフトウエアが入っていれば追加インストール等は不要ですが、サーバに対して接続するだけの端末用にクライアントソフトウエアのインストールメディアが別に用意されています。

また、クライアントソフトウエアから接続以外に不要なプログラムを除いた最小構成のインストール不要なインスタントクライアントというソフトウエアもOTN上で配布されています。 本ページはクライアントソフトウエアがインストールされた状態を想定しています。

接続設定1(tnsnames.oraによる接続)

tnsnames.oraは接続先サーバの定義を記載するファイルでこの設定ファイルを編集することでクライアントは接続先情報をプログラムに書き込まずに接続することができます。 jdbc(※)以外のプログラム言語で書かれたクライアントプログラムはデフォルトで以下のファイルを読み込もうとします。
java(JDBC)では一般的にtnsnames.oraを読み込む設定はとらず、APサーバのプロパティファイル等に簡易接続ネーミング形式の接続情報を記載します

unix系
$ORACLE_HOME/network/admin/tnsnames.ora
Windows
%ORACLE_HOME%/NETWORK/ADMIN/tnsnames.ora

なお環境変数TNS_ADMINを設定した場合上記パスではなくTNS_ADMINの値がデフォルトパスになります。 また、windowsの場合プログラムのカレントディレクトリにtnsnames.oraがあった場合そちらを優先して読み込む場合があります。

以下は「WIN1」という接続先hostに対してポート1521のリスナへ「ORCL102」というサービス名のデータベースに対して接続する「TEST」という接続識別子の設定です。 この記述があることでプログラムが接続する際、「TEST」という接続識別子を記述するだけでこのデータベースに接続を試みます。

tnsnames.ora
TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = WIN1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL102)
    )
  )

接続識別子をどのように記載するかは各プログラム言語やミドルウエア毎に異なりますのでミドルウエア概要ページ等を参考にしてください。 sqlplusの場合は以下のような指定が可能です。

sqlplus user/password@接続識別子

接続設定2(tnsnames.oraの定義を直接渡して接続)

tnsnames.oraに記載する定義をプログラムに直接渡すこともできます。上記例だと以下のようになります。

sqlplus user/pass@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=WIN1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL102)))

接続設定3(簡易接続ネーミング・メソッドによる接続)

接続設定1の方法はtnsnames.oraの設定が必要ですが、10g以降のクライアントには簡易接続ネーミング・メソッドという機能が追加されておりtnsnames.oraを設定をせずに接続することができます。 この接続方法では接続識別子の代わり以下を設定するのみです。便利ですが細かい設定(専用サーバ接続、共有サーバ接続の指定等)ができませんので注意してください。

hostname:port番号/サービス名
例えばsqlplusでは以下のよう入力します。 sqlplus user/pass@localhost:1521/ORCL102
★ORACLE案件承ります