Oracle 版本:11.2.0.1.0
客戶端:Windows Server 2003/PLSQL Developer
Oracle服務器端的ip設置如下:
##公網ip
192.168.135.201 WIN-2008SERVER1
192.168.135.202 WIN-2008SERVER2
##虛擬ip
192.168.135.211 WIN-2008SERVER1-vip
192.168.135.212 WIN-2008SERVER2-vip
##私網ip
10.168.135.201 WIN-2008SERVER1-pri
10.168.135.202 WIN-2008SERVER2-pri
##SCAN ip
192.168.135.220 scan
兩個RAC實例的虛擬ip已經設置為ip地址而不是名稱,如下:
客戶端PLSQL Developer的tnsnames.ora設置如下:
ORCL = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.201)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.202)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(FAILOVER_MODE =
(TYPE = select)
(METHOD = basic)
(RETRIES = 180)
(DELAY = 5)
)
)
scan =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
192.168.135.200 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.200)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
使用PLSQL Developer連接ORCL,沒有任何問題。
客戶端Windows的hosts文件沒有修改之前,使用PLSQL Developer連接Oracle的SCAN ip 192.168.135.200,異常如下:
ORA-12541: TNS: no listener
連接Oracle的SCAN名稱scan,異常如下:
ORA-12545: Connect failed because target host or object does not exist
網上有說升級Oracle版本就可以解決的,沒有嘗試過,不知道可否?
也有說將RAC實例的local_listener修改為虛擬ip就可以的,但是已經是這樣了,不知為何?
最后,客戶端Windows的hosts文件添加Oracle服務器端的虛擬ip和SCAN ip的設置,重啟操作系統之后,使用PLSQL Developer連接Oracle的SCAN名稱scan,連接成功!
擴展話題:如果SCAN名稱直接設置為ip地址(不知Oracle是否支持?),客戶端PLSQL Developer連接的host名稱也就可以填寫為ip地址了,這樣看起來就和連單機Oracle實例很像了。
擴展閱讀:
ORA-12541: TNS:no listener ( ERROR coming when one node of RAC database is off
java應用連接oracle 11g R2 rac (用scanip連接報錯)
http://blog.csdn.net/weiwangsisoftstone/article/details/38535463
11gR2 clients connect to the database using SCANs
http://www.dbatoolz.com/t/11gr2-clients-connect-to-the-database-using-scans.html
scan-ip部分可以連接,部分連接不了
http://t.askmaclean.com/thread-4090-1-1.html