熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle數據庫監聽配置

2022-06-13   來源: Oracle 

近段時間很多網友提出監聽配置相關問題客戶終端(Client)無法連接服務器端(Server)本文現對監聽配置作一簡單介紹並提出一些客戶終端無法連接服務器端的解決思路願對廣大網友與讀者有一些幫助
 
監聽器(LISTENER)
  監聽器是Oracle基於服務器端的一種網絡服務主要用於監聽客戶端向數據庫服務器端提出的連接請求既然是基於服務器端的服務那麼它也只存在於數據庫服務器端進行監聽器的設置也是在數據庫服務器端完成的
 
本地服務名(Tnsname)
  Oracle客戶端與服務器端的連接是通過客戶端發出連接請求由服務器端監聽器對客戶端連接請求進行合法檢查如果連接請求有效則進行連接否則拒絕該連接
本地服務名是Oracle客戶端網絡配置的一種另外還有Oracle名字服務器(Oracle Names Server)等Oracle常用的客戶端配置就是采用的本地服務名本文中介紹的也主要是基於本地服務名的配置
 
Oracle網絡連接配置方法
  配 置Oracle服務器端與客戶端都可以在其自帶的圖形化Oracle網絡管理器(Oracle Net Manager)裡完成(強烈建議在這個圖形化的工具下完成Oracle服務端或客戶端的配置)在Windows下點擊開始/程序/Oracle OraHome/Configuration and Migration Tools/Net Manager啟動Oracle網絡管理器工具在Linux/Unix下利用netmgr命令來啟動圖形化Oracle網絡管理器
$ netmgr
Windows下啟動Net Manager圖形窗口如下圖示
 

                                                              圖(一)
 
 Oracle監聽器配置(LISTENER)
  如 圖(一)示選中樹形目錄中監聽程序項再點擊左上側+按鈕添加監聽程序點擊監聽程序目錄默認新加的監聽器名稱是LISTENER(該名稱也可以 由任意合法字符命名)選中該名稱選中窗口右側欄下拉選項中的監聽位置點擊添加地址按鈕在出現的網絡地址欄的協議下拉選項中選中 TCP/IP主機文本框中輸入主機名稱或IP地址(如果主機即用作服務端也作為客戶端輸入兩項之一均有效如果主機作為服務端並需要通過網絡連 接建議輸入IP地址)端口文本框中輸入數字端口默認是也可以自定義任意有效數字端口配置好的監聽位置如下圖示
 

                                                               圖(二)
 
 
  選 中窗口右側欄下拉選項中的數據庫服務點擊添加數據庫按鈕在出現的數據庫欄中輸入全局數據庫名如myoracle注意這裡的全局數據庫名與數據 庫SID有所區別全局數據庫名實際通過域名來控制在同一網段內數據庫全局命名的唯一性就如Windows下的域名控制器如這裡可以輸入 myoracleOracle主目錄可以不填寫輸入SID如myoracle完整的數據庫服務配置如下圖示


          圖(三)
 
  保 存以上配置默認即可在Oracle安裝目錄下找到監聽配置文件 (Windows下如D:\oracle\ora\network\admin\listeneroraLinux/Unix下$ ORACLE_HOME/network/admin/listererora)至此Oracle服務端監聽器配置已經完成
 
 本地服務名配置(Tnsnames)
  本 地服務名是基於Oracle客戶端的網絡配置所以如果客戶端需要連接數據庫服務器進行操作則需要配置該客戶端其依附對象可以是任意一台欲連接數據 庫服務器進行操作的PC機也可以是數據庫服務器自身如前面所介紹可以利用Oracle自帶的圖形化管理工具Net Manager來完成Oracle客戶端的配置選中如圖(一)中的服務命名再點擊左上側+按鈕彈出如下圖示對話框
 

                      圖(四)
 
  輸入Net服務名如myoracle點擊下一步進入下圖示對話框
 

                圖(五)
 
 
  選中TCP/IP(Internet協議)點擊下一步如下圖示


                圖(六)
 
  輸入主機名與端口號注意這裡的主機名與端口號必須與數據庫服務器端監聽器配置的主機名和端口號相同點擊下一步如下圖示
 

                     圖(七)
 
  選 中(Oraclei或更高版本)服務名輸入服務名這裡的服務名實際上就是數據庫服務器端監聽器配置中的全局數據庫名前者與後者必須相同連接類型 通常選專用服務器這要視數據庫服務器的配置而定如果配置的共享數據庫服務器這裡的連接類型就要選共享服務器否則建議選專用服務器(關於專用服務器 的介紹請參閱相關文檔)配置好後點擊下一步如下圖示
 

                圖(八)
 
 
  如 果數據庫服務器端相關服務啟動了可以點擊測試按鈕進行連接測試Oracle默認是通過scott/tiger用戶進行測試連接由於scott用戶是 Oracle自帶的示例用戶對於正式的業務數據庫或專業測試數據庫可能沒有配置這個用戶所以需要更改成有效的用戶登錄才可能測試成功如果這裡測試連 接不成功也不要緊先點完成按鈕結束配置
  回 到Oracle網絡管理器(Oracle Net Manager)主窗口保存配置默認即可在Oracle安裝目錄下找到本地服務名配置文件 (Windows下如D:\oracle\ora\network\admin\tnsnamesoraLinux/Unix下$ ORACLE_HOME/network/admin/ tnsnamesora)配置完成的本地服務名如下圖示


                  圖(九)
 
  樹形目錄下的服務命名可以通過編輯菜單裡的重命名菜單更改成任意合法字符組成的服務名稱注意服務名稱前不能有空格字符否則可能無法連接數據庫服務器
 
 連接數據庫服務器
