sqlnet.ora tnsname.ora listener.ora 的作用

chlf2008發表於2011-02-19

sqlnet.ora 用在oracle client端,用於配置連線服務端oracle的相關引數.
tnsnames.ora 用在oracle client端,使用者配置連線資料庫的別名引數
listener.ora 用在oracle server端,配置oracle服務端程式的監聽引數

一、客戶端設定
1.sqlnet.ora
透過這個檔案來決定怎樣找一個連線中出現的連線字串


示例檔案:
# sqlnet.ora Network Configuration File: 安裝磁碟機代號:oracleproduct10.2.0client_1networkadminsqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME, ONAMES)

SQLNET.AUTHENTICATION_SERVICES= (NTS)----這個表示採用OS認證,在資料庫伺服器上,可以利用sqlplus / as sysdba。
一般這個配置在windows上是ok的,在unix環境下可能會有問題,一般在unix下可以去掉這個配置。
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)----表示將首先利用tnsnames進行解析;如果tnsnames解析不到,將使用hostname解析;如果hostname解析不到,將採用onames進行解析;例如我們客戶端輸入:sqlplus ,那麼,客戶端就會首先在tnsnames.ora檔案中找orcl的記錄.
如果沒有相應的記錄則嘗試把orcl當作一個主機名,透過網路的途徑去解析它的IP地址然後去連線這個IP上global_name=test這個例項,當然我這裡orcl並不是一個主機名。


2.tnsnames.ora
這個檔案放在客戶端機器上,記錄客戶端訪問資料庫的本地配置,其實就是定義網路服務,只有當sqlnet.ora中有"NAMES.DIRECTORY_PATH= (TNSNAMES)"這樣的字樣時,也就是客戶端解析連線字串的順序中有TNSNAMES時,才會嘗試使用這個檔案。

示例檔案:
# tnsnames.ora Network Configuration File: 安裝磁碟機代號:oracleproduct10.2.0client_1networkADMINtnsnames.ora
# Generated by Oracle configuration tools.

test_link = //網路服務名
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 108.108.108.108)(PORT = 1521))//訪問資料庫使用的協議,資料庫計算機的主機名或IP地址,資料庫的埠號
)
(CONNECT_DATA =
(SID = test) //資料庫例項名
)
)

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


示例檔案:
# listener.ora Network Configuration File: 安裝磁碟機代號:oracleproduct10.2.0client_1networkadminlistener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =//這裡定義LISTENER程式為哪個例項提供服務
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = F:oracleproduct10.2.0db_1)
(PROGRAM = extproc)
)
)

LISTENER =//監聽器的名字,一臺資料庫可以有不止一個監聽器
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))//監聽器監聽的協議,IP,埠等
(ADDRESS = (PROTOCOL = TCP)(HOST = dabeng)(PORT = 1521))
)
)詳細出處參考:http://weiyingjun.blog.hexun.com/40348731_d.html

總結:

sqlnet.ora 類似於作業系統的/etc/netsvc.conf檔案,裡面對解析的優先順序進行編排

tnsname.ora類似於作業系統的/etc/hosts檔案,本地將TNS名解析為目標IP地址及Service-Name

listener.ora類似於作業系統的/etc/services檔案,裡面定義了監聽的埠、服務名等

[@more@]

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

相關文章