zoukankan      html  css  js  c++  java
  • ORA12514遇到了怎么排查问题出在哪

    今天使用SQL Developer连接一台测试服务器数据库(ORACLE 11g)时,遇到了“ORA-12514, TNS:listener does not currently know of service requested in connect descriptor”错误,具体提示如下所示:

    执行请求的操作时遇到错误:
     
    Listener refused the connection with the following error:
     
    ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
     
    供应商代码 12514

    clip_image001

    Step 1: 首先检查客户端的tnsnames.ora里面的host、port、service_name等是否正确

    myvm =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.20.57.15)(PORT = 1521))
        )
        (CONNECT_DATA =
           (SERVER = SHARED)
          (SERVICE_NAME = gsp.localdomain)
          
        )
      )

    逐一仔细检查过后发现这些配置都是正确的。 其实前几天还是正常来的。测试服务器和tnsnames.ora都没有改动过。所以我们继续后面排查。

    Step 2:检查确认数据库实例是否启动。

    SQL> select status from v$instance;
     
    STATUS
    ------------
    OPEN
     
    SQL> 

    如上所示,数据库实例正常,并没有关闭。当数据库实例异常关闭,也会出现ORA-12514错误,如下所示(如果我关闭一数据库实例,然后使用SQL*Plus测试连接数据库就会遇到这个错误):

    C:\Users>sqlplus system/123456@mydb
     
    SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 12 11:56
     
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
     
    ERROR:
    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

    Step 3:检查网络是否正常,tnsping能否ping通

    如下所示,ping 和tnsping 均都正常

    clip_image002

    监听服务也正常,没有问题

    [oracle@DB-Server admin]$ lsnrctl status
     
    LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 12-APR-2017 10:36:40
     
    Copyright (c) 1991, 2009, Oracle.  All rights reserved.
     
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
    Start Date                12-APR-2017 10:31:20
    Uptime                    0 days 0 hr. 5 min. 20 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/11.1.0/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/DB-Server/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DB-Server.localdomain)(PORT=1521)))
    The listener supports no services
    The command completed successfully

    clip_image003

    Step 4:检查$ORACLE_BASE/diag/tnslsnr/DB-Server/listener/alert下的日志,发现host_addr为10.20.34.76,实际IP地址不是这个。因为监听文件里面我使用的hostname DB-Server.localdomain,所以赶紧检查/etc/hosts的配置

    clip_image004

    [root@DB-Server ~]# ifconfig
    eth0      Link encap:Ethernet  HWaddr B0:83:FE:55:32:E5  
              inet addr:10.20.57.15  Bcast:10.20.57.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:2363981 errors:0 dropped:0 overruns:0 frame:0
              TX packets:180048 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:225925147 (215.4 MiB)  TX bytes:14349633 (13.6 MiB)
              Interrupt:233 Base address:0x4000 
     
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:3692 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3692 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:2982961 (2.8 MiB)  TX bytes:2982961 (2.8 MiB)
     
    [root@DB-Server ~]# more /etc/hosts
    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    10.20.34.76        DB-Server.localdomain DB-Server
    127.0.0.1               localhost.localdomain localhost
    ::1             localhost6.localdomain6 localhost6
    [root@DB-Server ~]# 

    clip_image005

    果然发现/etc/hosts下配置为10.20.34.76, 具体原因是因为IT部门调换办公室,从三楼撤到二楼,将这台PC搬下来后,服务器IP地址变化了,修改/etc/hosts,然后重启监听服务,问题解决。

  • 相关阅读:
    什么是J2EE
    JSE,JEE,JME三者之间有什么区别
    windows下git显示文件被修改,实际没有改动的问题解决办法
    laravel 多个项目共享SESSION
    laravel 共享session问题总结
    laravel5 报错419,form 添加crrf_field 后让然失败,本地环境配置问题
    QQ互联登录提示redirect uri is illegal(100010)完美解决方法
    vim鼠标模式打开与关闭
    HTML5----响应式(自适应)网页设计
    file_put_contents () failed to open stream: Permission denied 解决办法
  • 原文地址:https://www.cnblogs.com/dll102/p/15796621.html
Copyright © 2011-2022 走看看