Oracle 數據庫監聽配置(監聽是listener.ora 服務是tnsnames.ora)
1、監聽器(LISTENER)html
監聽器是Oracle基於服務器端的一種網絡服務,主要用於監聽客戶端向數據庫服務器端提出的鏈接請求。既然是基於服務器端的服務,那麼它也只存在於數據庫服務器端,進行監聽器的設置也是在數據庫服務器端完成的。linux
2、本地服務名(Tnsname)sql
Oracle客戶端與服務器端的鏈接是經過客戶端發出鏈接請求,由服務器端監聽器對客戶端鏈接請求進行合法檢查,若是鏈接請求有效,則進行鏈接,不然拒絕該鏈接。數據庫
本地服務名是Oracle客戶端網絡配置的一種,另外還有Oracle名字服務器(Oracle Names Server)等。Oracle經常使用的客戶端配置就是採用的本地服務名,本文中介紹的也主要是基於本地服務名的配置。服務器
3、Oracle網絡鏈接配置方法網絡
配 置Oracle服務器端與客戶端均可以在其自帶的圖形化Oracle網絡管理器(Oracle Net Manager)裏完成(強烈建議在這個圖形化的工具下完成Oracle服務端或客戶端的配置)。在Windows下,點擊「開始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager」啓動Oracle網絡管理器工具,在Linux/Unix下,利用netmgr命令來啓動圖形化Oracle網絡管理器,如:架構
$ netmgroracle
Windows下啓動Net Manager圖形窗口以下圖示:app
方法/步驟
-
Oracle監聽器配置(LISTENER)ide
如 圖(一)示,選中樹形目錄中監聽程序項,再點擊左上側「+」按鈕添加監聽程序,點擊監聽程序目錄,默認新加的監聽器名稱是LISTENER(該名稱也能夠 由任意合法字符命名)。選中該名稱,選中窗口右側欄下拉選項中的「監聽位置」,點擊添加地址按鈕。在出現的網絡地址欄的協議下拉選項中選中 「TCP/IP」,主機文本框中輸入主機名稱或IP地址(若是主機即用做服務端也做爲客戶端,輸入兩項之一均有效;若是主機做爲服務端並須要經過網絡連 接,建議輸入IP地址),端口文本框中輸入數字端口,默認是1521,也能夠自定義任意有效數字端口。配置好的監聽位置以下圖示:
-
選 中窗口右側欄下拉選項中的「數據庫服務」,點擊添加數據庫按鈕。在出現的數據庫欄中輸入全局數據庫名,如myoracle。注意這裏的全局數據庫名與數據 庫SID有所區別,全局數據庫名實際經過域名來控制在同一網段內數據庫全局命名的惟一性,就如Windows下的域名控制器,如這裏能夠輸入 myoracle.192.168.1.5。Oracle主目錄能夠不填寫,輸入SID,如myoracle。完整的數據庫服務配置以下圖示:
-
保 存以上配置,默認便可在Oracle安裝目錄下找到監聽配置文件 (Windows下如D:oracleora92networkadminlistener.ora,Linux/Unix下$ ORACLE_HOME/network/admin/listerer.ora)。至此,Oracle服務端監聽器配置已經完成。
-
本地服務名配置(Tnsnames)
本 地服務名是基於Oracle客戶端的網絡配置,因此,若是客戶端須要鏈接數據庫服務器進行操做,則須要配置該客戶端,其依附對象能夠是任意一臺欲鏈接數據 庫服務器進行操做的pc機,也能夠是數據庫服務器自身。如前面所介紹,能夠利用Oracle自帶的圖形化管理工具Net Manager來完成Oracle客戶端的配置。選中如圖(一)中的服務命名,再點擊左上側「+」按鈕,彈出以下圖示對話框:
-
輸入Net服務名,如myoracle,點擊下一步,進入下圖示對話框:
-
選中TCP/IP(Internet協議),點擊下一步,以下圖示:
-
輸入主機名與端口號。注意這裏的主機名與端口號必須與數據庫服務器端監聽器配置的主機名和端口號相同。點擊下一步,以下圖示:
-
選 中(Oracle8i或更高版本)服務名,輸入服務名。這裏的服務名實際上就是數據庫服務器端監聽器配置中的全局數據庫名,前者與後者必須相同。鏈接類型 一般選專用服務器,這要視數據庫服務器的配置而定,若是配置的共享數據庫服務器,這裏的鏈接類型就要選共享服務器,不然建議選專用服務器(關於專用服務器 的介紹請參閱相關文檔)。配置好後點擊下一步,以下圖示:
-
如 果數據庫服務器端相關服務啓動了,能夠點擊測試按鈕進行鏈接測試。Oracle默認是經過scott/tiger用戶進行測試鏈接,因爲scott用戶是 Oracle自帶的示例用戶,對於正式的業務數據庫或專業測試數據庫可能沒有配置這個用戶,因此須要更改爲有效的用戶登陸纔可能測試成功。若是這裏測試連 接不成功,也沒關係,先點完成按鈕結束配置。
回 到Oracle網絡管理器(Oracle Net Manager)主窗口,保存配置,默認便可在Oracle安裝目錄下找到本地服務名配置文件 (Windows下如D:oracleora92networkadmintnsnames.ora,Linux/Unix下$ ORACLE_HOME/network/admin/ tnsnames.ora)。配置完成的本地服務名以下圖示:
-
樹形目錄下的服務命名能夠經過編輯菜單裏的重命名菜單更改爲任意合法字符組成的服務名稱,注意服務名稱前不能有空格字符,不然可能沒法鏈接數據庫服務器。
-
鏈接數據庫服務器
(1) 啓動服務器端監聽器與數據庫服務
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 ?a href="http://game.pchome.net/pcgame" class="none" title="cs" rel="external">cstartup –sid myoracle
關閉Oracle實例服務:
C:oradim –shutdown –sid myoracle
以上服務必須同時啓動,客戶端才能鏈接數據庫。因爲默認配置的監聽器名稱是Listener,上述命令能夠正常啓動監聽器,若是監聽器名稱是其它名稱,如aListener,則須要用下列方式才能啓動:
Linux/Unix下:
$ lsnrctl start aListener
Windows下:
C:lsnrctl start aListener
(2) 測試鏈接數據庫服務器
測試的方法多種多樣,能夠在上面配置本地服務名時進行測試,也能夠是第三方客戶端工具,如PL/SQL Developer,最方便的是用Oracle自帶的sqlplus工具,如下利用sqlplus進行測試:
C:sqlplus /nolog
SQL>conn zgh@myoracle
已鏈接。
-
客戶端鏈接服務器端常見問題排除方法
要排除客戶端與服務器端的鏈接問題,首先檢查客戶端配置是否正確(客戶端配置必須與數據庫服務器端監聽配置一致),再根據錯誤提示解決。下面列出幾種常見的鏈接問題:
一、 ORA-12541: TNS: 沒有監聽器
顯而易見,服務器端的監聽器沒有啓動,另外檢查客戶端IP地址或端口填寫是否正確。啓動監聽器:
$ lsnrctl start
或
C:lsnrctl start
二、 ORA-12500: TNS: 監聽程序沒法啓動專用服務器進程
對於Windows而言,沒有啓動Oracle實例服務。啓動實例服務:
C:oradim –startup -sid myoracle
三、 ORA-12535: TNS: 操做超時
出現這個問題的緣由不少,但主要跟網絡有關。解決這個問題,首先檢查客戶端與服務端的網絡是否暢通,若是網絡連通,則檢查兩端的防火牆是否阻擋了鏈接。
四、 ORA-12154: TNS: 沒法處理服務名
檢 查輸入的服務名與配置的服務名是否一致。另外注意生成的本地服務名文件(Windows下如D:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)裏每項服務的首 行服務名稱前不能有空格。
五、 ORA-12514: TNS: 監聽進程不能解析在鏈接描述符中給出的 SERVICE_NAME
打開Net Manager,選中服務名稱,檢查服務標識欄裏的服務名輸入是否正確。該服務名必須與服務器端監聽器配置的全局數據庫名一致。
六、 Windows下啓動監聽服務提示找不到路徑
用 命令或在服務窗口中啓動監聽提示找不到路徑,或監聽服務啓動異常。打開註冊表,進入HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener項,查看ImagePath字符串項是否存在,若是沒 有,設定值爲D:oracleora92BINTNSLSNR,不一樣的安裝路徑設定值作相應的更改。這種方法一樣適用於Oracle實例服務,同 上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE項,查看ImagePath字符串項是否存在,若是沒有,則新建,設定值爲d:oracleora92 binORACLE.EXE MYORACLE。
以上是Oracle客戶端鏈接服務器端常見的一些問題,固然不能囊括全部的鏈接異常。解決問題的關鍵在於方法與思路,而不是每種問題都有固定的答案。
END