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的監聽便可

  因此說透過這個簡單的問題,其實能夠總結出不少小經驗。

相關文章
相關標籤/搜索