標籤:
TNS是Oracle Net的一部分,專門用來管理和配置Oracle資料庫和用戶端串連的一個工具,在大多數情況下用戶端和資料庫要通訊,必須配置TNS,下面看一如何配置它吧:
TNS簡要介紹與應用 :
Oracle中TNS的完整定義:transparence Network Substrate透明網路底層,監聽服務是它重要的一部分,不是全部,不要把TNS當作只是監聽器。
TNS是Oracle Net的一部分,專門用來管理和配置Oracle資料庫和用戶端串連的一個工具,在大多數情況下用戶端和資料庫要通訊,必須配置TNS,當然在少數情況下,不用配置TNS也可以串連Oracle資料庫,比如通過JDBC。如果通過TNS串連Oracle,那麼用戶端必須安裝Oracle client程式。
Oracle當中,如果想訪問某個伺服器,必須要設定TNS,它不像SQL SERVER那樣在用戶端自動列舉出在區域網路內所有的線上服務器,只需在用戶端選擇需要的伺服器,然後使用帳號與密碼登入即可。而Oracle不能自動列舉出網內的伺服器,需要通過讀取TNS設定檔才能列出經過配置的伺服器名。
設定檔名一般為:tnsnames.ora,預設路徑:%ORACLE_HOME%\network\admin\tnsnames.ora
中的CGDB和STDCG就是對應的TNS,HOST是指向資料庫伺服器的IP,當然區域網路內用電腦名稱也是可以的。通過用戶端Net Manager建立一個串連到資料庫伺服器的串連服務時,實際上就是在tnsnames.ora檔案中增加了一個TNS的內容。
TNS的詳細設定檔
TNS的設定檔包括伺服器端和用戶端兩部分。伺服器端有listener.ora、sqlnet.ora和tnsnames.ora,如果通過OCM(Oracle Connection Manage)和網域名稱服務 (DNS)管理用戶端串連,伺服器端可能還包括cman.ora等檔案;用戶端有tnsnames.ora,sqlnet.ora。Oracle所有的TNS設定檔的預設路徑:%ORACLE_HOME%\network\admin
listener.ora:監聽器設定檔,成功啟動後是駐留在伺服器端的一個服務。監聽器是用來偵聽用戶端的串連請求以及建立用戶端和伺服器端串連通道的一個服務程式。預設情況下Oracle在1521連接埠上偵聽用戶端串連請求。
sqlnet.ora:用來管理和約束或限制tns串連的配置,通過在該檔案中設定一些參數,可以管理TNS串連。根據參數作用的不同,需要分別在伺服器和用戶端配置.。
tnsnames.ora:配置用戶端到伺服器端的串連服務,包括用戶端要串連到的伺服器和資料庫的配置資訊。
TNS配置
可以通過Oracle Net Configuretion Assitant配置TNS,也可以手動設定。首先在Oracle伺服器端安裝完成之後,應該先著手配置LISTENER,LISTENER是進行Oracle通訊的首要組件,緊接著在用戶端安裝Oracle client,同時配置tnsnames.ora檔案。
首先監聽器包括兩個部分:Oracle要監聽的地址、連接埠、通訊協議;Oracle要監聽的資料庫執行個體,非RAC環境下,LISTENER只能監聽本伺服器的地址和執行個體,RAC環境下,LISTENER還可以監聽遠程伺服器。每個資料庫最少要配置一個監聽器。(註:RAC環境,指的是Oracle伺服器叢集配置的環境)
LISTENER部分配置了Oracle要監聽的地址和連接埠資訊;該檔案中還會包括SID_LIST_LISTENER部分,這部分配置了Oracle需要監聽的執行個體。(註:在上述中並沒有SID_LIST_LISTENER這一部分,這是因為Oracle自9i版本引入了動態監聽服務註冊,在資料庫啟動時,會自動註冊當前資料庫執行個體到監聽列表,所以無需配置SID_LIST_LISTENER部分了)
HOST參數可以是Oracle伺服器主機名稱,也可以是相應的IP地址。在一個多IP的伺服器上可以配置listener同時監聽多個地址,比如下面的配置:LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.11)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.11) (PORT=1521))) ),或者可以配置多個監聽器,分別監聽不同的IP地址。
一般說的TNS配置其實就是對tnsnames.ora檔案的配置,tnsnames.ora有用戶端的配置,也有伺服器端的配置。用戶端和伺服器端配置的區別是因為伺服器端的配置跟LISTENER的配置相關。下面是一個簡單的配置樣本:
tnsnames.ora也包括兩部分,ADDRESS_LIST 部分包含了Oracle資料庫伺服器的監聽地址資訊,也就是要告訴TNS資料庫可通過這個地址和CLIENT進行通訊;CONNECT_DATA 定義了CLIENT要串連的資料庫,以及資料庫的串連方式,(專用或共用)。
在一個多IP環境中,TNS也可以配置多個遠程IP地址:CGDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.55)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.56)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = CGDB) (SERVER = DEDICATED) ) )
sqlnet.ora是個很重要的配置,它可以控制和管理Oracle串連的屬性,根據參數作用的不同決定在用戶端配置還是在server端配置。sqlnet.ora的配置是全域性的,也就說sqlnet.ora的配置是對所有的串連起作用,如果想對某個特殊的串連或服務進行約束或限制,可以 在TNS配置相應參數。
oracle資料庫TNS