oracle服务器无法连接,报错TNS:tns:lost contact

本文介绍了解决Oracle 11g R2中监听器无法识别服务的问题,通过检查监听器状态、手动注册服务及修改listener.ora配置文件等步骤最终解决了远程连接时出现的ORA-12514错误。

监听器 The listener supports no services 问题解决方法



ORACLE版本:11gR2
开启监听器,远程连接报错:
ORA-12514: TNS:linstener does not currently know of service requested in connect descriptor
解决问题思路:
查看监听器状态,关闭后重新启动监听器
[oracle@rhel5 admin]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 14-AUG-2012 19:20:55

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/11.2/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/11.2/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/rhel5/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.210)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.11.210)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                14-AUG-2012 19:20:55
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/rhel5/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.210)(PORT=1521)))
The listener supports no services
The command completed successfully

结果发现错误信息:The listener supports no services

查看数据库service_name
sys@ORCL> show parameter service

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      orcl

手工注册有时能够解决问题:
sys@ORCL> alter system register;
System altered.

查看监听器状态:
[oracle@rhel5 admin]$ lsnrctl start

注册成功:
[oracle@rhel5 admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 14-AUG-2012 20:23:26

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel5.oraclelinux.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                14-AUG-2012 20:22:49
Uptime                    0 days 0 hr. 0 min. 36 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/rhel5/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel5.oraclelinux.com)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

注册依然失败:
[oracle@rhel5 admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 14-AUG-2012 20:18:02

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rhel5.oraclelinux.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                14-AUG-2012 20:17:45
Uptime                    0 days 0 hr. 0 min. 17 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/rhel5/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rhel5.oraclelinux.com)(PORT=1521)))
The listener supports no services
The command completed successfully

依然有错误信息:The listener supports no services

重建监听器:
问题依旧

查看LISTENER内容:
[oracle@rhel5 admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rhel5.oraclelinux.com)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

在LISTENER里添加内容:
SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
                      #BEQUEATH CONFIG
         (GLOBAL_DBNAME=orcl)
         (SID_NAME=orcl)
         (ORACLE_HOME=/u01/app/oracle/product/11.2)
                      #PRESPAWN CONFIG
        (PRESPAWN_MAX=20)
        (PRESPAWN_LIST=
          (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
        )
       )
      )

重启监听器,问题解决。


报错 ORA - 12547: TNS:lost contact 通常表示客户端与数据库服务器之间的连接丢失,以下是一些可能的解决办法: ### 网络层面 - **检查网络连接**:确保客户端和服务器之间的网络稳定,没有丢包或延迟过高的情况。可以使用 `ping` 命令测试客户端和服务器之间的连通性,使用 `traceroute` (Linux)或 `tracert` (Windows)命令检查网络路径是否正常。 ```bash ping <服务器IP地址> traceroute <服务器IP地址> ``` - **防火墙设置**:检查客户端和服务器端的防火墙设置,确保允许 Oracle 相关的端口(通常是 1521)通过。可以临时关闭防火墙进行测试,如果问题解决,则需要配置防火墙规则允许 Oracle 端口通信。 ```bash # 临时关闭 Linux 防火墙(以 CentOS 为例) systemctl stop firewalld ``` ### TNS 配置层面 - **TNSNAMES.ORA 文件**:检查客户端的 `tnsnames.ora` 文件配置是否正确,确保服务名、主机名和端口号等信息无误。 ```plaintext # tnsnames.ora 示例配置 ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <服务器主机名>)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ``` - **LISTENER.ORA 文件**:检查服务器端的 `listener.ora` 文件配置,确保监听程序正常启动且监听的端口正确。可以使用 `lsnrctl status` 命令查看监听程序的状态。 ```bash lsnrctl status ``` ### 数据库服务层面 - **数据库服务状态**:确保数据库实例正常运行,可以使用 `ps -ef | grep pmon` (Linux)或 `services.msc` (Windows)检查数据库服务进程是否存在。 ```bash ps -ef | grep pmon ``` - **资源限制**:检查服务器的资源使用情况,如 CPU、内存、磁盘 I/O 等。如果服务器资源不足,可能会导致连接丢失。可以使用 `top` (Linux)或任务管理器(Windows)查看系统资源使用情况。 ### 其他层面 - **客户端和服务器时间同步**:确保客户端和服务器的系统时间同步,时间差异过大可能会导致连接问题。可以使用 NTP 服务进行时间同步。 ```bash # 安装并启动 NTP 服务(以 CentOS 为例) yum install ntp systemctl start ntpd ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值