Oracleの静的サービス登録と動的サービス登録
リスナーがDBのサービスをリッスンするには方法が二つある
listner.oraへの記述方法の違いで選り分けてみる
【静的登録】
静的、つまりパラメータに記載することで明示的にリスナーを登録しなければならない
<記載例>
・listner.ora
SID_LIST_ORCL01=
(SID_LIST =
(SID_DESC =
(SID_NAME = ORCL01)
(ORACLE_HOME = /u01/app/ora12c/product/12.2.0/dbhome_1)
)
)
ORCL01=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdesu)(PORT = 1521))
)
)
この場合、
ORCL01エントリで「1521ポート」を使用することを設定(これは静的・動的同じ)、
SID_LIST_ORCL01エントリで「/u01/app/ora12c/product/12.2.0/dbhome_1」にインストールしたoracleから起動している「ORCL01」というデータベースをリスナープロセスに
登録する。
【動的登録】
<記載例>
明示的にパラメータに記載せず、LREGプロセスが各パラメータファイルを定期的に読み込んで設定してくれる。
・listner.ora
ORCL01=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdesu)(PORT = 1521))
)
)
・tnsnames.ora
ORCL01_srv=
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdesu)(PORT = 1521))
)
)
#リスナーエイリアス
LISTNER_ORCL01_srv=
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdesu)(PORT = 1521))
接続識別子を「ORCL01_srv」に設定
リスナーエイリアスも設定しておく(※LOCAL_LISTENER設定用に)
tnsnames.oraでリスナーエイリアスに設定した識別子(上の例だとLISTNER_ORCL01_srv)を初期化パラメータLOCAL_LISTENERに設定する。
※LOCAL_LISTENERにはリスナーエイリアスではなく、直接ホスト名やポート番号の記載をすることも可能。エイリアスはあくまでエイリアスで、直接内容を記載することも可能。
要はDB側(LREGプロセス)がリスナーを認識するために、LOCAL_LISTENERを設定する必要がある。
LREGプロセスはリスナーに接続できると自身が所属しているDBのサービス名をリスナーに提供する。
するとリスナー側はユーザプロセスからの接続要求をどこのDBに流せば良いか、認識するようになるといった流れである。
・初期化パラメータ(ファイル)
LOCAL_LISTENER=LISTNER_ORCL01_srv
SERVICE_NAMES=~
PFILEを使用しているならファイルに記載、
SPFILEを使用しているならalter文で設定変更(のち確認)
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST= hostdesu)(PORT = 1521))';
alter system set servie_names = service_name ;
local_listnerはリスナーエイリアスを設定(tnsnames.ora)していればそっちでも設定可能
alter system set local_listener=LISTNER_ORCL01_srv;
確認コマンド
show parameter local_listener
show parameter service_names