程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Windows 下oracle10g rac 報ora-12545錯誤的解決方案

Windows 下oracle10g rac 報ora-12545錯誤的解決方案

編輯:Oracle數據庫基礎
一、問題描述

操作系統Windows 2003 ,Oracle 10g 10.2.0.2
當客戶端連過來時客戶端有時能連通,有時卻斷開提示錯誤
SQL> conn system/Oracle@gzmdc
已連接。
SQL> conn system/Oracle@gzmdc
ERROR:
ORA-12545: 因目標主機或對象不存在,連接失敗

警告: 您不再連接到 Oracle。
SQL> conn system/Oracle@gzmdc
已連接。
SQL> conn system/Oracle@gzmdc
已連接。
SQL> conn system/Oracle@gzmdc
ERROR:
ORA-12545: 因目標主機或對象不存在,連接失敗

警告: 您不再連接到 Oracle。
SQL>

客戶端tns配置
GZMDC=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 201.150.14.18)(PORT = 5880))
(ADDRESS = (PROTOCOL = TCP)(HOST = 201.150.14.20)(PORT = 5880))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test)
)
)
服務器端
201.150.14.18 node1-vip
201.150.14.20 node1-vip 是虛擬ip(vip)
201.150.14.5  node1
201.150.14.7  node2  是公網ip


二、解決方案

有人提議把客戶端hosts文件中加入對兩個服務名的名字解析,經測試的確能解決問題,但總覺得不是很好,維護上百台電腦的hosts文件是很困難的.
下面的方法是我測試成功的.
1, 服務器2個節點群集 機器名為 node1,node2.
2,在服務器端用system用戶登錄
SQL> show parameter list
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
remote_listener string LISTENERS_TEST

可以看到這兩個參數,remote_listener為 LISTENERS_TEST
3,在node1,node2上分別編輯服務器端tnsname.ora (注意,是服務器端的)
將下面部分
LISTENERS_TEST =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip)(PORT = 5880))
(ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip)(PORT = 5880))
)
改為:
LISTENERS_TEST =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 201.150.14.18)(PORT = 5880))
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved