欢迎来到天天文库
浏览记录
ID:16075226
大小:910.50 KB
页数:57页
时间:2018-08-07
《客户端如何连接服务器(4)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Oracle客户端如何连接服务器服务器进程就是代表客户会话完成工作的进程,客户端的应用向数据库发送的SQL语句最后就要由这些服务器进程接收并执行。Oracle服务器处理客户的请求有两种方式专用服务器连接(dedicatedserver)共享服务器连接(sharedserver)或(multi–threadedserverMTS)在专用服务器连接方式下,每一个应用,oracle总会创建一个新的服务器进程,该服务器进程在应用的生存期中专门为应用服务,对于每个应用,都会出现一个新的专用服务器进程,应用和专用服务器进程之间是一对一的关系。该服务器
2、进程不是实例的一部分,当客户进程通过某种网络通道与这个专用服务器直接通信,并由这个服务器进程接收和执行SQL,,如果有必要,它会读取数据文件,并在缓冲区中查找客户要的数据,该服务器进程的主要目标是对用户提交的SQL调用做出响应。共享服务器连接(sharedserver)正式的说法是多线程服务器(multi_threadedserver-MTS)在共享服务器连接下,与数据库连接的客户进程不会与共享服务器直接通信,之所以不能与共享服务器直接对话,是因为这个服务器进程是共享的。如果采用这种方式,就不会对每条用户的连接创建另外的线程。在共享服务器
3、中,oracle使用一个“共享进程”池为大量的用户提供服务。为了共享服务器进程,还需要另外一种机制,通过该机制与服务器进程对话,为此,oracle使用一组称为调度器的进程。客户进程通过网络与一个调度器进程通信,这个调度器进程将客户的请求放入SGA中的请求队列,第一个空闲共享服务器进程得到这个请求,并进行处理,调度器一直在监听这个队列,发现结果后,就会把结果传给客户。对开发者而言,两种连接方式没有区别客户连接向调度器发送一个请求,调度器首先将这个请求放在SGA中的请求队列中(1),第一个可用的共享服务器从请求队列中取出这个请求(2)并处理。
4、共享服务器的处理结束后,再把响应(返代码、数据等)放到响应队列(3),接下来调度器拿到这个响应(4),传给用户。专用服务器进程和共享服务器进程的任务是一样的:要处理提交的所有SQL,当向数据库提交一个Select*fromemp查询时,会有专用的或共享的服务器进程解析这个查询,并把它放入共享池中,这个进程要提出查询计划,如果有必要,还要执行这个查询计划,可能在缓冲区中找到必要的数据,或者将数据从磁盘读入缓冲区缓存中。这些服务器进程是干重活的,执行排序、汇总、联结等工作。了解专用服务器连接和共享服务器连接后,是否有以下疑问:怎样才能连接呢?
5、谁来启动这服务器呢?怎么与调度联系?连接的过程与平台有关系,我们这里介绍一般的过程。TCP/IP的连接原理TCP/IP连接的基本原理客户在一台机器上,而服务器驻留在另一台机器上,这两台机器通过一个TCP/IP网络连接。客户率先行动,使用oracle客户软件建立请求,力图连接数据库。客户如何与数据库连接Oraclenet是一个网络软件,它需要同时安装在客户机和服务器上,通过它在客户端应用程序与oracle数据库服务器之间或服务器与服务器之间建立通信--分析:Sqlplus为客户端软件Sys/zhao用户名/密码@orcl@引出需要来连接的连
6、接串如果建立一条专用服务器连接,监听器进程就会为我们创建一个专用服务器进程。新的专用服务器进程继承了监听器建立的连接,现在就与数据库物理地连接上了。当我们发出共享服务器连接请求时,监听器的表现有所不同,监听器进程知道实例中运行了哪些调度器。接收到连接请求后,监听器可以从调度器池中选择一个调度器进程,监听器会向客户返回连接信息,其中说明了客户如何与调度器进程进行连接,如果可能的化,还可以把连接“转发”给调度器进程。监听器发回连接信息后,它的工作就结束了。监听器一直在特定主机的特定端口上运行,而调度器会在服务器上随意指派的端口上接受连接,监听
7、器知道调度器指定的随机端口号,并为客户选择一个调度器,客户再与监听器断开连接,并与调度器直接连接,然后客户端就与数据库有了一个物理的连接。现在我们大致了解了客户端是如何连接服务器了。现在来看一些具体的设置@后的orcl为连接字符串,如何解析该连接字符串?我们要用到sqlnet.ora这个文件,该文件决定怎样找一个连接中出现的连接字符串。Sqlnet.ora文件中NAMES.DIRECTORY_PATH中设置的解析方法1、主机命名(hostname)2、本地命名(tnsnames)3、oracleeasyconnect(EZCONNECT)
8、4、oracleinternetdirectory5、externalnaming主机命名(hostname)主机命名:在一个连接中,一个主机名被当做标识一个数据库的全局数据库名NAMES.D
此文档下载收益归作者所有