在Oracle网络结构中解决连接问题
上一篇 / 下一篇 2009-02-01 22:46:46 / 个人分类:Oracle
- 文件版本: V1.0
- 开发商: 本站原创
- 文件来源: 本地
- 界面语言: 简体中文
- 授权方式: 免费
- 运行平台: Win9X/Win2000/WinXP
首先来说Oracle的网络结构,往复杂处说能加上加密、LDAP等等。。这里不做讨论,重点放在基本的网络结构也就是我们最常用的这种情况51Testing软件测试网*z.]G;K(Es
51Testing软件测试网6^Q+W \&cg
三个配置文件
1eN&j%jZ5P-l"wN0
B,|;h5|-g8j0 listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME\network\admin目录下。51Testing软件测试网7C3?9erM?%eo
9E-G;y,dP0 重点:三个文件的作用和使用51Testing软件测试网Pw$K]}
!A'Eu8f lw)o }dF0 #-----------------------
$jAIT)^2{OB6hZqPP0
6P+Cin/Z0 sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串,
3r FE$V#K:|/a[.e0
?b"j8m.Y L G0 例如我们客户端输入
5OpR-\!OWou4e/@0 51Testing软件测试网`&DE4c4Br gy
sqlplus sys/oracle@orcl
-Ep`9M0Tu"Ckuw0
J pc}_0 假如我的sqlnet.ora是下面这个样子51Testing软件测试网F |[ S?7[;a
51Testing软件测试网 HJ"y3D)X-aele
SQLNET.AUTHENTICATION_SERVICES= (NTS)51Testing软件测试网4Wtra:?8s.Y^2W+o
7b o1y!U"pp7a^0 NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)51Testing软件测试网;T&o-eCy"N:V7K)b.dzC
8s.b9E"t%u jc0 那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名51Testing软件测试网[0H.x_`:u\
51Testing软件测试网!|6I ]PY {
如果我是这个样子
Bkj*c b3H+H0we0 51Testing软件测试网)v,h#Db-IV2H
NAMES.DIRECTORY_PATH= (TNSNAMES)
e bP2j$|+X V]lZ[K0
c @3_2K@'v8n6q)\0 那么客户端就只会从tnsnames.ora查找orcl的记录
&Iy4L!S:xlrk4H0 51Testing软件测试网$~ b,i2p;Q[Gh
括号中还有其他选项,如LDAP等并不常用。
1P[/fcr3Tl#Z"g0
*S!Vb,]PB0 #------------------------
d#{ HpR \V u]0 51Testing软件测试网3b(M6@On:iC$uY
Tnsnames.ora------这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似51Testing软件测试网4[YKQ[,wsh5Z
W+|(AB*a.kW0 NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。51Testing软件测试网*c3ew!As R
51Testing软件测试网F}#v,v!O]gN!f
例子中有两个,ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接,一句一句说
1^RRiEd0
'V(s#WNgHTd;zJ`0 #你所要连接的时候输入得TNSNAME51Testing软件测试网%?G+]6k[2WB b^
51Testing软件测试网vww [Hw
ORCL =51Testing软件测试网T4]+v{ IG
51Testing软件测试网R:Yz @{-[L
(DEscrīptION =
/bb+a)FYt0g0c}P0
!}"f$U#W%mqu0 (ADDRESS_LIST =51Testing软件测试网9P(xVHkv#k/Z&B
tRZ1w"sZlS0 #下面是这个TNSNAME对应的主机,端口,协议51Testing软件测试网'qa KRWA6~l
51Testing软件测试网,r m(V%i7r
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
!^+FxMV8Y'O P6J0 51Testing软件测试网/PM b'|8d
)51Testing软件测试网:O A n5x{Y [
v'S/RD y;B jx.s0 (CONNECT_DATA =51Testing软件测试网#_8f RY&B#k
51Testing软件测试网r!w1p"|bAd
#使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式
A P'i+F8]0 51Testing软件测试网6r;k!RU/U8F8I[o
#自动调节
X$v!zX9F7g j0 51Testing软件测试网3LQ{BrQ
(SERVER = DEDICATED)
1M"~z(O7V~#@Md0 51Testing软件测试网3{"bepA2CX
#对应service_name,SQLPLUS>show parameter service_name;51Testing软件测试网E p P`k @Eo/W
@:q eSw%X Ka0 #进行查看
L$ky8R\@'{ L$a7`B[0 51Testing软件测试网q:T*Lwa
(SERVICE_NAME = orcl)
+PRF7_-TS_0
0_U2y3TkWb0 )
$Lh_ `(H0RV#}0 51Testing软件测试网bT:Sa}{;z;LR&r#H
)51Testing软件测试网6l7Gs~+V7h8h]0Hgh
O,X&t)]|![2e0 #下面这个类似51Testing软件测试网zY%Hcrx
B2h p|G^-zP0 SALES =
;|9FjU,j0
\M:z;uzo#gf/H(|0 (DEscrīptION =
"K*qb&MRM+X9J0
m#k:{~-G,InlY5B:s0 (ADDRESS_LIST =
N%@_ _ v&aG.k v0 51Testing软件测试网@%O3l,Y B}B
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))
'FMS6R-f0
G{:d)S({,q0 )
:Fh}!mu.k+`Y.O0 51Testing软件测试网G3w}$oF/Hj|Z
(CONNECT_DATA =
/v_Rc,K'H xw0
,G t,{"Jr },Y,Q3N0A0 (SERVER = DEDICATED)
51Testing软件测试网6^Q+W \&cg
三个配置文件
1eN&j%jZ5P-l"wN0
B,|;h5|-g8j0 listener.ora、sqlnet.ora、tnsnames.ora ,都是放在$ORACLE_HOME\network\admin目录下。51Testing软件测试网7C3?9erM?%eo
9E-G;y,dP0 重点:三个文件的作用和使用51Testing软件测试网Pw$K]}
!A'Eu8f lw)o }dF0 #-----------------------
$jAIT)^2{OB6hZqPP0
6P+Cin/Z0 sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串,
3r FE$V#K:|/a[.e0
?b"j8m.Y L G0 例如我们客户端输入
5OpR-\!OWou4e/@0 51Testing软件测试网`&DE4c4Br gy
sqlplus sys/oracle@orcl
-Ep`9M0Tu"Ckuw0
J pc}_0 假如我的sqlnet.ora是下面这个样子51Testing软件测试网F |[ S?7[;a
51Testing软件测试网 HJ"y3D)X-aele
SQLNET.AUTHENTICATION_SERVICES= (NTS)51Testing软件测试网4Wtra:?8s.Y^2W+o
7b o1y!U"pp7a^0 NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)51Testing软件测试网;T&o-eCy"N:V7K)b.dzC
8s.b9E"t%u jc0 那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名51Testing软件测试网[0H.x_`:u\
51Testing软件测试网!|6I ]PY {
如果我是这个样子
Bkj*c b3H+H0we0 51Testing软件测试网)v,h#Db-IV2H
NAMES.DIRECTORY_PATH= (TNSNAMES)
e bP2j$|+X V]lZ[K0
c @3_2K@'v8n6q)\0 那么客户端就只会从tnsnames.ora查找orcl的记录
&Iy4L!S:xlrk4H0 51Testing软件测试网$~ b,i2p;Q[Gh
括号中还有其他选项,如LDAP等并不常用。
1P[/fcr3Tl#Z"g0
*S!Vb,]PB0 #------------------------
d#{ HpR \V u]0 51Testing软件测试网3b(M6@On:iC$uY
Tnsnames.ora------这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似51Testing软件测试网4[YKQ[,wsh5Z
W+|(AB*a.kW0 NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。51Testing软件测试网*c3ew!As R
51Testing软件测试网F}#v,v!O]gN!f
例子中有两个,ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接,一句一句说
1^RRiEd0
'V(s#WNgHTd;zJ`0 #你所要连接的时候输入得TNSNAME51Testing软件测试网%?G+]6k[2WB b^
51Testing软件测试网vww [Hw
ORCL =51Testing软件测试网T4]+v{ IG
51Testing软件测试网R:Yz @{-[L
(DEscrīptION =
/bb+a)FYt0g0c}P0
!}"f$U#W%mqu0 (ADDRESS_LIST =51Testing软件测试网9P(xVHkv#k/Z&B
tRZ1w"sZlS0 #下面是这个TNSNAME对应的主机,端口,协议51Testing软件测试网'qa KRWA6~l
51Testing软件测试网,r m(V%i7r
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
!^+FxMV8Y'O P6J0 51Testing软件测试网/PM b'|8d
)51Testing软件测试网:O A n5x{Y [
v'S/RD y;B jx.s0 (CONNECT_DATA =51Testing软件测试网#_8f RY&B#k
51Testing软件测试网r!w1p"|bAd
#使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式
A P'i+F8]0 51Testing软件测试网6r;k!RU/U8F8I[o
#自动调节
X$v!zX9F7g j0 51Testing软件测试网3LQ{BrQ
(SERVER = DEDICATED)
1M"~z(O7V~#@Md0 51Testing软件测试网3{"bepA2CX
#对应service_name,SQLPLUS>show parameter service_name;51Testing软件测试网E p P`k @Eo/W
@:q eSw%X Ka0 #进行查看
L$ky8R\@'{ L$a7`B[0 51Testing软件测试网q:T*Lwa
(SERVICE_NAME = orcl)
+PRF7_-TS_0
0_U2y3TkWb0 )
$Lh_ `(H0RV#}0 51Testing软件测试网bT:Sa}{;z;LR&r#H
)51Testing软件测试网6l7Gs~+V7h8h]0Hgh
O,X&t)]|![2e0 #下面这个类似51Testing软件测试网zY%Hcrx
B2h p|G^-zP0 SALES =
;|9FjU,j0
\M:z;uzo#gf/H(|0 (DEscrīptION =
"K*qb&MRM+X9J0
m#k:{~-G,InlY5B:s0 (ADDRESS_LIST =
N%@_ _ v&aG.k v0 51Testing软件测试网@%O3l,Y B}B
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))
'FMS6R-f0
G{:d)S({,q0 )
:Fh}!mu.k+`Y.O0 51Testing软件测试网G3w}$oF/Hj|Z
(CONNECT_DATA =
/v_Rc,K'H xw0
,G t,{"Jr },Y,Q3N0A0 (SERVER = DEDICATED)