Oracle备库TNS链接失败的分析

  今天在测试12c的temp_undo的时候,准备在备库上测试一下,忽然发现备库使用TNS链接居然失败。sql

  抛出的错误以下:oracle

  $ sqlplus sys/oracle@testdb as sysdbaapp

  SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 8 15:30:10 2016tcp

  Copyright (c) 1982, 2014, Oracle. All rights reserved.测试

  ERROR:日志

  ORA-12514: TNS:listener does not currently know of service requested in connect进程

  descriptorip

  尝试链接PDB也是一样的错误。get

  查看$ORACLE_HOME/network/admin/listener.ora的配置。it

  已经作了静态注册.

  SID_LIST_LISTENER_12c_1526=

  (SID_LIST=

  (SID_DESC=

  (GLOBAL_DBNAME=testdb)

  (ORACLE_HOME=/home/U01/app/oracle/product/12c/db_1)

  (SID_NAME=testdb)

  )

  (SID_DESC=

  (GLOBAL_DBNAME=test)

  (ORACLE_HOME=/home/U01/app/oracle/product/12c/db_1)

  (SID_NAME=testdb)

  ))

  查看tnsnames.ora的配置也没有问题

  test =

  (DESCRIPTION =

  (ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = xxx)(PORT = 1521))

  )

  (CONNECT_DATA =

  (SERVICE_NAME = test)

  (SERVER = DEDICATED)

  )

  )

  随便查看了一个监听的配置,好比1526

  lsnrct status listener_12c_1526,输出也全然没有什么问题,因此本身感受这问题愈加奇怪,甚至还想,莫非又碰到了12c的一个bug了

  若是备库在ADG模式,备库TNS不可用,那备库就没有什么其余的意义了。

  这个时候咱们仍是来看看监听日志,到指定目录下,发现了下面的内容。Thu Dec 08 14:43:17 2016

  08-DEC-2016 14:43:17 * (CONNECT_DATA=(SERVICE_NAME=test)(SERVER=DEDICATED)(CID=(PROGRAM=sqlplus)(HOST=testdb2.cyou.com)(USER=oracle)

  )) * (ADDRESS=(PROTOCOL=tcp)(HOST=xxxx)(PORT=2437)) * establish * test * 12514

  TNS-12514: TNS:listener does not currently know of service requested in connect descriptor

  Thu Dec 08 14:44:46 2016

  看着这段内容,感受哪里好像不大对劲,可是又实在说不出。

  查看MOS,和主库反复作监听配置的比对,也没有发现问题,束手无策的时候,决定从头开始来看待这个问题

  监听的配置没有问题,根据错误只能指向监听的状态了。

  咱们来看看监听的进程状态

  00:14:32 /home/U01/app/oracle/product/11.2.3/db_1/bin/tnslsnr LISTENER_1522 -inherit

  00:13:43 /home/U01/app/oracle/product/11.2.3/db_1/bin/tnslsnr LISTENER_1528 -inherit

  00:25:48 /home/U01/app/oracle/product/11.2.3/db_1/bin/tnslsnr LISTENER_1525 -inherit

  00:14:35 /home/U01/app/oracle/product/11.2.3/db_1/bin/tnslsnr LISTENER_1523 -inherit

  00:00:47 /home/U01/app/oracle/product/12c/db_1/bin/tnslsnr listener_12c_1526 -inherit

  00:17:28 /home/U01/app/oracle/product/11.2.3/db_1/bin/tnslsnr LISTENER -inherit

  看到这里,决定面壁5分钟。

  原来我这个库上最先是安装了11g的ORACLE_HOME,没想到后来整合系统的时候,用了12c,搭建备库的时候,由于主备库的链接配置只设置了1526的端口,其它的都没动,因此n多天后用起来的时候,栽在了这里。

  因此修复方式就很简单了,切换到11g的ORACLE_HOME,把以前的监听都中止,而后从新启动12c的监听便可

  因此说透过这个简单的问题,其实能够总结出不少小经验。

相关文章
相关标签/搜索