日期:2014-05-16 浏览次数:20498 次
Oracle
网络配置
三个配置文件 listener.ora
、sqlnet.ora
、tnsnames.ora
,都是放在$ORACLE_HOME\network\admin
目录下。
1. sqlnet.ora-----
作用类似于linux
或者其他unix
的nsswitch.conf
文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。
例如我们客户端输入
sqlplus sys/oracle@orcl
假如我的sqlnet.ora
是下面这个样子
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那么,客户端就会首先在tnsnames.ora
文件中找orcl
的记录.
如果没有相应的记录则尝试把orcl
当作一个主机名,通过网络的途径去解析它的 ip
地址然后去连接这个ip
上GLOBAL_DBNAME=orcl
这个实例,当然我这里orcl
并不是一个主机名
如果我是这个样子
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客户端就只会从tnsnames.ora
查找orcl
的记录,
括号中还有其他选项,如LDAP
等并不常用。
2. Tnsnames.ora------
这个文件类似于unix
的hosts
文件,提供的tnsname
到主机名或者ip
的对应,只有当sqlnet.ora
中类似
NAMES.DIRECTORY_PATH= (TNSNAMES)
这样,也就是客户端解析连接字符串的顺序中有TNSNAMES
是,才会尝试使用这个文件。
PROTOCOL
:客户端与服务器端通讯的协议,一般为TCP
,该内容一般不用改。
HOST
:数据库侦听所在的机器的机器名或IP
地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX
或WINDOWS
下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname
命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig
(for UNIX
)命令得到IP
地址。需要注意的是,不管用机器名或IP
地址,在客户端一定要用ping
命令ping
通数据库侦听所在的机器的机器名,否则需要在 hosts
文件中加入数据库侦听所在的机器的机器名的解析。
PORT
:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora
文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]
命令察看。此处Port
的值一定要与数据库侦听正在侦听的端口一样。
SERVICE_NAME
:在服务器端,用system
用户登陆后,sqlplus> show parameter service_name
命令察看。
ORCL:
对应的本机,SALES
对应的另外一个IP
地址,里边还定义了使用主用服务器还是共享服务器模式进行连接
#连接的时候输入的
TNSNAME
ORCL =
????
(DESCRIPTION =
????
(ADDRESS_LIST =
#
下面是这个TNSNAME
对应的主机,端口,协议
????????
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
?????
(CONNECT_DATA =
#
使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式自动调节
????????
(SERVER = DEDICATED)
#
对应service_name
,SQLPLUS>;show parameter service_name;
进行查看
?????
(SERVICE_NAME = orcl)
)
)
#
下面这个类似
SALES =
????
(DESCRIPTION =
????????
(ADDRESS_LIST =
????????????
(ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))
)
???? (CONNECT_DATA =
????????
(SERVER = DEDICATED)
????????
(SERVICE_NAME = sales)
)
)
注意:如果数据库服务器用MTS
,客户端程序需要用database link
时最好明确指明客户端用dedicated
直连方式,
不然会遇到很多跟分布式环境有关的ORACLE BUG
。一般情况