客户端TNSPING通 连接出现ORA-12514错误

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务,这是一个经常遇到的问题,可以按照以下步骤一步步解决

1.使用tnsping检测

tnsping可判断出以下两点
(1)判断网络是否连通
(2)判断服务器端的监听服务是否开启
使用tnsping可以ping通,说明以上两点都是没问题的

本地打开cmd命令行窗口,输入以下命令

tnsping  服务名
或
tnsping  ip地址:端口号/数据库服务名

若ping不通,可检查以下两点
1.检查服务器端的防火墙是否开启了数据库的端口(默认端口:1521)
2.使用命令lsnrctl status检查服务器端监听是否开启

2.检查服务器端的监听配置文件listener.ora

linux中listener.ora默认位置
/data/oracle/product/11.2.0/db_1/network/admin/listener.ora
原始内容:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = /data/oracle

修改为:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /data/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)
)
LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.78.130)(PORT = 1521)))
ADR_BASE_LISTENER = /data/oracle

注意其中的GLOBAL_DBNAME为全局数据库名,SID_NAME服务端数据库实例名,HOST这个填写服务端ip地址

2.检查服务配置文件tnsnames.ora

可能出现问题:
1.服务端中tnsnames.ora配置的HOST值默认为localhost,应改成服务端ip地址或主机名
2.本地与服务端tnsnames.ora配置的SERVICE_NAME名称不一致
3.本地与服务端tnsnames.ora配置的连接方式不一致,一个使用SID(实例名),一个使用SERVICE_NAME(服务名)

linux中tnsnames.ora默认位置
/data/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora

以下为问题2,3的例子
问题2:
本地的tnsnames.ora

testOrcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 服务端ip地址)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME= orcl)
      (SERVER = DEDICATED)
    )
  )

服务端上的tnsnames.ora

orcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 服务端ip地址)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcldb)
      (SERVER = DEDICATED)
    )
  )

问题:SERVICE_NAME服务名不一致
解决办法:改成一致

问题3:
本地的tnsnames.ora

testOrcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 服务端ip地址)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME= orcl)
      (SERVER = DEDICATED)
    )
  )

服务端上的tnsnames.ora

orcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 服务端ip地址)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = orcl)
      (SERVER = DEDICATED)
    )
  )

问题:服务器上的服务配置的是SID
解决办法:则本地应改成SID = orcl或将服务器上的改成SERVICE_NAME= orcl

3.重启服务端数据库监听

 //停止监听服务
 lsnrctl stop
 //打开监听服务
 lsnrctl start
 //查看监听服务状态
 lsnrctl status
------------------------------------------------------------end~thanks!--------------------------------------------------------
一个立志成大腿而每天努力奋斗的年轻人
期待你的到来!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值