在Oracle的網路結構中解決連線問題(轉)

ba發表於2007-08-16
在Oracle的網路結構中解決連線問題(轉)[@more@]最近看到好多人說到tns或者資料庫不能登入等問題,就索性總結了下面的文件。

首先來說Oracle的網路結構,往復雜處說能加上加密、LDAP等等。。這裡不做討論,重點放在基本的網路結構也就是我們最常用的這種情況

三個配置檔案listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME etworkadmin目錄下。

重點:三個檔案的作用和使用

sqlnet.ora-----作用類似於linux或者其他unix的nsswitch.conf檔案,透過這個檔案來決定怎麼樣找一個連線中出現的連線字串,

例如我們客戶端輸入


sqlplus sys/oracle@orcl


假如我的sqlnet.ora是下面這個樣子


SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)


那麼,客戶端就會首先在tnsnames.ora檔案中找orcl的記錄.如果沒有相應的記錄則嘗試把orcl當作一個主機名,透過網路的途徑去解析它的ip地址然後去連線這個ip上GLOBAL_DBNAME=orcl這個例項,當然我這裡orcl並不是一個主機名

如果我是這個樣子


NAMES.DIRECTORY_PATH= (TNSNAMES)


那麼客戶端就只會從tnsnames.ora查詢orcl的記錄

括號中還有其他選項,如LDAP等並不常用。

#------------------------

Tnsnames.ora------這個檔案類似於unix 的hosts檔案,提供的tnsname到主機名或者ip的對應,只有當sqlnet.ora中類似

NAMES.DIRECTORY_PATH= (TNSNAMES) 這樣,也就是客戶端解析連線字串的順序中有TNSNAMES是,才會嘗試使用這個檔案。

例子中有兩個,ORCL 對應的本機,SALES對應的另外一個IP地址,裡邊還定義了使用主用伺服器還是共享伺服器模式進行連線,一句一句說

#你所要連線的時候輸入得TNSNAME


ORCL =
(DESCRIPTION =
(ADDRESS_LIST =


#下面是這個TNSNAME對應的主機,埠,協議


(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =


#使用專用伺服器模式去連線需要跟伺服器的模式匹配,如果沒有就根據伺服器的模式

#自動調節


(SERVER = DEDICATED)


#對應service_name,


SQLPLUS>show parameter service_name;


#進行檢視


(SERVICE_NAME = orcl)
)
)


#下面這個類似


SALES =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales)
)
)


#----------------------

客戶端完了我們來看伺服器端

listener.ora------listener監聽器程式的配置檔案

關於listener程式就不多說了,接受遠端對資料庫的接入申請並轉交給oracle的伺服器程式。所以如果不是使用的遠端的連線,listener程式就不是必需的,同樣的如果關閉listener程式並不會影響已經存在的資料庫連線。

Listener.ora檔案的例子


#listener.ora Network Configuration File: #E:oracleproduct10.1.0Db_2NETWORKADMINlistener.ora
# Generated by Oracle configuration tools.


#下面定義LISTENER程式為哪個例項提供服務

#這裡是ORCL,並且它對應的ORACLE_HOME和GLOBAL_DBNAME

#其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做資料庫連線


SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = boway)
(ORACLE_HOME = E:oracleproduct10.1.0Db_2)
(SID_NAME = ORCL)
)
)


#監聽器的名字,一臺資料庫可以有不止一個監聽器

#再向下面是監聽器監聽的協議,ip,埠等,這裡使用的tcp1521埠,並且使#用的是主機名


LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))
)

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

相關文章