16.3.10 ORA-12516

一致するプロトコル・スタックが設定された使用可能なハンドラをリスナーが見つけられないことを示します。

メッセージ

ORA-12516: Cannot connect to database.
Listener at string does not have a protocol handler 
  for string ready or registered for service string.
(CONNECTION_ID=string)
たとえば:
ORA-12516: Cannot connect to database. 
Listener at host 10.9.7.5 port 1522 does not have protocol handler
  for tcp ready or registered for service sales_service.example.com. 
(CONNECTION_ID=1ABcDEabCd1aB+AbCdE1aB==)

原因

Oracle Databaseのリスナー・プロセスによって接続が拒否されました。指定されたサービス名に対して既知の使用可能なサービス・ハンドラは、クライアントがリクエストしたプロトコル・スタックをサポートしていません。

処置

  1. 指定した接続文字列に誤りがないかを確認します。

  2. クラウド・サービスを使用している場合は、クラウド・サービス・コンソールに表示される接続文字列をレビューします。

  3. しばらくしてから、接続を再試行してください。サービス・ハンドラがブロック状態の可能性があり、新しい接続が受け入れられていません。

  4. CONNECTION_ID値を使用して、今後の診断のために、この接続の試行をトレース・ファイルで追跡します。

  5. 現在リスナーに認識されていて、接続を受け入れているハンドラを確認するために、次のいずれかのタスクを実行します。
    • データベース管理者に問い合せてください。

    • クラウド・サービス・コンソールで接続文字列を再確認します。

    • リスナーを実行しているマシンにアクセスできる場合は、次のいずれかを実行します。
      • lsnrctl services

      • リスナーがlistener.oraファイルで指定されている場合は、次を実行します。
        lsnrctl services listener_name
      • Oracle Connection Manager (Oracle CMAN)プロキシ・リスナーの名前がcman.oraファイルで指定されている場合は、次を実行します。
        cmctl show services -c cman_name
      • Oracle Global Service Manager (Oracle GSM)リスナーの名前がgsm.oraファイルで指定されている場合は、次を実行します。
        gdsctl services -raw -gsm gsm_name
    • 登録されたハンドラが、必要なプロトコル・スタックをサポートするように構成されていることを確認します。たとえば、接続文字列で使用されているプロトコル、セッションおよびプレゼンテーションが一致するようにします。