在進行Oracle監聽配置時,我們免不了遇到相關問題,比如客戶終端(ClIEnt)無法連接服務器端(Server)。本文先對Oracle監聽器做一些簡單介紹,隨之詳細敘述了監聽配置的詳細步驟。
一、Oracle監聽器(LISTENER)
監聽器是Oracle基於服務器端的一種網絡服務,主要用於監聽客戶端向數據庫服務器端提出的連接請求。既然是基於服務器端的服務,那麼它也只存在於數據庫服務器端,進行監聽器的設置也是在數據庫服務器端完成的。
二、本地服務名(Tnsname)
Oracle客戶端與服務器端的連接是通過客戶端發出連接請求,由服務器端Oracle監聽器對客戶端連接請求進行合法檢查,如果連接請求有效,則進行連接,否則拒絕該連接。
本地服務名是Oracle客戶端網絡配置的一種,另外還有Oracle名字服務器(Oracle Names Server)等。Oracle常用的客戶端配置就是采用的本地服務名,本文中介紹的也主要是基於本地服務名的配置。
三、Oracle網絡連接配置方法
配置Oracle服務器端與客戶端都可以在其自帶的圖形化Oracle網絡管理器(Oracle Net Manager)裡完成(強烈建議在這個圖形化的工具下完成Oracle服務端或客戶端的配置)。在Windows下,點擊“開始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”。啟動Oracle網絡管理器工具,在Linux/Unix下,利用netmgr命令來啟動圖形化Oracle網絡管理器,如:$ netmgr。
1.Oracle監聽器配置(LISTENER):
1)選中樹形目錄中監聽程序項,再點擊左上側“+”,按鈕添加監聽程序,點擊監聽程序目錄,默認新加的Oracle監聽器名稱是LISTENER(該名稱也可以由任意合法字符命名)。
2)選中該名稱,選中窗口右側欄下拉選項中的“監聽位置”,點擊添加地址按鈕。在出現的網絡地址欄的協議下拉選項中選中 “TCP/IP”,主機文本框中輸入主機名稱或IP地址(如果主機即用作服務端也作為客戶端,輸入兩項之一均有效;如果主機作為服務端並需要通過網絡連接,建議輸入IP地址),端口文本框中輸入數字端口,默認是1521,也可以自定義任意有效數字端口。
3)選中窗口右側欄下拉選項中的“數據庫服務”,點擊添加數據庫按鈕。在出現的數據庫欄中輸入全局數據庫名,如myOracle。注意這裡的全局數據庫名與數據 庫SID有所區別,全局數據庫名實際通過域名來控制在同一網段內數據庫全局命名的唯一性,就如Windows下的域名控制器,如這裡可以輸入myoracle.192.168.1.5。Oracle主目錄可以不填寫,輸入SID,如myOracle。
保存以上配置,默認即可在Oracle安裝目錄下找到監聽配置文件 (Windows下如D:oracleora92 etworkadminlistener.ora,Linux/Unix下$ORACLE_HOME/network/admin/listerer.ora)。至此,Oracle服務端監聽器配置已經完成。
2.本地服務名配置(Tnsnames):
本地服務名是基於Oracle客戶端的網絡配置,所以,如果客戶端需要連接數據庫服務器進行操作,則需要配置該客戶端,其依附對象可以是任意一台欲連接數據 庫服務器進行操作的PC機,也可以是數據庫服務器自身。如前面所介紹,可以利用Oracle自帶的圖形化管理工具NetManager來完成Oracle客戶端的配置。
1)選中服務命名,再點擊左上側“+”按鈕
2)輸入Net服務名,如myOracle,點擊下一步
3)選中TCP/IP(Internet協議),點擊下一步
4)輸入主機名與端口號。注意:這裡的主機名與端口號必須與數據庫服務器端監聽器配置的主機名和端口號相同。點擊下一步
5)選中(Oracle8i或更高版本)服務名,輸入服務名。這裡的服務名實際上就是數據庫服務器端監聽器配置中的全局數據庫名,前者與後者必須相同。連接類型 通常選專用服務器,這要視數據庫服務器的配置而定,如果Oracle監聽配置的共享數據庫服務器,這裡的連接類型就要選共享服務器,否則建議選專用服務器(關於專用服務器 的介紹請參閱相關文檔)。配置好後點擊下一步
如果數據庫服務器端相關服務啟動了,可以點擊測試按鈕進行連接測試。Oracle默認是通過scott/tiger用戶進行測試連接,由於scott用戶是Oracle自帶的示例用戶,對於正式的業務數據庫或專業測試數據庫可能沒有配置這個用戶,所以需要更改成有效的用戶登錄才可能測試成功。如果這裡測試連接不成功,也不要緊,先點完成按鈕結束配置。
回到Oracle網絡管理器(Oracle Net Manager)主窗口,保存配置,默認即可在Oracle安裝目錄下找到本地服務名配置文件 (Windows下如D:oracleora92 etworkadminnsnames.ora,Linux/Unix下$ Oracle_HOME/network/admin/ tnsnames.ora)。
樹形目錄下的服務命名可以通過編輯菜單裡的重命名菜單更改成任意合法字符組成的服務名稱,注意服務名稱前不能有空格字符,否則可能無法連接數據庫服務器。
3、連接數據庫服務器:
1)啟動服務器端監聽器與數據庫服務:
a.Linux/Unix下,
啟動Oracle監聽器:$ lsnrctl start。
關閉監聽器:$ lsnrctl stop。
查看監聽狀態:$ lsnrctl status。
啟動數據庫:$ sqlplus /nolog。
SQL>conn sys@myoracle as sysdba --這裡的myOracle是前面配置的客戶端本地服務名。
或SQL>conn / as sysdbaSQL>startup
b.Windows下,
啟動Oracle監聽器:C:lsnrctl start。
啟動Oracle實例服務:C:oradim–startup–sid myOracle。
關閉Oracle實例服務:C:oradim–shutdown–sid myOracle。
以上服務必須同時啟動,客戶端才能連接數據庫。由於默認配置的監聽器名稱是Listener,上述命令可以正常啟動Oracle監聽器,如果監聽器名稱是其它名稱,如aListener,則需要用下列方式才能啟動:
Linux/Unix下:$ lsnrctl start aListener。
Windows下:C:lsnrctl start aListener。
2)測試連接數據庫服務器
測試的方法多種多樣,可以在上面配置本地服務名時進行測試,也可以是第三方客戶端工具,如PL/SQL Developer,最方便的是用Oracle自帶的SQLplus工具,以下利用SQLplus進行測試:C:sqlplus /nologSQL>conn zgh@myOracle已連接。