oracle 網路服務與網路管理(ZZ)
來源:互聯網
上載者:User
listener的設定檔是$ORACLE_HOME/network/admin/listener.ora:
格式如下:
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=my-server) (PORT=1521)))
用戶端網路設定
用戶端網路設定檔是$ORACLE_HOME/network/admin/tnsnames.ora
格式如下:
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=my-server) PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=mydb.us.acme.com)))
用戶端串連資料庫的命令格式:
CONNECT username/password@host[:port][/service_name]
啟動和關閉Listener
1、啟動lsnrctl start
2、關閉lsnrctl stop
3、查看狀態lsnrctl status
一、
監聽器(LISTENER) 監聽器是Oracle基於伺服器端的一種網路服務,主要用於監聽用戶端向資料庫伺服器端提出的串連請求。既然是基於伺服器端的服務,那麼它也只存在於資料庫伺服器端,進行監聽器的設定也是在資料庫伺服器端完成的。
二、
本地服務名(Tnsname) 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網路管理器,如:$ netmgrWindows下啟動Net Manager圖形視窗如示: 圖(一)
1、 Oracle監聽器配置(LISTENER) 如 圖(一)示,選中樹形目錄中監聽程式項,再點擊左上側“+”按鈕添加監聽程式,點擊監聽程式目錄,預設新加的監聽器名稱是LISTENER(該名稱也可以 由任意合法字元命名)。選中該名稱,選中視窗右側欄下拉選項中的“監聽位置”,點擊添加地址按鈕。在出現的網路地址欄的協議下拉選項中選中 “TCP/IP”,主機文字框中輸入主機名稱或IP地址(如果主機即用作服務端也作為用戶端,輸入兩項之一均有效;如果主機作為服務端並需要通過網路連 接,建議輸入IP地址),連接埠文字框中輸入數字連接埠,預設是1521,也可以自訂任意有效數字連接埠。配置好的監聽位置如示: 圖(二)選 中視窗右側欄下拉選項中的“資料庫服務”,點擊添加資料庫按鈕。在出現的資料庫欄中輸入全域資料庫名,如myoracle。注意這裡的全域資料庫名與資料 庫SID有所區別,全域資料庫名實際通過網域名稱來控制在同一網段內資料庫全域命名的唯一性,就如Windows下的網域名稱控制器,如這裡可以輸入 myoracle.192.168.1.5。Oracle主目錄可以不填寫,輸入SID,如myoracle。完整的資料庫服務配置如示:
圖(三) 保 存以上配置,預設即可在Oracle安裝目錄下找到監聽設定檔 (Windows下如D:/oracle/ora92/network/admin/listener.ora,Linux/Unix下$ ORACLE_HOME/network/admin/listerer.ora)。至此,Oracle服務端監聽器配置已經完成。
2、 本地服務名配置(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:/oracle/ora92/network/admin/tnsnames.ora,Linux/Unix下$ ORACLE_HOME/network/admin/ tnsnames.ora)。配置完成的本地服務名如示:
圖(九) 樹形目錄下的服務命名可以通過編輯菜單裡的重新命名菜單更改成任意合法字元組成的服務名稱,注意服務名稱前不能有空白字元,否則可能無法串連資料庫伺服器。
3、 串連資料庫伺服器
(1) 啟動伺服器端監聽器與資料庫服務Linux/Unix下,啟動監聽器:$ lsnrctl start (預設啟動listener,如果是重新設定的監聽程式,那麼需要制定監聽程式名,& lsnrctl start listener_name) 關閉監聽器:$ lsnrctl stop查看監聽狀態:$ lsnrctl status啟動資料庫:$ sqlplus /nologSQL>conn sys@myoracle as sysdba --這裡的myoracle是前面配置的用戶端本地服務名或SQL>conn / as sysdbaSQL>startupWindows下,啟動監聽器:C:/lsnrctl start啟動Oracle執行個體服務:C:/oradim –startup –sid myoracle 關閉Oracle執行個體服務:C:/oradim –shutdown –sid myoracle 以上服務必須同時啟動,用戶端才能串連資料庫。由於預設配置的監聽器名稱是Listener,上述命令可以正常啟動監聽器,如果監聽器名稱是其它名稱,如aListener,則需要用下列方式才能啟動:Linux/Unix下:$ lsnrctl start aListenerWindows下:C:/lsnrctl start aListener
(2) 測試連接資料庫伺服器 測試的方法多種多樣,可以在上面配置本地服務名時進行測試,也可以是第三方用戶端工具,如PL/SQL Developer,最方便的是用Oracle內建的sqlplus工具,以下利用sqlplus進行測試:C:/sqlplus /nologSQL>conn zgh@myoracle已串連。
四、
用戶端串連伺服器端常見問題排除方法
要排除用戶端與伺服器端的串連問題,首先檢查用戶端配置是否正確(用戶端配置必須與資料庫伺服器端監聽配置一致),再根據錯誤提示解決。下面列出幾種常見的串連問題:
1、 ORA-12541: TNS: 沒有監聽器
顯而易見,伺服器端的監聽器沒有啟動,另外檢查用戶端IP地址或連接埠填寫是否正確。啟動監聽器:$ lsnrctl start或C:/lsnrctl start
2、 ORA-12500: TNS: 監聽程式無法啟動專用伺服器處理序
對於Windows而言,沒有啟動Oracle執行個體服務。啟動執行個體服務:C:/oradim –startup -sid myoracle
3、 ORA-12535: TNS: 操作逾時
出現這個問題的原因很多,但主要跟網路有關。解決這個問題,首先檢查用戶端與服務端的網路是否暢通,如果網路連通,則檢查兩端的防火牆是否阻擋了串連。
4、 ORA-12154: TNS: 無法處理服務名
檢 查輸入的服務名與配置的服務名是否一致。另外注意產生的本地服務名檔案(Windows下如D:/oracle/ora92/network/admin /tnsnames.ora,Linux/Unix下$ORACLE_HOME/network/admin/tnsnames.ora)裡每項服務的首 行服務名稱前不能有空格。
5、 ORA-12514: TNS: 監聽進程不能解析在串連描述符中給出的 SERVICE_NAME
開啟Net Manager,選中服務名稱,檢查服務識別欄裡的服務名輸入是否正確。該服務名必須與伺服器端監聽器配置的全域資料庫名一致
6、 Windows下啟動監聽服務提示找不到路徑
用 命令或在服務視窗中啟動監聽提示找不到路徑,或監聽服務啟動異常。開啟註冊表, 進入HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener項,查看ImagePath字串項是否存在,如果沒 有,設定值為D:/oracle/ora92/BIN/TNSLSNR,不同的安裝路徑設定值做相應的更改。這種方法同樣適用於Oracle執行個體服務,同 上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE項,查看ImagePath字串項是否存在,如果沒有,則建立,設定值為d:/oracle/ora92/ binORACLE.EXE MYORACLE。以上是Oracle用戶端串連伺服器端常見的一些問題,當然不能囊括所有的串連異常。解決問題的關鍵在於方法與思路,而不是每種問題都有固定的答案。