在远端客户端连接RAC数据库时,通过统一的服务名连接时经常会出现ORA-12545错误。5 k5 d) T! J6 D$ A" W) F0 t
SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。/ Z0 i7 `; Q" \
SQL> CONN NDMAIN@nuagerac输入口令: ******( U% O' }$ ]- ~8 V% x
ERROR:ORA-12545: 因目标主机或对象不存在, 连接失败9 X9 d- r: }: X5 ^$ y5 t; q
警告: 您不再连接到 ORACLE。
& J& p# \) [+ @/ i x) B; p* k( S5 y SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。4 D5 U( m' G* ~, I) w
SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。" d7 L* V. r2 ^, O8 A' p& D
SQL> CONN NDMAIN@nuagerac输入口令: ******2 l/ N, B' ^( L. y
ERROR:
% s+ B, e% b9 L2 q0 {% x* ~ ORA-12545: 因目标主机或对象不存在, 连接失败
7 t' e* u/ M _9 u( g 警告: 您不再连接到 ORACLE。
7 O- Z3 c9 ?) s, f2 ~0 z3 a 本地数据库TNSNAMES的配置:
/ i; @0 v& V* F5 U1 { nuagerac =# b* ] ]1 M* M; h
(DESCRIPTION =3 {. J% D/ @3 N/ @* A2 S. r! b; P
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.127)(PORT = 1521))
$ r [( M1 [4 k( ^: |/ g (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.128)(PORT = 1521))# k7 J5 {5 o5 s: E6 X; y) J7 ^" b
(LOAD_BALANCE = yes)- c& S8 \/ `& ^- z. P. Q
(CONNECT_DATA =# V& z$ N9 C; H0 f" g8 ~3 {
(SERVER = DEDICATED), \. @8 @) W$ ^% w6 s
(SERVICE_NAME = nuagerac)9 h! N9 F N) m# z4 C# O9 W
(FAILOVER_MODE =
% D9 v2 ^8 b. E$ t0 Y5 Z+ h4 A: X& P (TYPE = SELECT)
" a* J7 p1 }# h/ d9 h (METHOD = BASIC)
2 R6 e) k! s( t9 n1 H3 b (RETRIES = 180)% p* @- R5 Q. {! B8 |* H
(DELAY = 5)
% Z5 u; X$ S( G+ y, ~5 x2 c v )
* K/ H% o& f3 m; @8 Z )( M* t7 F2 C9 S$ R0 d9 }
)! p8 Z3 @: A: t7 n& C. h& g" N
Oracle在文档Note:364855.1:RAC Connection Redirected To Wrong Host/IP ORA-12545中进行了相信的描述。/ j8 Q) Q2 i% g7 u: U
并给出了解决方法:修改数据库中的初始化参数LOCAL_LISTENER:
! r$ @$ U9 u8 J. V3 p SQL> CONN SYS@nuage1 AS SYSDBA输入口令: ****已连接。
6 K. T! Z4 X( ]2 @0 H4 _+ ]5 \ SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL = TCP)
. S* i: D7 M" d# s (HOST = 192.168.1.127)(PORT = 1521))' SID = 'nuage1';系统已更改。) z J2 d3 a5 t; c; N1 f6 U, i
SQL> CONN SYS@nuage2 AS SYSDBA输入口令: ****已连接。
$ c+ u. f0 Q, H SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS = (PROTOCOL =TCP)
. J/ B& O( y; J, G5 y' @1 S' j (HOST = 192.168.1.128)(PORT = 1521))' SID = 'nuage2';系统已更改。
1 f) B+ G5 C5 C- Z2 b% ?- S 设置之后,再次尝试连接数据库:
) T9 ]3 M# _% U4 { SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。) e: Z1 `% B+ l+ O: w+ [
SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。0 t$ @- {9 B, M
SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。! x3 m$ B) Q9 q& q5 g3 N& g8 ?7 v
SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。1 `. a, Y1 M: I7 N
SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。7 \" r, u$ n& {& q" Z: x; q
SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。
8 H0 {' ?# K% p2 J* V+ D9 z SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。
- h& `, h4 u2 Y8 ]1 b! d* N SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。4 u0 e7 o3 L. ]5 E7 N& @- V
修改之后,到目前为止再也没有出现ORA-12545的错误信息0 @( T: A% L. t' R& Z- R
不过Oracle没有认为这个是bug,只是认为是PROBLEM。. [. J: J8 u+ ]7 b9 J3 J8 H
这边我特别的说明下:我用的oracle的版本是 10.2.0.4,OS:Redhat as 4.5 |