TNSNAMES.ORA, LISTENER.ORA and SQLNET.ORA

Oracle uses three files (listener.ora, tnsnames.ora & sqlnet.ora) for network configuration.



Oracle Net is configured by configuration files. These include (but are not limited to):

    • TNSNAMES.ORA - This file contains a list of service names, which translate into the instances the client can connect to. It (tnsnames.ora) is used on outgoing requests.
    • SQLNET.ORA - this file is used to configure Oracle Net on the client. For example, tracing can be turned on.
    • LISTENER.ORA - This file configures the listener on the host (server).

TNSNAMES.ORA

类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应




LISTENER.ORA

接受远程对数据库的接入申请并转交给oracle的服务器进程


SQLNET.ORA

this file is used to configure Oracle Net on the client. For example, tracing can be turned on.


当客户端发出一条connhr/hr@sid命令的时候,其实是一个比较复杂的过程,清楚了这个连接过程以后,当发现连接异常的时候,就可以很准确的定位问题的原因了。
客户端配置:sqlnet.ora, tnsnames.ora
服务器端配置:listener.ora(四要素:IP+TCP/IP+PORT+SID)
连接过程:
1. 读取 SQLNET.ORA 选择解析方法
当客户端发出conn命令时,查找客户端的sqlnet.ora 文件
E:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora NAMES.DIRECTORY_PATH= (TNSNAMES)
通过客户端的sqlnet.ora来选择解析的方法(主机命名、本地命名、目录命名、外部命名、ORACLE NAMES、easy connect(10g))。

2. 若是本地命名,读取TNSNAMES.ORA寻找三要素
如果选择的是TNSNAMES本地命名,那么到
E:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora下去解析服务名
    DEVDB2 = /*服务名*/
     (DESCRIPTION =
                                   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.230.69)(PORT = 1521)) /*监听地址:协议+IP+PORT*/
                                   (CONNECT_DATA = (SERVER = DEDICATED)
                                  (SERVICE_NAME = devdb)))/*SID*/

3. 建立到Server端 LISTENER 的连接
根据IP+PROT+TCP/IP建立与监听程序的连接,并向该监听程序发送一个CONNECT数据包 (见图中符号1)

4. Server端的 LISTENER 检查有效性
当Server端接到请求以后,检查是否有已经注册的SID与client端发出的请求有匹配的SID, 如果有,LISTENER分派一个新的SERVER PROCESS进程来处理该连接,此时会在LISTENER程序和 SERVER PROCESS之间建立一个继承连接,以传送初始化信息,传送完毕后,LISTENER程序和SERVER PROCESS之间的连接关闭,剩下的连接就是SERVER PROCESS和client端的连接了,这也就是为什么关闭 LISTENER只会影响新请求的client端,不会影响已经连接上的session的原因了。(见图中符号2)

5. SERVER PROCESS将RESEND数据包发送回客户机。见图中符号3)

6. CLIENT 继续向 SERVER PROCESS 发送新的CONNECT 数据包。(见图中符号4)

7. 该专用服务器进程接受传入的连接,处理完成后,将ACCEPT 消息转发回client端。见图中符号5)


Reference1:http://heis.vuv.cz/sluzby/oradoc/doc8/network.804/a55913/apc.htm

Reference2:http://oraclecoursebooks.com/books/oracle9i_admin/22_9i_dba/22_oracle9iadmin.html

Reference3:http://space.itpub.net/9252210/viewspace-578120

posted on 2012-05-29 00:38  h2内存数据库  阅读(346)  评论(0编辑  收藏  举报

导航