標籤:
1. 什麼是TNS?
TNS是Oracle Net的一部分,專門用來管理和配置Oracle資料庫和用戶端串連的一個工具,在大多數情況下用戶端和資料庫要通訊,必須配置TNS,當然在少數情況下,不用配置TNS也可以串連Oracle資料庫,比如通過JDBC.如果通過TNS串連Oracle,那麼用戶端必須安裝Oracle client程式.
2. TNS有那些設定檔?
TNS的設定檔包括伺服器(安裝Oracle資料庫的機器)端和用戶端兩部分.伺服器有listener.ora,sqlnet.ora,tnsnames.ora,如果通過OCM(Oracle Connection Manage)和網域名稱服務 (DNS)管理用戶端串連,伺服器端可能還包括cman.ora等檔案;用戶端有tnsnames.ora,sqlnet.ora。
listener.ora: 監聽器設定檔,成功啟動後是駐留在伺服器端的一個服務.什麼是監聽器?監聽器是用來偵聽用戶端的串連請求以及建立用戶端和伺服器端串連通道的一個服務程式.預設情況下Oracle在1521連接埠上偵聽資料庫連接請求.
sqlnet.ora: 用來管理和約束或限制tns串連的配置,通過在該檔案中設定一些參數,可以管理TNS串連.根據參數作用的不同,需要分別在伺服器和用戶端配置.
tnsnames.ora: 配置用戶端到伺服器端的串連服務,包括用戶端要串連到的伺服器和資料庫的配置資訊.
3. Oracle所有的TNS設定檔存放位置
unix/linux: $ORACLE_HOME/network/admin
windows: %ORACLE_HOME%\network\admin
4. TNS有那些組態工具?
我們可以手動設定,也可以通過Oracle Net Configuretion Assitant配置.
5. OracleTNS配置流程
首先在Oracle server端安裝完成之後,因該先著手配置LISTENER,listenerr是進行Oracle通訊的首要組件,緊接著在用戶端安裝Oracle client,同時配置tnsnames.ora檔案.
LISTENER(監聽器)配置:
監聽器包括兩個部分:Oracle要監聽的地址、連接埠、通訊協議;Oracle要監聽的資料庫執行個體.非RAC環境下,LISTENER只能監聽本伺服器的地址和執行個體,RAC環境下,LISTENER還可以監聽遠程伺服器.每個資料庫最少要配置一個監聽器。
LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)) ) )SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=plsextproc) (ORACLE_HOME=/oracle10g) (PROGRAM=extproc) ) (SID_DESC= (SID_NAME=mayp) (ORACLE_HOME=/oracle10g) ) )
listener部分配置了Oracle要監聽的地址資訊;SID_LIST_LISTENER部分配置了Oracle需要監聽的執行個體.HOST參數即可以是hostname,也可以是ip地址.在一個多IP的伺服器上可以配置listener同時監聽多個地址.比如下面的配置:
LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.10)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.1) (PORT=1521)) ) )
或者可以配置多個監聽器,分別監聽不同的IP地址.
Oracle Net支援的通訊協議有:
■ TCP/IP
■ TCP/IP with SSL
■ Named Pipes
■ SDPOracle 9i引入了動態監聽服務註冊,指的是我們不需要在listener.ora中配置oracle要監聽的資料庫執行個體資訊,資料庫啟動的時候, PMON進程可以自動註冊當前資料庫執行個體到listener的監聽列表.也就是說上面的SID_LIST_LISTENER部分就不用配置了。使用動態監聽伺服器端必須滿足以下條件:
■ 資料庫必須設定INSTANCE_NAME和SERVICE_NAME參數;
■ 監聽器採用預設的TCP協議並使用1521連接埠進行監聽;
■ 如果在配置監聽器時採用了其他通訊協議或者偵聽連接埠,進行以下設定告訴Oracle採用自訂監聽器:
通過LOCAL_LISTENER參數明確設定當前使用的監聽器,
在伺服器端都tnsnames.ora檔案中加入自訂監聽器的配置資訊.如果採用了OCM,那麼還可以在cman.ora中加入監聽器的配置資訊.
LOCAL_LISTENER 可以通過ALTER SYSTEM動態設定.
ALTER SYSTEM SET LOCAL_LISTENER=’listener_alias’;一個動態監聽配置的樣本:
6. TNS設定檔具體配置
listener.ora檔案的配置:
LISTENER1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.73)(PORT = 1421)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421)) (ADDRESS = (PROTOCOL = IPC)(KEY = extproc)) ) )
TNS配置:
我們說的TNS配置其實就是對tnsnames.ora檔案的配置,tnsnames.ora 有用戶端的配置,也有伺服器端的配置.用戶端和伺服器端配置的區別是因為伺服器端的配置跟LISTENER的配置相關.下面是一個簡單的配置樣本:
mayp = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421)) ) (CONNECT_DATA = (SERVICE_NAME = mayp) (SERVER = DEDICATED) )
同樣tnsnames.ora也包括兩部分,ADDRESS_LIST 部分包含了遠端資料庫伺服器的監聽地址資訊,也就是要告訴TNS遠端資料庫可通過乃些地址和CLIENT通訊;CONNECT_DATA 定義了CLIENT要串連的資料庫,還有資料庫的串連方式,(專用或共用)。
在一個多ip環境中,TNS也可以配置多個遠程IP地址:
mayp = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dbtest)(PORT = 1421)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421)) ) (CONNECT_DATA = (SERVICE_NAME = mayp) (SERVER = DEDICATED) ) )
一般在多IP環境中,還可以在TNS端配置load_balance和failover特性.這些特性在RAC環境下比較流行,load_balance特性可以讓client在串連資料庫是選擇任意地址進行串連,是各地址的串連均衡.failover開啟Oracle特有的 TAF特性,TAF為Transparent Application Failover的縮寫.load_balance可以在用戶端配置,也可以在伺服器端配置.
下面是一個用戶端的配置樣本:
mayp =(DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE=ON) (FAILOVER=ON) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.205.73)(PORT = 1421)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.64)(PORT = 1421)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = MAYP) (FAILOVER_MODE = (TYPE = SELECT) (METHOD = BASIC) ) ))
sqlnet.ora的配置:
sqlnet.ora是個很重要的配置,他可以控制和管理Oracle串連的屬性,根據參數作用的不同決定在用戶端配置還是在server端配置.sqlnet.ora的配置是全域性的,也就說sqlnet.ora的配置是對所有的串連起作用,如果想對某個特殊的串連或服務進行約束或限制,可以在TNS配置相應參數.詳細參數可以參考:Oracle® Database Net Services Reference
Oracle TNS配置淺析