16.3.9 ORA-12514

接続記述子でリクエストされたサービスをリスナーが識別できないことを示します。

メッセージ

ORA-12514: Cannot connect to database. 
Service string is not registered with the listener at string.
(CONNECTION_ID=string)

たとえば:

サービス名を指定してクライアントを接続する場合:
ORA-12514: Cannot connect to database. 
Service sales_service.example.com is not registered with the listener
  at host 10.9.7.5 port 1522. 
(CONNECTION_ID=1ABcDEabCd1aB+AbCdE1aB==)
サービス名を指定せずにクライアントを接続する場合:
ORA-12514: Cannot connect to database. 
Service Default is not registered with the listener 
  at host 10.9.7.5 port 1522. 
(CONNECTION_ID=1ABcDEabCd1aB+AbCdE1aB==)

原因

リスナー・プロセスは、最初にOracle Databaseへのすべての接続を処理します。リスナーが受信した接続リクエストは、リスナーに動的に登録されていないか、リスナーのlistener.ora構成ファイルで性的に構成されていないサービス名(通常はデータベース・サービスの名前)を指定しました。このエラーは、リスナーが起動した後、データベース・インスタンスがリスナーに登録されるまでの間に発生する、一時的な状況と考えられます。

処置

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

  2. データベースまたはプラガブル・データベース(PDB)が稼働していることを確認します。クラウド・サービスを使用している場合は、データベース・サービスが稼働していることを確認します。

  3. 接続文字列内のSERVICE_NAMEパラメータまたはtnsnames.oraファイルの接続記述子で、リスナーが認識しているサービスが指定されていることを確認します。

  4. 簡易接続の接続文字列を使用している場合は、指定したサービス名がリスナーによって認識されていることを確認します。

  5. しばらくしてから、接続を再試行してください。まだ、データベース・インスタンスの登録が完了していない可能性があります。

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

  7. 次のいずれかのタスクを実行して、現在リスナーによって認識されているサービスを確認します。
    • データベース管理者に問い合せてください。

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

    • リスナーを実行しているマシンにアクセスできる場合は、次のいずれかを実行します。
      • 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