連Oracle資料庫報ORA-12547: TNS:lost contact問題處理一例

dbasdk發表於2016-05-20
今天因為ETL節點機要訪問一個新的資料庫伺服器,需要配置tnsnames.ora,結果配置好了之後,連資料庫的時候報錯:
ORA-12547: TNS:lost contact

一開始以為是tnsnames.ora配置不當,但是對比核查後,排除了這種可能。因為其它主機上一樣的配置已驗證可以連上這個資料庫伺服器。

接下來按這個報錯“ORA-12547: TNS:lost contact”在網上搜了不少資料,有說缺軟體包的,有說資料庫主機上檔案許可權設定問題的,但都不符合這次遇到的情況。

後來還是決定看看日誌,查了資料庫的監聽日誌listener.log,發現裡面有以下報錯資訊:
20-MAY-2016 15:46:03 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=db01)(USER=grid))(COMMAND=status)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=186647552)) * status * 0
Incoming connection from 192.168.24.1 rejected 
20-MAY-2016 15:46:06 * 12546
TNS-12546: TNS:permission denied
 TNS-12560: TNS:protocol adapter error
  TNS-00516: Permission denied

參考資料,並檢視了該資料庫伺服器的sqlnet.ora配置,發現是因為設定了資料庫訪問IP限制,即只有指定的IP可以訪問該資料庫。

由於是雙節點RAC資料庫,在grid使用者下修改sqlnet.ora,就是把要訪問該資料庫的ETL節點IP加入到IP白名單中。
修改後要重啟監聽(lsnrctl reload),否則還是會報錯。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2104052/,如需轉載,請註明出處,否則將追究法律責任。

相關文章