根据这个配置信息,Oracle客户软件可以把我们使用的TNS连接串ora10g.localdomain映射到某些有用的信息,也就是主机名、该主机上“监听器”进程接受(监听)连接的端口、该主机上所连接数据库的服务名,等等。服务名表示具有公共属性、服务级阈值和优先级的应用组。提供服务的实例数量对应用是透明的,每个数据库实例可以向监听器注册,表示要提供多个服务。所以,服务就映射到物理的数据库实例,并允许DBA为之关联阈值和优先级。
这个串(ora10g.localdomain)还可以用其他方式来解析。例如,可以使用Oracle Internet目录(Oracle Internet Directory,OID),这是一个分布式轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)服务器,其作用就相当于解析主机名的DNS。不过,tnsnames.ora文件通常只适用于大多数小到中型安装,在这些情况下,这个配置文件的副本不算太多,尚可管理。
既然客户软件知道要连接到哪里,它会与主机名为localhost.localdomain的服务器在端口1521上打开一条TCP/IP socket连接。如果服务器DBA安装并配置了Oracle Net,并且有一个监听器在端口1521上监听连接请求,就会收到这个连接。在网络环境中,我们会在服务器上运行一个称为TNS监听器的进程。就是这个监听器进程能让我们与数据库物理连接。当它收到入站连接请求时,它会使用自己的配置文件检查这个请求,可能会拒绝请求(例如,因为没有这样的数据库,或者可能我们的IP地址受到限制,不允许连接这个主机),也可能会接受请求,并真正建立连接。
如果建立一条专用服务器连接,监听器进程就会为我们创建一个专用服务器。在UNIX上,这是通过fork()和exec()系统调用做到的(在UNIX中,要在初始化之后创建新进程,惟一的办法就是通过fork())。这个新的专用服务器进程继承了监听器建立的连接,现在就与数据库物理地连接上了。在Windows上,监听器进程请求数据库进程为连接创建一个新线程。一旦创建了这个线程,客户就会“重定向”到该线程,相应地就能建立物理连接。图2-4显示了UNIX上的监听器进程和专用服务器连接。
BPingURL">
联系客服