リスナー関連のエラー
関連コマンド
LSNRCTL
TNSPING TNS_NAME 例 TNSPING ORCL
グローバル・データベース名→サービス名になる
サーバー側
listener.ora
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost )(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl.168.0.30) (SID_NAME = orcl) (ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:D:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) )
tnsnames.ora
LISTENER_ORCL = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521)) ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) ) ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.168.0.30) ) )
クライアント側
tnsnames.ora
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.30)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL.168.0.30) ) )
- SID と グローバルサービス名を混同しないこと!
- サーバー側のLISTENER の初期インストール時は、LOCALHOST しか設定されておらず、192.168.XX等の実アドレスを追加設定する必要があった。
- クライアント側のtnsnames.ora
(SERVICE_NAME = ORCL.168.0.30) の代わりに
(SID = ORCL) でも接続可
サーバーから接続する場合
sqlplus scott/xxxx
sqlplus scott/xxxx@orcl
sqlplus scott/xxxx@localhost:1521/orcl.168.0.30
sqlplus scott/xxxx@192.168.0.30:1521/orcl.168.0.30
クライアントから接続する場合
sqlplus scott/xxxx@orcl
sqlplus scott/xxxx@192.168.0.30:1521/orcl.168.0.30
TnsNameを使わずに設定する場合、ポート番号の後ろに記述するのは、SIDではなくサービス名である
ORA-12638: 資格証明の取出しに失敗しました。
が発生した場合、クライアントの sqlnet.ora の以下の記述を #でコメントアウト
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
参考