Oracleパラメタファイルの意味と設定方法を考えよう

Oracle ClientはOracel Serverに「サーバー→リスナー→データベース」の順番に接続していきますが、僕の場合Oracleの接続エラーで一番多いのはリスナーに関係するものであり、中でもエラーの常習犯が以下のORA-12514です。

Oracleクライアントからサーバーへの接続時のエラー

error

これは「クライアントのtnsnames.oraのHOSTパラメータで指定したホスト名(またはIPアドレス)上で、tnsnames.oraのPORTパラメータで指定したポート番号でサーバーのリスナーが起動していない(Listenしていない)」ということです。

PCにOracleサーバーとクライアントを両方インストールすると、サーバーのNet Configuration AssistantやNet Managerは無効になります。よってこの場合に設定するtnsnames.oraとlistener.oraはクライアントのものであり、サーバーのもの(dbhome_1フォルダ内のもの)は使用しません。

ローカルネーミングパラメータtnsnames.ora

  • C:\app\HP\product\11.2.0\client_1\network\admin\tnsnames.ora
sqlplusからorclというデータベースサービスにアクセスするには「localhostというサーバーのポート番号1521でリスナーが起動」していればよいわけです。

リスナーパラメータlistener.ora

  • C:\app\HP\product\11.2.0\client_1\network\admin\listener.ora
「HP-PC(localhostでもOK)というホスト名のポート番号1521でリスナーが起動」していればよいわけです。

今動いているデータベースサービス名やポート番号はサーバー上から以下のコマンドで確認の上、パラメタファイルと比較します。

lsnrctl

ネーミングメソッドパラメータsqlnet.ora

Oracle ClientからOracle Server DBの接続は、サーバーとクライアント両方のOracle Net(アプリケーション層のプロトコル)を通じて、リスナーと接続できるようにします。Oracle Netの構成では、ネーミングメソッドパラメータsqlnet.oraでOracle Server DBの識別方法を設定します。

  • C:\app\HP\product\11.2.0\client_1\network\admin\sqlnet.ora
TNSNAMESはローカルネーミングファイルtnsnames.oraを使った接続で、EZCONNECTはネーミングパラメータを使わず、以下の簡易接続するものです。

sqlplus

tnsnames.oraファイルの構成パラメターをローカルネーミングパラメター、listener.oraファイルの構成パラメターはリスナーパラメーター、sqlnet.oraファイルの構成パラメータをネーミングメソッドパラメータと呼びます。