【问题标题】:TNS-12541 :TNS :no listenerTNS-12541:TNS:没有监听器
【发布时间】:2014-02-03 12:06:38
【问题描述】:

我是 oracle dba 的新手,所以需要可以满足我的想法的帮助。我已经在 OS OEL 5.7 的虚拟机上安装了我的 oracle 11gr2 数据库,并且想用 toad32bit 连接我的这个远程数据库。所以我确实按照一些有用的链接下载并安装了 win32_11gR2_client on OS windows 7 64bit。除了尽我所能按照说明进行操作外,我的客户端无法连接到我的远程 oracle 数据库。在客户端使用 cmd 进行 tnsping sidname 始终没有出现错误的 tns 侦听器,如上所述

简要说明 LINUX机器:

listener.ora

LISTENER =
  (DESCRIPTION_LIST =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  (ADDRESS = (PROTOCOL = TCP)(HOST = testhost.testdomain.com)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle

tnsnames.ora

ORCL =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = testhost.testdomain.com)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl.testdomain.com)
  )
 )

sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /u01/app/oracle

lsnrctl 状态监听器

Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                03-FEB-2014 15:08:43
Uptime                    0 days 1 hr. 32 min. 59 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/testhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=testhost.testdomain.com)(PORT=1521)))
Services Summary...
Service "orcl.testdomain.com" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.testdomain.com" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

lsnrctl 服务监听器

 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
 Services Summary...
 Service "orcl.testdomain.com" has 1 instance(s).
 Instance "orcl", status READY, has 1 handler(s) for this service...
 Handler(s):
 "DEDICATED" established:0 refused:0 state:ready
 LOCAL SERVER
 Service "orclXDB.testdomain.com" has 1 instance(s).
 Instance "orcl", status READY, has 1 handler(s) for this service...
 Handler(s):
 "D000" established:0 refused:0 current:0 max:1022 state:ready
 DISPATCHER <machine: testhost.testdomain.com, pid: 5349>
 (ADDRESS=(PROTOCOL=tcp)(HOST=testhost.testdomain.com)(PORT=13094))
 The command completed successfully

WINDOWS 7 客户端说明 C:\oracle\product\11.2.0\client_1\network\admin ENV TNS_ADMIN=C:\oracle\product\11.2.0\client_1\network\admin

注意:在 WINDOWS 服务上不存在任何与 Oracle 相关的服务(意味着不存在

我的客户 tnsnames.ora

ORCL =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = testhost.testdomain.com)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl.testdomain.com)
   )
  )

C:\Users\farhan>tnsping orcl(结果是)

Used parameter files:
C:\oracle\product\11.2.0\client_1\network\admin\sqlnet.ora

