晓波的站站

争做优秀原创个人博客。

记录ora-12514TNS监听无法识别连接描述符问题

解决方法:
编辑服务器上的listener.ora
以oracle用户执行:

cd $ORACLE_HOME/network/admin/
编辑监听文件
vim listener.ora

# listener.ora Network Configuration File: /oracle/db/11g/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/db/11g)#oralce的安装目录
      (PROGRAM = extproc)
    )
   (SID_DESC =
    (GLOBAL_DBNAME = testdb)  #改成实例的sid
    (ORACLE_HOME = /oracle/db/11g)  #oralce的安装目录
    (SID_NAME = testdb) #填写sid
    )
 )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.81.240)(PORT = 1521))
    )
  )
ADR_BASE_TESTDB = /oracle/db

很多人在这里认为就完事,然后重启监听就好了。但是不知道我的为啥就是不行,可能是因为数据库没有重启?所以我在这里重新注册我的服务。

SQL> show parameter local_listen

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
local_listener               string
SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=137.0.245.181)(PORT=1521))';

System altered.

SQL> alter system register;

SID_LIST_LISTENER = 
    (SID_LIST = 
         (SID_DESC = 
             (GLOBAL_DBNAME = orcl) 
             (ORACLE_HOME = /oracle/db/11g) 
             (SID_NAME = orcl) 
         ) 
    )

LISTENER = 
    (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521)) 
    )

接着在工具重新连接就可以了,有的时候这个问题换个版本的工具或者instance client就好了。也许这个注册可能和hosts解析又关系,但是在正确的情况下还是无法连接。没有深入了解这到底是为啥,这类解决方案太多了,就当是记录一下。致敬还在自建博客的人。。。。


本文由 xiaobo 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

添加新评论