Oracle備庫TNS連線失敗的分析
今天在測試12c的temp_undo的時候,準備在備庫上測試一下,突然發現備庫使用TNS連線竟然失敗。
丟擲的錯誤如下:
$ sqlplus sys/oracle@testdb as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 8 15:30:10 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
嘗試連線PDB也是同樣的錯誤。
檢視$ORACLE_HOME/network/admin/listener.ora的配置。
已經做了靜態註冊.
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的監聽即可。
所以說透過這個簡單的問題,其實可以總結出很多小經驗。
-
問題解決不能止步於當前,因為偷懶,疏忽導致的後來的潛在問題,遺留問題
-
另外一個是標準化,規範化的使用。無規矩不成方圓。
-
測試驗證,備庫搭建完成後,可以做一些簡單的應用測試,保證備庫在ADG模式下可用
-
這個過程中,有一個推理的邏輯不夠嚴謹,連線的埠是1521,而我是用1526來做的簡單驗證。
-
儘管這是一個測試環境,但是還是需要引以為戒。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2130090/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 備庫批量查詢失敗的原因分析
- 資料庫連線設定失敗!資料庫
- 資料庫遠端連線失敗資料庫
- Oracle備庫無法連線主庫的問題分析Oracle
- 網頁提示連線資料庫失敗是怎麼回事(網站資料庫連線失敗)網頁資料庫網站
- MongoVUE 連線失敗GoVue
- 織夢資料庫連線失敗的原因資料庫
- Kettle8.2連線Oracle資料庫失敗解決方法Oracle資料庫
- linux 資料庫localhostl連線成功127.0.0.1連線失敗Linux資料庫localhost127.0.0.1
- DedeCms錯誤警告:連線資料庫失敗資料庫
- PbootCMS錯誤提示:資料庫連線失敗boot資料庫
- 為什麼我的 PHP 資料庫連線失敗?PHP資料庫
- 資料庫連線失敗的原因及解決方法資料庫
- NetBackup備份Oracle資料庫失敗-nbuOracle資料庫
- DB2資料庫連線失敗問題DB2資料庫
- mysql資料庫連線失敗是什麼原因MySql資料庫
- CDH 5.13 hue資料庫連線測試失敗資料庫
- 網站資料庫連線失敗怎麼辦網站資料庫
- C#連線MySQL8.0資料庫失敗C#MySql資料庫
- 我的postgresql資料庫報埠錯誤,連線失敗SQL資料庫
- CF連線伺服器失敗怎麼回事 cf連線失敗解決辦法伺服器
- postgresql連線失敗如何處理SQL
- 在容器外部連線kafka失敗Kafka
- linux配置mysql資料庫遠端連線失敗LinuxMySql資料庫
- 織夢DedeCms錯誤警告,連線資料庫失敗資料庫
- 織夢cms連線資料庫失敗怎麼辦資料庫
- 網站程式連線資料庫失敗怎麼辦?網站資料庫
- 建立資料庫連線失敗ORA-12514的分析解決過程資料庫
- ORACLE 資料庫分析,重新編譯失敗過程Oracle資料庫編譯
- PHP資料庫連線失敗–couldnotfinddriver解決辦法PHP資料庫
- Qt呼叫第三方外部庫連線失敗QT
- 遠端主機mysql連線失敗MySql
- VSCode 遠端連線失敗VSCode
- 遠端連線 Mysql 失敗的解決方法MySql
- mysql連線失敗:ArgumentException: 指定的值在“SslProtocolType”MySqlExceptionProtocol
- Kettle連線失敗Oracle提示 ora-12505 的解決方法Oracle
- 故障分析 | DDL 導致的 Xtrabackup 備份失敗
- tns連線非常慢