Used TNSNAMES adapter to resolve the alias 
Attempting to contact (DESCRIPTION = (ADDTESS_LIST = (ADDRESS - (PROTOCOL = TCP (HOST = 
testhost.testdomain.com)(PORT = 1521))) (CONNECT_DATA= (SERVER = DEDICATIED) (SERVICE_NAME
= orcl) (INSCTANCE_NAME = orcl) (GLOBAL_NAME = orcl.testdomain.com)(RDB_DATABSE =   orcl)) (TYPE_OF_SERVICE = dedicaated))
TNS-12541 : TNS:no listener

cat /etc/hosts(结果是)

      # Do not remove the following line, or various programs
      # that require network functionality will fail.
      #127.0.0.1              testhost.testdomain.com testhost localhost.localdomain localhost
      127.0.0.1               localhost.localdomain localhost
      #10.10.1.114             testhost.testdomain.com testhost
      192.168.0.103   testhost.testdomain.com testhost
      ::1             localhost6.localdomain6 localhost6

对于我要求发布的进一步说明

# netstat -an | grep 1521 | grep tcp | grep LISTEN
tcp        0      0 0.0.0.0:1521                0.0.0.0:*                   LISTEN      
[root@testhost ~]# grep testhost /etc/hosts
#127.0.0.1              testhost.testdomain.com testhost localhost.localdomain localhost
#10.10.1.114             testhost.testdomain.com testhost
192.168.0.103   testhost.testdomain.com testhost
[root@testhost ~]# dig +short testhost.testdomain.com
174.137.125.92

【问题讨论】:

  • 对不起,我按照您的指示编辑了我的帖子。除此之外,在 netstat 中,端口号为 1521 的预期 IP 地址未在侦听。抱歉,我对您的问题了解得不够深入
  • 感谢您的回复亚历克斯。这里没有什么可以隐藏的,因为我只是一名学生并且处于学习状态。规定的主机/域名是真实的。是的,通过 ping testhost.testdomain.com 两者都可以访问。就我所说的 netstat 而言,从那里我看不到任何 linux (192.168.xx.xxxx) 机器的 ip,我认为应该在那里声明它以及端口号 1521 在 netstat cmd 接口上处于打开状态但是(这是我从那里看到结果的猜测,所以我可能是错的)。
  • 您要求的上述命令返回与 ifconfig 相同的 IP。是的,VM 正在我的笔记本电脑上运行。我非常感谢亚历克斯你在这里考虑我的问题。再次感谢
  • windows 应该监听 linux ip 192.168.0.103(如前所述)。 windows ip是192.168.0.102
  • 这似乎与 Oracle 或开发无关,这似乎是您的 Windows 机器与 VM 通信的问题。我建议您在 Server Fault 上询问这个问题,并从 VM/Windows 设置开始,包括您正在使用的软件和地址等。我认为不需要所有 Oracle 特定的详细信息;也许先尝试让 telnet 或 ssh 或更标准的东西工作。

标签: oracle11g oracleclient oracle-net-services


【解决方案1】:

经过大量搜索,找到了一个简单的方法来解决它。只需按照以下步骤操作:-

  1. 检查监听器的状态

  2. 打开命令提示符并输入 lsnrctl status

  3. 你不会得到听众。

  4. 所以,现在打开下面的 listener.ora 文件 目录 C:\oracle\app\oracle\product\11.2.0\server\network\ADMIN

  5. 打开该文件并使用您的计算机名称更改主机参数 ii}您可以通过右键单击我的电脑和 检查您的计算机名称,并将主机参数替换为您的 计算机名称如下。

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = Electron-PC)(PORT = 1521))))

所以在这里你可以观察HOST = Electron-P,这是我的计算机名

  1. 保存 listener.ora 文件并再次返回 cammand propt
  2. 在命令提示符 lsnrctl start 中键入以下内容

这将启动 OracleTNSListner 你可以在服务中检查它 通过打开任务管理器的服务选项卡。如果没有自动启动你 可以启动了。

仅此而已,您就可以再次在 oracle 上工作了。最好的 运气。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。以下对我有用。

    • 如果您有,请从您的计算机上卸载所有 oracle 文件 以前安装过。通过转到停止其所有服务 cmd中的services.msc。

      1. 列表项
      2. 重新启动计算机。
      3. 如果您还没有安装 oracle,请安装。

      4. 然后进入cmd

      5. 在 cmd 中键入 services.msc 6.选择任何服务并输入“O”。这将为您提供以 O 开头的所有服务。 7. 从列表中选择 OracleJobScheduerXE。右键单击转到属性。
      6. 在一般选项卡中转到启动类型。从中选择自动。
      7. 单击应用,然后单击开始,然后单击确定。 10.还启用 OracleXeClrAgent 并启动您的服务。因此,除了 OracleMTSRecoveryService 之外,总共有 5 个服务将运行。
      8. 现在进入 cmd type lsnrctl->enter-> type status 你应该可以看到你的实例了。

    如果有帮助,请告诉我。

    【讨论】:

      【解决方案3】:

      我曾经遇到过同样的问题。我能够连接 将我的计算机名称添加到:/etc/hosts "ip_address computer_name"

      大家好

      我也有同样的问题,任何人都可以建议我“computer_name”应该是我安装客户端的 Windows 计算机名称还是安装数据库的远程服务器名称。

      【讨论】:

        猜你喜欢
        • 2017-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 2020-06-30
        • 1970-01-01
        • 2012-11-01
        • 1970-01-01
        相关资源
        最近更新 更多