Linux EL5にインストールされているOracle11gに接続しようとすると、次のエラーが発生します
SQL> connect sys/password@ud06 as sysdba
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
network/adminの下の私のlistener.oraは次のとおりです
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(Host=ud06)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(Oracle_HOME=/home/Oracle/app/Oracle/product/11g)
(SID_NAME=orcl))
(SID_DESC=
(SID_NAME=plsextproc)
(Oracle_HOME=/home/Oracle/app/Oracle/product/11g)
(PROGRAM=extproc)))
私のtnsnames.oraは次のとおりです
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = localhost.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
UD06=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = ud06)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
私のlsnrctlステータスは次のように表示されます。
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=ud06.us.server.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 17-FEB-2010 16:23:06
Uptime 0 days 0 hr. 12 min. 33 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/Oracle/app/Oracle/product/11g/network/admin/listener.ora
Listener Log File /home/Oracle/app/Oracle/product/11g/log/diag/tnslsnr/ud06/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=ud06.us.server.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Ud06に正常にpingできますか(ud06.us.server.comではなくud06として)?
コマンドは何をしますか
lsnrctl services
公演?
編集:データベースインスタンス名が実際には「orcl」ではないように思えますか? lsnrctl servicesの出力からわかることは、「orcl」サービスは、listener.oraファイルで定義されていますが、実際には実行されていないということです。
サーバーに直接接続してログオンできますか?その場合、Oracle_SID環境変数値として何を使用しますか? SYSユーザーとしてログインし、次のコマンドを発行します。
ALTER SYSTEM REGISTER;
次に、lsnrctl servicesコマンドを再度発行して、追加のインスタンスが表示されないかどうかを確認します。
また、Alexが指摘しているように、tnspingコマンドは完全修飾サービス名を報告しています。 sqlnet.oraファイルを編集し、NAMES.DEFAULT_DOMAIN値に値がある場合はNULLに設定します。
編集2:tnsping ud06 サーバー上は機能しますか?または、クライアントとサーバーが異なるシステム上にあるという私の仮定は間違っていますか?
この問題への答えは非常に簡単です。 .oraファイルやその他の構成について心配する必要はありません。 Oracleはこれらすべてを完璧に実行します。
コマンドライン経由で接続している場合にのみ、@記号が含まれているパスワードと混同されます。
したがって、コマンドラインSQLを介して接続するときは、「@」を含むパスワードを使用しないでください。 Webインターフェイスを使用して、「@」記号を含まないパスワードを持つアカウントを作成するだけです。
あれは!!問題が解決しました。数日頭を骨折していたのですが、問題は解決しました!!
tnsping
出力のSERVICE_NAME
がtnsnames.ora
のエントリと一致しません。そのファイルはWindowsボックスまたはLinuxボックスからのものですか? tnsnames.ora
のローカル(Windows)u06
エントリがないようで、サービス名がそれを展開する必要があるかどうかを推測しています-それがホスト名アダプタへの参照の意味だと思います。
次のような接続文字列を指定します。
サーバー名:ポート/サービス名;ユーザー名;パスワード
私も同じエラーに直面していました、このコードを試してください:
SQL> conn hr/hr @pdborcl;
同じエラーが見つかった場合は、プラグ可能なデータベース名が異なることを意味します。 sqlplus
に次のコマンドを書き込むだけで、プラグ可能なデータベース名を確認できます。
sql> SELECT name, con_id FROM v$pdbs;
また、ORA-12154に遭遇しました:TNS:指定された接続識別子を解決できませんでした。Oracleのoinstallグループに接続しようとしているユーザーを追加すると修正されました。
まず、Oracleインスタンスが開始されているかどうかを試してください。
windowsの場合:
スタート->設定パネル->管理ツール->サービス-> ORACLESERVICEORCL(ちなみに私のインスタンス)->スタート