私は一日中この問題に取り組んでおり、ここや他の場所の投稿を読んでいます。私はこのエラーを乗り越えることができません。サーバー(CentOS)でローカルに問題なく接続できますが、同じサブネット上にあるMac(OSX Mavericks)経由で接続しようとすると、TNS:no listenerエラーが発生し続けます。以下は、この種の問題に対して要求されたと思われる情報に基づいて取得したメモです。
--------------------------------------------------------------------------------
MISC NETWORK CONFIG:
--------------------------------------------------------------------------------
[root@rubyrailssvr ~]# more /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.14 rubyrailssvr.homenet.com
[root@rubyrailssvr ~]#
[root@rubyrailssvr ~]# more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rubyrailssvr.homenet.com
[root@rubyrailssvr ~]#
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
LISTENER.ORA File:
--------------------------------------------------------------------------------
[Oracle@rubyrailssvr ~]$ more /u01/app/Oracle/product/11.2.0/xe/network/admin/listener.ora
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(Oracle_HOME = /u01/app/Oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.1.14)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
[Oracle@rubyrailssvr ~]$
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
TNSNAMES.ORA File:
--------------------------------------------------------------------------------
[Oracle@rubyrailssvr ~]$ more /u01/app/Oracle/product/11.2.0/xe/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.1.14)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
[Oracle@rubyrailssvr ~]$
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SQLNET.ORA File:
--------------------------------------------------------------------------------
jfhogarty@rubyrailssvr:/u01/app/Oracle/product/11.2.0/xe/network/admin$ more sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (ALL)
NAMES.DIRECTORY_PATH= (TNSNAMES,ONAMES,HOSTNAME)
jfhogarty@rubyrailssvr:/u01/app/Oracle/product/11.2.0/xe/network/admin$
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
CHECK LISTENERS:
--------------------------------------------------------------------------------
[Oracle@rubyrailssvr ~]$ lsnrctl
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 13-AUG-2014 17:56:21
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.2.0 - Production
Start Date 13-AUG-2014 17:46:45
Uptime 0 days 0 hr. 9 min. 39 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /u01/app/Oracle/product/11.2.0/xe/network/admin/listener.ora
Listener Log File /u01/app/Oracle/diag/tnslsnr/rubyrailssvr/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=192.168.1.14)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=rubyrailssvr.homenet.com)(PORT=8080))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XE" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL>
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
ON THE CLIENT:
--------------------------------------------------------------------------------
➜ ~ more /usr/local/Oracle/admin/network/tnsnames.ora
rubyrailssvr =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.1.14)(PORT = 1521))
(CONNECT_DATA = (SERVICE_NAME = XE))
)
rubyrailssvr.homenet.com =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.1.14)(PORT = 1521))
(CONNECT_DATA = (SERVICE_NAME = XE))
)
➜ ~
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
TRYING TO CONNECT:
--------------------------------------------------------------------------------
➜ ~ sqlplus system@rubyrailssvr
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 13 18:21:50 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter password:
ERROR:
ORA-12541: TNS:no listener
Enter user-name: %
➜ ~
➜ ~ sqlplus [email protected]
SQL*Plus: Release 11.2.0.4.0 Production on Wed Aug 13 18:22:17 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter password:
ERROR:
ORA-12541: TNS:no listener
Enter user-name:
➜ ~
--------------------------------------------------------------------------------
最初に、応答をありがとう。私はMacで作業していますが、インスタントクライアントにはtnspingユーティリティが含まれていません。リモートコンピューターからログインしようとしたところ、TNS:リスナーエラーが表示されませんでした。サーバーへのログインは問題ありません。
以前にtelnetテストを試しましたが、サーバーにtelnetをインストールして実行していないため、このテストは役に立ちませんでした。ただし、テストに役立つ可能性があるため、Telnetをインストールすることにしました。その際、コマンドラインでiptablesへのポートを開くために実行したコマンドが存在しないことに気付きました。だから私はそのファイルを更新し、今すべてが働いています。
vim /etc/sysconfig/iptables
[BEFORE:]
# Generated by iptables-save v1.4.7 on Fri Jan 31 09:19:34 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6630:522769]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-Host-prohibited
-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
COMMIT
# Completed on Fri Jan 31 09:19:34 2014
[AFTER:]
# Generated by iptables-save v1.4.7 on Fri Jan 31 09:19:34 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6630:522769]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m state --state NEW --dport 23 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT
-A INPUT -p tcp --dport 1521 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-Host-prohibited
-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
COMMIT
# Completed on Fri Jan 31 09:19:34 2014
service iptables restart
昨日はしっぽを追いかけすぎて、iptablesファイルを確認するつもりはありませんでした-/ slap head!
ありがとうございました、
ジョン...(HoGi)
トラブルシューティングの一連の手順
C:\>tnsping MYDB
(確認:データベースリスナーがサーバーサイドで実行されています)C:\>telnet hostname 1521
C:\>sqlplus system/pass@MYDB
またはC:\>sqlplus system/pass@hostname:1521/MYDB
(確認:データベースが開いている)Listener.oraファイル内
host = LOCALHOSTを設定
理由は、ワイヤレスネットワークの場合、再起動後に毎回異なるIPアドレスが割り当てられるため、listener.oraファイルで固定IPアドレスを使用すると、リスナー設定が無効になるためです。
Host = LOCALHOSTを使用すると、リスナーサービスの起動時にシステムを再起動する間のIPアドレス設定に関して一貫性が保証されます。