Oracle 的網路設定

來源:互聯網
上載者:User

1、 Oracle的網路體系

對於一個網路應用程式來說,無論它屬於B/S還是C/S,其模型都是一樣的,(1)所示,在這個模型中涉及到3個進程:服務端的監聽進程、伺服器端的服務進程、用戶端的客戶進程,其工作原理如下:

  • 首先,伺服器端啟動監聽進程,這個進程會在一個固定的IP地址和連接埠上監聽使用者請求。
  • 其次,一個使用者進程向制定的IP地址和連接埠發出串連請求,只要沒有輸入錯誤,這個請求最終會通過網路,送達這個伺服器的這個監聽進程。
  • 監聽進程收到使用者請求後,就會立即派生出一個服務進程,可能是建立一個新的服務進程,也可能是從已有的伺服器處理序池中選擇一個,具體是哪種方式取決於伺服器的配置。
  • 監聽進程把使用者請求轉寄給派生出的服務進程。這時,這個監聽進程的使命就結束了,它就回去繼續監聽其他的使用者請求,而不再參與後面的工作了。
  • 服務進程和使用者進程建立串連後,服務進程就開始處理使用者進程發來的請求,並給使用者進程返回結果,知道最後使用者進程結束這個串連。
  • 服務進程或者終止運行,或者返回進程池,等待為下一個使用者請求服務。

圖(1)

2、監聽器(LISTENER)

Oracle監聽器是運行在資料庫端的一個進程,這個進程負責監聽使用者的串連請求。每當收到一個使用者請求,監聽器進程就會建立一個影子進程(Shadow Process),然後把使用者請求轉交給這個影子進程,由影子進程繼續完成使用者提交的各種命令。一旦監聽器把使用者轉交給影子進程,監聽進程的任務就算完成,它就繼續監聽下一個使用者的請求。所以監聽器的角色就像一個中間人,它只負責為使用者進程和影子進程搭橋牽線。

3、監聽器的配置(LISTENER)

配置Oracle伺服器端與用戶端都可以在其內建的圖形化Oracle網路管理器(Oracle Net Manager)裡完成(強烈建議在這個圖形化的工具下完成Oracle服務端或用戶端的配置)。在Windows下,點擊“開始/程式/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”啟動Oracle網路管理器工具,在Linux/Unix下,利用netmgr命令來啟動圖形化Oracle網路管理器,如:$ netmgr,Windows下啟動Net Manager圖形視窗如示:

圖(2)

1. 選中樹形目錄中監聽程式項,再點擊左上側“+”按鈕添加監聽程式,點擊監聽程式目錄,預設新加的監聽器名稱是LISTENER(該名稱也可以由任意合法字元命名)。選中該名稱,選中視窗右側欄下拉選項中的“監聽位置”,點擊添加地址按鈕。在出現的網路地址欄的協議下拉選項中選中 “TCP/IP”,主機文字框中輸入主機名稱或IP地址(如果主機即用作服務端也作為用戶端,輸入兩項之一均有效;如果主機作為服務端並需要通過網路連接,建議輸入IP地址),連接埠文字框中輸入數字連接埠,預設是1521,也可以自訂任意有效數字連接埠。配置好的監聽位置如示:

圖(3)

圖(4)

2. 選中視窗右側欄下拉選項中的“資料庫服務”,點擊添加資料庫按鈕。在出現的資料庫欄中輸入全域資料庫名,如ORCL。注意這裡的全域資料庫名與資料庫SID有所區別,全域資料庫名實際通過網域名稱來控制在同一網段內資料庫全域命名的唯一性,就如Windows下的網域名稱控制器,如這裡可以輸入ORCL.192.168.2.51。Oracle主目錄可以不填寫,輸入SID,如ORCL。完整的資料庫服務配置如示:

圖(5)

3. 儲存以上配置,預設即可。監聽器是根據設定檔工作的,這個檔案叫做listener.ora,以上的操作實際上就是操作的這個檔案,位於$ORACLE_HOME/network/admin目錄下,因為監聽器只工作在資料庫伺服器端,因此這個檔案只有服務端需要,用戶端並不需要這個檔案。這個檔案的內容如下:

