環境
遠端電腦(Server): OS: Windows 7 Professional Oracle: Win64 11gR2 database (11.2.0) SID: orcl ORA_HOME: D:\oracle\product\11.2.0\dbhome_1 本機電腦(Client): OS: Windows 7 Professional Oracle: Win32 11gR2 database(11.2.0)
步驟
簡單來說,就以下幾個步驟:(其中一個還不在本篇範圍…)
1. 安裝Oracle與建立DB instance。(不在本篇範圍)
2. 組態網路環境。
2.1 遠端server 組態
2.2 本機TNS組態
在詳細說明步驟前先談一下Oracle的網路架構。
網路架構
Oracle網路架構大概分為以下幾個部份:
Oracle DB網路架構圖
圖片來源: http://docs.oracle.com/cd/B19306_01/network.102/b14212/architecture.htm
c:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
遠端Server組態
在Windows 下提供了方便的GUI可以直接做設定(開始功能表→Oracle→組態設定和移轉工具→Net Manager)。當然,如果你想直接改listener.ora也是可以。
A. 首先是建立Listener。這部份沒什麼需要詳細說明的,就資料填一填即可。
B. 新增資料庫服務。這裡是告訴Oracle當Listener收到request時,應該連到那個DB Instance。這部份也很簡單,也是資料填一填就好了。注意:全域資料庫名稱是要給外部知道的;可以跟SID相同,也可以不同。別忘了設定完後要重啟Listener與資料庫。
最後透過GUI產生出來的listener.ora大概長的會是像這樣子:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = YOUR_GLOBAL_DBNAME)
(ORACLE_HOME = D:\oracle\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DB_MACHINE_IP)(PORT = 1521))
)
ADR_BASE_LISTENER = D:\oracle
本機TNS組態
原則上這一個段落是選擇性的。如果是採用jdbc連線方式的話,這部份是不需要的。
架構圖中沒有表現出來的是TNS。TNS是Transparent Network Substrate 的縮寫,也是屬於Oracle網路服務的一個部份。在Server端TNS不用做什麼設定;預設值就好。Client(本機)端的設定檔是在 tnsnames.ora,實際檔案位置如下:
c:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
Windows 下也親切的提供了GUI。同樣的,我們也可以直接去更改 tnsnames.ora。這部份也很簡單,就新增一個服務命名,然後資料輸一輸就可以了。
注意的是這裡的服務名稱要填之前的「全域資料庫名稱」。最後產生出來的tnsnames.ora大概會是這樣子:
YOUR_TNSNAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DB_MACHINE_IP)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = YOUR_GLOBAL_SID)
)
)
問題解決
原則上設定完後應該就可以了。
- 如果發生連線連不到的話,請檢查一下client 與server 的作業系統防火牆與防毒軟體的設定,是否有被擋掉、防火牆的例外有沒有設定。如果有這類的問題,在連線的時候,通常回應都會稍慢一些(因為需要花時間等 timeout),可以依此為判斷依據。
- 如果發生SID找不到或是沒有提供listener錯誤,請比對一下listener.ora與tnsnames.ora是否設定正確,同時檢查一下listener或oracle有沒有正常啟動。
結論
本篇說明如何如何組態Oracle Server的Listener與Oracle Client端的TNS,可以連到不同網域的資料庫。
沒有留言 :
張貼留言