1. 程式人生 > >linux centOs中安裝好資料庫,客戶端用plsql連線oracle

linux centOs中安裝好資料庫,客戶端用plsql連線oracle

 

原創作品,轉載請在文章顯眼位置註明出處: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:無監聽程式,此處解決方法:

在資料庫伺服器檢視監聽服務狀態 [[email protected] ~]$ 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 命令無法執行,具體原因還不知道,但是切換使用者時候加"-"問題解決,所以此次也列出來了。

 

到此,問題全部解決!