背景:主機上有Oracle數據庫,在虛擬機中的Ubuntu上部署項目練手,發現虛擬機、主機能互相ping通但是Oracle數據庫卻連接不上。
一、問題排查
1.在虛擬機中ping主機:
能ping通。
主機ping虛擬機同樣沒問題。
2.端口
再看一下端口,主機上Oracle數據庫的監聽端口是1521,這也是Oracle數據庫默認的端口,如果你安裝Oracle數據庫時沒有進行自己的設置,那麼你的監聽端口也應該是1521,在虛擬機中telnet一下主機的這個端口看看是否能訪問到:
看了下主機的防火牆已經關掉,並且telnet 8080端口是成功的,說明是oracle的監聽程序的問題。
二、修改Oracle數據庫監聽服務配置
1.配置文件的位置
要先找到Oracle數據庫的監聽服務的配置文件的位置,無論是哪個Oracle數據庫版本,配置文件都叫:listener.ora 。
接下來就找到它,我的版本是Oracle 11g,這是詳細的安裝路徑:
這是配置文件的路徑:
其他教程上的此文件的路徑並不是那麼的準確,導致我找了好久,這個路徑是要根據安裝Oracle數據庫的方式、版本、設置的路徑去尋找。實在不行就全局搜索配置文件名。
2.修改配置文件
打開配置文件,裏面應該有兩大段,下面的LISTENER部分就是配置監聽的部分,將原本的(HOST = localhost)改爲(HOST = 0.0.0.0)即可。
三、重啓服務
1.修改完監聽配置文件之後需要重啓Oracle服務和監聽
開始–運行–services.msc
2.找到服務:OracleOraDb11g_home1TNSListener 與 OracleServiceORCL
3.把兩個服務啓動即可
右鍵->重新啓動
四、測試
成功,之後啓動項目也成功啓動
這和虛擬機上的ubuntu並沒有關係,而是和本機上的Oracle數據庫的監聽配置有關係,即使虛擬機上是其他操作系統,採用本教程的方法也可解決此問題。