()   啟動服務器端監聽器與數據庫服務
Linux/Unix下啟動監聽器
$ lsnrctl start                    
關閉監聽器
$ lsnrctl stop
查看監聽狀態
$ lsnrctl status
啟動數據庫
$ sqlplus /nolog
SQL>conn sys@myoracle as sysdba   這裡的myoracle是前面配置的客戶端本地服務名

SQL>conn / as sysdba
SQL>startup
Windows下啟動監聽器
C:\lsnrctl start
啟動Oracle實例服務
C:\oradim –startup –sid myoracle  
關閉Oracle實例服務
C:\oradim –shutdown –sid myoracle
  以上服務必須同時啟動客戶端才能連接數據庫由於默認配置的監聽器名稱是Listener上述命令可以正常啟動監聽器如果監聽器名稱是其它名稱如aListener則需要用下列方式才能啟動
Linux/Unix下
$ lsnrctl start aListener
Windows下
C:\lsnrctl start aListener
 
()   測試連接數據庫服務器
  測試的方法多種多樣可以在上面配置本地服務名時進行測試也可以是第三方客戶端工具如PL/SQL Developer最方便的是用Oracle自帶的sqlplus工具以下利用sqlplus進行測試
C:\sqlplus /nolog
SQL>conn zgh@myoracle
已連接
 
 
客戶端連接服務器端常見問題排除方法
  要排除客戶端與服務器端的連接問題首先檢查客戶端配置是否正確(客戶端配置必須與數據庫服務器端監聽配置一致)再根據錯誤提示解決下面列出幾種常見的連接問題
 ORA: TNS: 沒有監聽器
顯而易見服務器端的監聽器沒有啟動另外檢查客戶端IP地址或端口填寫是否正確啟動監聽器
$ lsnrctl start

C:\lsnrctl start
 ORA: TNS: 監聽程序無法啟動專用服務器進程
對於Windows而言沒有啟動Oracle實例服務啟動實例服務
C:\oradim –startup sid myoracle
 ORA: TNS: 操作超時
  出現這個問題的原因很多但主要跟網絡有關解決這個問題首先檢查客戶端與服務端的網絡是否暢通如果網絡連通則檢查兩端的防火牆是否阻擋了連接
 ORA: TNS: 無法處理服務名
  檢 查輸入的服務名與配置的服務名是否一致另外注意生成的本地服務名文件(Windows下如D:\oracle\ora\network\admin \tnsnamesoraLinux/Unix下$ORACLE_HOME/network/admin/tnsnamesora)裡每項服務的首 行服務名稱前不能有空格
 ORA: TNS: 監聽進程不能解析在連接描述符中給出的 SERVICE_NAME
  打開Net Manager選中服務名稱檢查服務標識欄裡的服務名輸入是否正確該服務名必須與服務器端監聽器配置的全局數據庫名一致
 Windows下啟動監聽服務提示找不到路徑
  用 命令或在服務窗口中啟動監聽提示找不到路徑或監聽服務啟動異常打開注冊表進入HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHomeTNSListener項查看ImagePath字符串項是否存在如果沒 有設定值為D:\oracle\ora\BIN\TNSLSNR不同的安裝路徑設定值做相應的更改這種方法同樣適用於Oracle實例服務同 上找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE項查看ImagePath字符串項是否存在如果沒有則新建設定值為d:\oracle\ora\ binORACLEEXE MYORACLE
以上是Oracle客戶端連接服務器端常見的一些問題當然不能囊括所有的連接異常解決問題的關鍵在於方法與思路而不是每種問題都有固定的答案


From:http://tw.wingwit.com/Article/program/Oracle/201311/17900.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.