Oracle Net是我們使用Oracle過程中不可缺少的組件環節。對于初學者而言,三個配置文件tnsname.ora、listener.ora和sqlnet.ora是最
Oracle Net是我們使用Oracle過程中不可缺少的組件環節。對于初學者而言,三個配置文件tnsname.ora、listener.ora和sqlnet.ora是最容易混亂的部分。而且,由于采用ASCII文本格式編輯,非常容易出現配置錯誤。
監聽器控制文件listener.ora是Oracle服務器端管理重要組件文件。監聽器監聽端口、動靜態注冊等行為,與這個文件配置內容有千絲萬縷的關系。其中的配置參數,如HOST、Port等,也是非容易混淆的內容。
本篇通過一系列的實驗,來介紹HOST參數的使用配置方法,以及Oracle Net在處理Host時采用的算法模式。
相關閱讀:
Oracle 雙監聽器的配置
Oracle監聽器出現的6種連接問題及其解決方法
Oracle 11g2的監聽器配置
Oracle數據庫的監聽器掛起情況
監聽器注冊與ORA-12514 錯誤分析
1、Host解析
我們在Listener.ora和Tnsname.ora中,都可以遇到Host參數。直觀的看,這個參數作用就是指定連接的主機地址。在服務端,監聽器listener.ora中的Host就是指定了監聽器在哪些地址上進行監聽動作。
監聽器運行守候三個關鍵要素:伺候IP地址(一臺主機可能有多個網卡、進而有多個IP地址)、連接協議(默認為TCP,但是很多時候處于安全考量會使用其他協議)、端口對象(在哪個端口進行連接等待)。
對Host參數而言,我們可以在服務端listener.ora文件中選擇IP地址和主機服務器名稱。兩種方法下,Oracle監聽器是采用不同的策略方法的。
2、環境準備
準備一個多IP網卡的主機環境。實驗機器上安裝兩個網卡對象,配置不同的IP地址。
[root@SimpleLinux network-scripts]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:C2:AB:D2
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fec2:abd2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr 08:00:27:61:80:AF
inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:80af/64 Scope:Link
兩個IP地址被綁定在一臺主機上,分別為192.168.0.100和192.168.0.101。如果使用名稱解析,還要講IP地址和服務器名稱綁定在DNS或者本地/etc/hosts文件中。
[root@SimpleLinux network-scripts]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 SimpleLinux.localdomain SimpleLinux localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.0.100 SimpleLinux SimpleLinux.localdomain
192.168.0.101 SimpleLinux SimpleLinux.localdomain
3、Host連接綁定主機名
如果HOST參數使用主機名,在進行連接監聽的時候,Oracle會檢索這個主機上所有的網絡名稱映射,將監聽動作綁定在所有的IP地址上。落實到我們這個案例,就意味著對兩個IP地址都存在監聽行為。
oracle@SimpleLinux admin]$ ls -l
total 16
-rw-r--r-- 1 oracle oinstall 357 Sep 9 08:49 listener.ora
drwxr-xr-x 2 oracle oinstall 4096 Sep 9 08:39 samples
-rw-r--r-- 1 oracle oinstall 205 May 11 2011 shrept.lst
-rw-r----- 1 oracle oinstall 322 Sep 9 09:01 tnsnames.ora
[oracle@SimpleLinux admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = SimpleLinux.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /u01/app
注意:當前使用的就是主機名稱。啟動監聽器進行監聽動作。
[oracle@SimpleLinux admin]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-JAN-2014 15:00:17
Listener Parameter File /u01/app/oracle/network/admin/listener.ora
Listener Log File /u01/app/diag/tnslsnr/SimpleLinux/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=SimpleLinux.localdomain)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
從遠程服務器進行連接測試。
D:\>tnsping ora11g
TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 02-1月 -
2014 15:00:51
Copyright (c) 1997, 2010, Oracle. All rights reserved.
已使用的參數文件:
D:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora
已使用 TNSNAMES 適配器來解析別名
嘗試連接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ora11g)))
OK (210 毫秒)
D:\>tnsping ora11g_101
TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 02-1月 -
2014 15:02:21
Copyright (c) 1997, 2010, Oracle. All rights reserved.
已使用的參數文件:
D:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora
已使用 TNSNAMES 適配器來解析別名
嘗試連接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.101)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ora11g)))
OK (10 毫秒)
使用sqlplus連接成功。
SQL> conn scott/tiger@ora11g
已連接。
SQL> conn scott/tiger@ora11g_101
已連接。
說明:當我們使用HOST主機名的時候,,Oracle監聽器會對該計算機上所有的IP地址開啟監聽動作。
更多詳情見請繼續閱讀下一頁的精彩內容:
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com