虛擬機器中訪問主機上的Oracle資料庫
####背景:主機上有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資料庫的監聽配置有關係,即使虛擬機器上是其他作業系統,採用本教程的方法也可解決此問題。