ORACLE監聽簡介

skuary發表於2011-04-07
一 ORACLE LISTENER的作用
1 註冊ORACLE 服務
一個監聽可以註冊多個ORACLE 服務。如在一個主機上我有2個INSTANCE。如果我的監聽只配置了一個INSTANCE,那個外部永遠無法連線到另外個INSTANCE。
2 監聽所有連線ORACLE SERVER的請求。
接到來自客戶端的請求後,我要識別客戶端到底要連線到那個資料庫。
也就是把註冊過的ORACLE服務 和 客戶端請求中的地址,SERVICE NAME進行匹配,找到那個相對應的ORACLE 服務。
3 連線CLIENT 和 SERVER
將ORACLE SERVER PROCESS分配給那些通過連線驗證的CLIENT。

注意點:
即使ORACLE DB正常工作,但LISTENER停止工作了。外部將無法連線到資料庫。但本機仍然是可以的。

二 相關檔案
這些檔案一般存放在
$ORACLE_HOME/network/admin/中

listener.ora 監聽使用的配置檔案
tnsname.ora 本地命名法使用的配置檔案
sqlnet.ora 制定連線的方式
names.ora 指明oracle name server伺服器地址等資訊
ldap.ora 指明LADP伺服器地址等資訊

三 連線的方式:
– Host naming
主機命名法
使用主機名。如HOSTS檔案,DNS,NIS
– Local naming
本地命名法
使用TNSNAME.ORA檔案
– Directory naming
目錄命名法
使用LDAP協議
– Oracle Names
ORACLE 命名法
使用ORACLE NAME SERVERS。ORACLE NAME SERVER是存放一個地址與名稱的對應關係的SERVER。
– External naming
外部命名法
使用第三方的產品。



四 配置檔案

listener.ora 是監聽的配置檔案。是用作服務端的。
tnsname.ora是用在客戶端,主要實現連線資料庫(使用LOCAL NAMING的方法)。    

listener 例子

  1. 第一段:LISTENER 的監聽物件

LISTENER =                                                                                                                
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.198.131)(PORT = 1521))                         =======>物件的描述由IP地址、協議和埠號組成。
 )                                                                                                                                                     

(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)

  1. 第一段:LISTENER 中註冊的服務。

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = test1)
(ORACLE_HOME = /oracle/product/9.2.0/test1)
(SID_NAME = test1)
)
(SID_DESC =
(GLOBAL_DBNAME = test2)
(ORACLE_HOME = /oracle/product/9.2.0/test2)
(SID_NAME = test2)
)
(SID_DESC =
(GLOBAL_DBNAME = test3)
(ORACLE_HOME = /oracle/product/9.2.0/test3)
(SID_NAME = test3)
)
)

tnsname.ora例子

HP_ORAQUE=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.198.131)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test1)
)
)

  • 其中 HOST = 10.31.0.193 是指 DB SERVER的IP
  • SERVER = DEDICATED 相對於SHARED模式,是指連線ORACLE SERVER的模式。

   DEDICATED 專用模式 外部連線直接繼承或重定向給SERVER PROCESS.
   SHARED 共享模式 外部連線SERVER DISPATCHER,然後由DISPATCHER分配SERVER PROCESS。即類似於在CLIENT和SERVER端部署了一個連線池。

  • SERVICE_NAME 必須要與在LISTENER中註冊過的服務名相同。


連線方法

sqlplus test/test@HP_ORAQUE

本例中將會連線到TEST1 資料庫。因為在TNSNAME.ORA檔案中 HP_ORAQUE中的SERVICE_NAME = test1

這裡HP_ORAQUE只是一個標識,它可以隨意命名,為了方便記憶會定義成一些有意義的字元。


最常用的應該是本地連線法。
昨天提到過hostname的方法。
這裡簡單介紹下:
假如你的db hostname是 dbtest03
你需要完成以下操作來實現hostname:
1 在sqlnet.ora中指定hostname方式
NAMES.DIRECTORY_PATH= (HOSTNAME)
2 在listener中註冊dbtest03

連線DB
[oracle@dbtest03 admin]$ sqlplus test/test@dbtest03

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Sep 16 14:28:48 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Data Mining and Real Application Testing options

SQL>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25618347/viewspace-713867/,如需轉載,請註明出處,否則將追究法律責任。

相關文章