とあるITエンジニアたちの備忘録

新米エンジニア5人がお送りする、ちょっとためになる話

リスナーの役割

みなさん、こんにちは。
どうも、さいばーきゃっとです。

 

今回は、オラクルデータベースのリスナーについて、解説していきます。

 

唐突ですが、みなさんは、オラクルデータベースのリスナーという用語をご存知でしょうか?

私はオラクルデータベースを勉強するまで、知りませんでしたが、勉強をしていくうちに、このリスナーがクライアントとデータベースとの仲介役を担う重要な役割を持っていることを知りました。

 

リスナープロセスの役割

リスナープロセスは、データベースサーバ側で動作しているプロセスです。
このリスナーは、データベースサーバ側で「クライアントからの接続要求」を待ち続けており、クライアントからの接続要求を受信すると、その要求を目的のデータベースに転送します。
データべースが接続要求を承認すると、接続要求が転送されたクライアントとデータベースとの間で接続が確立され、通信が可能な状態になります

ここで重要になるのが、リスナーが起動していない場合、クライアントからデータベースサーバに接続することはできないということです。
データベースサーバが起動しているのに、データベースサーバに接続できないときは、リスナーが起動していない可能性がありますので、「リスナー制御ユーティリティ」を使用して、リスナーの状態を確認し、リスナーが停止中の場合、リスナーを起動させます。

 

リスナー制御ユーティリティ

リスナーは、デフォルトでは自動起動するようになっていません。
そのため、コンピュータの再起動などにリスナーを起動したり、起動中のリスナを停止したりするには、「リスナー制御ユーティリティ」(lsnrctlコマンド)を使用します

以下に、リスナーを制御するコマンドをまとめてみました。

f:id:cloudy0901:20161004071437p:plain

 

リスナーとの接続後

クライアントからの接続要求があると、リスナーがその接続要求を受け取り、新しくサーバプロセスを起動します。その後、クライアントのユーザプロセスとサーバプロセス間で接続が確立され、初期化情報がサーバプロセスに渡されます。この状態になるとリスナーの役目は終了になります。