Oracle OracleNet

OracleNetとは?

クライアントとサーバ間通信を行うサービス

リスナー(サーバ側プロセス)が両者を仲介する
oracle_net
トラフィック負荷サービス:Oracle Connection Manager を別途インストール可能

リスナー

リスナーとは?

データベースがクライアントからの初期接続要求を受け付けるアプリケーション
リスナーは、クライアントからの要求を受け取った後、データベースへ要求を引き渡す。
→セッションが確立、保持される。
セッションが保持された後の通信はリスナーを介さないので、
リスナーが停止してもデータベースの使用に支障は無い。
データベース

リスナー

クライアント
以下のツールで設定可能
Oracle Enterprise Manager(ネットサービス管理)
Oracle Net Configuration Assistant
Oracle Net Manager

プロセス操作

EnterpriseManageによる起動・停止の他、コンソールより以下のコマンドで操作可能

コマンド 結果
lsnrctl start (リスナー名) リスナープロセス起動
lsnrctl stop (リスナー名) リスナープロセス停止
lsnrctl status (リスナー名) リスナープロセス状態表示
lsnrctl srvices (リスナー名) リスナープロセスサポートサービス表示

1つのサーバーに対して複数のリスナープロセスを起動できる

NetCA

Oracle Net Configuration Assistant
ネットワーク関連設定ツール
リスナーをインストールできる。

リスナー構成

NetCA (1)
NetCA (2)
NetCA (3)

NetCA (4)
NetCA (5)
NetCA (6)

Net Manager

・リスナーの構成
・ローカルネーミングメソッドの構成
tnsnames.oraの作成
netmanager1
netmanager2
netmanager3
netmanager4
netmanager5
netmanager6

※%ORACLE_HOME%\home\NETWORK\ADMIN (Windows)
※$ORACLE_HOME%\network\admin (Linux)
# tnsnames.ora Network Configuration File: ~\home\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
NETSERVICE_OFFICE-YONE = ←接続識別子(ネットサービス名)
 (DESCRIPTION =
  (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  )
  (CONNECT_DATA =
   (SERVER = DEDICATED)
   (SERVICE_NAME = service_officeyone)
  )
 )
ORACLR_CONNECTION_DATA =
 (DESCRIPTION =
  (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  )
  (CONNECT_DATA =
   (SID = CLRExtProc)
   (PRESENTATION = RO)
  )
 )

ネーミングメソッド

クライアント → サーバ 接続の名前解決方法
NAMES.DIRECTORY_PATH = (TNSNAMES, HOSTNAME, EZCONNECT, LDAP, NIS, ONAMES)
ローカルネーミング
TNSNAMES
ホストネーミング
HOSTNAME
簡易接続ネーミング
EZCONNECT
ディレクトリネーミング
LDAP
外部ネーミング
NIS
Oracle Names
ONAMES

ネーミング
メソッド
概要 設定ファイル
ローカル ローカル(クライアント)の設定ファイルで名前解決を行う方式
設定を変更する場合、全クライアントの設定ファイルを変更する必要がある
> sqlplus ユーザ名/パスワード@接続識別子
> sqlplus user/password@TEST

tnsnames.ora
ディレクトリ LDAP対応のディレクトリサーバの設定ファイルで名前解決を行う方式
設定を変更する場合、1カ所の設定ファイルの変更で済む
LDAP対応のディレクトリサーバ
・Microsoft:ActiveDirectory
・Oracle:InternetDirectory

LDAP
Light weight Directory Access Protocol
TCP/IPネットワークにおけるデータベース接続用プロトコル

簡易接続 事前にネットワーク構成が不要
クライアント~サーバ間がTCP/IP接続されている前提
> sqlplus user/password@ホスト名:ポート番号/サービス名
> sqlplus user/password@XXX.XXX.XXX.XXX:XXXX/XXXXX
または
> sqlplus user/password@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=XXX)(HOST=XXXXX)(PORT=XXXX)))(CONNECT_DATA=(SERVICE_NAME=XXXXX)))
外部 NIS(NewworkInformationService)等のネーミングサービスで名前解決を行う方式

ホスト ホスト名を使用して接続
DNS、hostsファイルによってIPアドレス変換ができる事が前提
初期化パラメータ:SERVICE_NAMESでホスト名を指定
OR
listener.oraファイル:GLOBAL_DBNAMEでホスト名を指定
listener.ora

設定ファイル

一覧

ファイル名 内容
tnsnames.ora ローカルネーミングメソッド用プロファイル
sqlnet.ora OracleNetの構成ファイル
listener.ora リスナー構成ファイル
tnsnames.ora

ローカルネーミングメソッドで接続する場合に使用するファイル
# tnsnames.ora Network Configuration File: C:\oracledatabase\home\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
TEST = ←接続識別子(ネットサービス名)
 (DESCRIPTION =
  (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = XXX)(HOST = XXXXX)(PORT = XXXX))
   (ADDRESS = (PROTOCOL = XXX)(KEY = XXXXX))
  )
  (CONNECT_DATA =
   (SERVER = XXXXX)
   (SERVER = DEDICATED) 専用サーバ接続
   (SERVER = SHARED) 共有サーバ接続
   未指定 共有サーバ → 専用サーバ の順で接続
   (SID = XXXXX)
   (PRESENTATION = XXXXX)
   (SERVICE_NAME = XXXXX)
  )
 )
sqlplus ユーザ名/パスワード@接続識別子
で接続可能

sqlnet.ora

NONE/ALL/NTSのいずれか
SQLNET.AUTHENTICATION_SERVICES = (~)
ネーミングメソッドの優先順位
NAMES.DIRECTORY_PATH = (TNSNAMES, HOSTNAME)
接続識別子にドメインが省略された場合のデフォルトドメイン
NAMES.DEFAULT_DOMAIN = mydomain

ローカルネーミング構成時
サーバ側に必要
非ローカルネーミング構成時
クライアントとサーバに必要

listener.ora

リスナー構成ファイル
LISTENER = XXXXX //:リスナー名
 (DESCRIPTION_LIST =
  (DESCRIPTION =
   (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = XXX)(HOST = XXXXX)(PORT = XXXX))
   )
  )
 )
 
 SID_LIST_LISTENER = XXXX //:接続先データベース
 (SID_LIST =
  (SID_DESC =
   (SID_NAME = XXXXX)
   (ORACLE_HOME = C:\XXXX\XXXX)
   (PROGRAM = XXXXX)
  )
  (SID_DESC =
   (GLOBAL_DBNAME = XXXXX)
   (ORACLE_HOME = C:\XXXX\XXXX)
   (SID_NAME = XXXXX)
  )
 )
 
 LOGGING_LISTENER = ON[OFF]
 LOG_FILE_LISTENER = listener.log
 PASSWORDS_LISTENER = XXXXX
 TRACE_FILE_LISTENER = listener.trc
 TRACE_LEVEL_LISTENER = OFF