# listener.ora Network Configuration File: C:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =  (SID_LIST =        (SID_DESC =      (GLOBAL_DBNAME = ORCL.192.168.2.51)      (SID_NAME = ORCL)    )  )LISTENER =  (DESCRIPTION_LIST =    (DESCRIPTION =      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))    )    (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.51)(PORT = 1521))    )  )
這個檔案說明監聽器在IP地址 192.168.2.51的1521連接埠上監聽。

4、本地服務名(Tnsname)

Oracle用戶端與伺服器端的串連是通過用戶端發出串連請求,由伺服器端監聽器對用戶端串連請求進行合法檢查,如果串連請求有效,則進行串連,否則拒絕該串連。

本地服務名是Oracle用戶端網路設定的一種,另外還有Oracle名字伺服器(Oracle Names Server)等。Oracle常用的用戶端配置就是採用的本地服務名,本文中介紹的也主要是基於本地服務名的配置。

5 本地服務名配置(Tnsnames)

本地服務名是基於Oracle用戶端的網路設定,所以,如果用戶端需要串連資料庫伺服器進行操作,則需要配置該用戶端,其依附對象可以是任意一台欲串連資料庫伺服器進行操作的pc機,也可以是資料庫伺服器自身。如前面所介紹,可以利用Oracle內建的圖形化管理工具Net Manager來完成Oracle用戶端的配置。選中(2)中的服務命名,再點擊左上側“+”按鈕,彈出如示對話方塊:

圖(6)

輸入Net服務名,如myoracle,點擊下一步,進入示對話方塊:

圖(7)

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

圖(8)

輸入主機名稱與連接埠號碼。注意這裡的主機名稱與連接埠號碼必須與資料庫伺服器端監聽器配置的主機名稱和連接埠號碼相同。點擊下一步,如示:

圖(9)

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

圖(10)

如果資料庫伺服器端相關服務啟動了,可以點擊測試按鈕進行串連測試。Oracle預設是通過scott/tiger使用者進行測試連接,由於scott使用者是 Oracle內建的樣本使用者,對於正式的業務資料庫或專業測試資料庫可能沒有配置這個使用者,所以需要更改成有效使用者登入才可能測試成功。如果這裡測試連 接不成功,也不要緊,先點完成按鈕結束配置。

回到Oracle網路管理器(Oracle Net Manager)主視窗,儲存配置,預設即可在Oracle安裝目錄下找到本地服務名設定檔 (Windows下如C:/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora,Linux/Unix下$ ORACLE_HOME/network/admin/ tnsnames.ora)。配置完成的本地服務名如示:

圖(11)

樹形目錄下的服務命名可以通過編輯菜單裡的重新命名菜單更改成任意合法字元組成的服務名稱,注意服務名稱前不能有空白字元,否則可能無法串連資料庫伺服器。

# tnsnames.ora Network Configuration File: C:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN\tnsnames.ora# Generated by Oracle configuration tools.MYORCL =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.51)(PORT = 1521))    )    (CONNECT_DATA =      (SERVICE_NAME = ORCL.192.168.2.51)    )  )

6 串連資料庫伺服器

(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

已串連。

7、用戶端串連伺服器端常見問題排除方法

要排除用戶端與伺服器端的串連問題,首先檢查用戶端配置是否正確(用戶端配置必須與資料庫伺服器端監聽配置一致),再根據錯誤提示解決。下面列出幾種常見的串連問題:

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:oracleora92networkadmin tnsnames.ora,Linux/Unix下/network/admin/tnsnames.ora)裡每項服務的首 行服務名稱前不能有空格。

5 ORA-12514: TNS: 監聽進程不能解析在串連描述符中給出的 SERVICE_NAME

開啟Net Manager,選中服務名稱,檢查服務識別欄裡的服務名輸入是否正確。該服務名必須與伺服器端監聽器配置的全域資料庫名一致。

6 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用戶端串連伺服器端常見的一些問題,當然不能囊括所有的串連異常。解決問題的關鍵在於方法與思路,而不是每種問題都有固定的答案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.