作者:浅笑你的妩媚 | 来源:互联网 | 2014-07-09 16:02
OracleTCP/IP连接的基本原理这里分析网络上最常见的一种情形:在TCP/IP连接上建议一个基于网络的连接请求。在这种情况下,客户在一台机器上,而服务器在另一台机器上,这两台机器通过一个TCP/IP网络连接。客...SyntaxHighlighter.all();
Oracle TCP/IP连接的基本原理
这里分析网络上最常见的一种情形:在TCP/IP连接上建议一个基于网络的连接请求。在这种情况下,客户在一台机器上,而服务器在另一台机器上,这两台机器通过一个TCP/IP 网络连接。客户率先行动,使用Oracle客户软件(Oracle 提供的一组的引用程序接口或API)建立一个请求,力图连接
数据库。例如,客户可以发出如下命令: www.2cto.com
$sqlplus scott/tiger@orcl.
这里客户是程序SQL*Plus ,scott/tiger为用户名和密码,orcl是一个TNS服务名。TNS代表透明网络底层(Transparent Network Substrate),这是
Oracle客户中处理远程连接的“基础”软件,有了它才有可能建立对等通信。TNS连接串告诉Oracle软件如何与远程数据库连接。一般你的机器上运行的客户软件会读取一个tnsnames.ora文件。这是一个纯文本的配置文件,通常放在$ORACLE_HOME/network/admin目录下($ORACLE_HOME 表示Oracle安装目录的完整路径)。如果有如下配置: www.2cto.com
ORCL =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = somehost.somewhere .com)
(POST = 1521)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVER_HOME = orcl)
)
)
根据这个配置信息,Oracle客户软件可以把我们使用的TNS连接orcl映射到某些有用的信息,也就是主机名,该主机上“监视器”进程接受(监听)连接的端口,该主机上所连接数据库的服务名等等。每个数据库实例可以向监听器注册,表示要提供多个服务。所以,服务就映射到物理的数据库实例。 www.2cto.com
既然客户软件知道要连接到那里,它会与主机名为somehost.somewhere .com的服务器在端口1521上打开一条TCP/IP 连接,如果服务器DBA安装了Oracle Net,并且有一个监听器在端口1521监听连接请求,就会受到这个请求。在网络环境中我们会在服务器上运行一个称为TNS静听器进程。就是这个监听器让我们与数据库物理连接。当它收到入站连接请求时,它会使用自己的配置文件检查这个请求,可能会拒绝请求(例如:因为没有这样的数据库,或者可能我们的IP受到限制,不允许连接这个主机),也可能会接受这个请求,并建立真正连接。