原創作品,轉載請在文章顯眼位置注明出處:https://www.cnblogs.com/sunshine5683/p/10030375.html
首先,回顧上篇 CenOs7安裝oracle圖文詳細過程(02) ,安裝好oracle后再服務器端使用sqlplus訪問數據庫成功,后來客戶機訪問並沒有測試,接下來就接着,繼續學習客戶機端連接數據庫,過程中同樣遇到很多問題,因為是邊學邊弄,所以可謂是一步一個坎!
一、在客戶端安裝oracle客戶端,我這里服務器在虛擬機上,操作系統是linux,服務器是11g,客戶端在Windowsserver2008R2上,版本9i
1、首先在客戶機上安裝plsql(過程簡單,省略)
2、在客戶機上安裝oracle9i(過程簡單,省略),並配置好監聽程序
3、啟動plsql,連接服務器出現ora-12541 TNS:無監聽程序,此處解決方法:
在數據庫服務器查看監聽服務狀態 [oracle@xhq ~]$ lsnrctl status: 顯示監聽服務,如下
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=adrep)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services --------------------------------------------------------------------->沒有監聽服務
The command completed successfully
然后在服務器主機上使用命令 netmgr調出配置監聽界面,重新配置監聽,其中
Global Database Name :數據庫名
oracle home directory:安裝目錄,自動加載,可選擇
SID:實例名
接着查看實例名:然后填在相應的位置
為了一行顯示,設置行寬
然后退出配置程序,查看監聽狀態,可以看到監聽服務正常
此時使用plsql連接,還是報ora-12541 TNS:無監聽程序異常,查閱資料,是防火牆沒關,tnsping 實例名(客戶端監聽配置的名字),同樣顯示超時然后關閉防火牆:
得知centos從7開始默認用的是firewalld,這個是基於iptables的,雖然有iptables的核心,但是iptables的服務是沒安裝的。所以只要停止firewalld服務即可:
# sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service
然后使用plsql連接,顯示無監聽程序ORA-12541:TNS:無監聽程序,此時重啟監聽
然后使用plsql登錄,正常登錄
使用tnsping 服務名,正常,不再超時
到此,客戶端連接數據庫問題已經全部解決!
附加1:
上面關閉防火牆由於使用的不是iptables,如果要改用iptables的話,需要安裝iptables服務:
sudo yum install iptables-services
sudo systemctl enable iptables && sudo systemctl enable ip6tables
sudo systemctl start iptables && sudo systemctl start ip6tables
接下來在思考如何不關閉防火牆來連接服務器,還望各位路過的大神指點!
附加2:
在用戶之間切換時候注意加 “-”,如su - oracle,如果直接使用su oracle ,導致使用使用lsnrctl status 命令無法執行,具體原因還不知道,但是切換用戶時候加"-"問題解決,所以此次也列出來了。
到此,問題全部解決!