客户端如何连接服务器.ppt_第1页
客户端如何连接服务器.ppt_第2页
客户端如何连接服务器.ppt_第3页
客户端如何连接服务器.ppt_第4页
客户端如何连接服务器.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle 客户端如何连接服务器,服务器进程就是代表客户会话完成工作的进程,客户端的应用向数据库发送的SQL语句最后就要由这些服务器进程接收并执行。,Oracle 服务器处理客户的请求有两种方式 专用服务器连接(dedicated server) 共享服务器连接(shared server)或(multi threaded server MTS),在专用服务器连接方式下,每一个应用,oracle总会创建一个新的服务器进程,该服务器进程在应用的生存期中专门为应用服务,对于每个应用,都会出现一个新的专用服务器进程,应用和专用服务器进程之间是一对一的关系。 该服务器进程不是实例的一部分, 当客户进程通过某种网络通道与这个专用服务器直接通信,并由这个服务器进程接收和执行SQL,,如果有必要,它会读取数据文件,并在缓冲区中查找客户要的数据,该服务器进程的主要目标是对用户提交的SQL调用做出响应。,共享服务器连接(shared server) 正式的说法是多线程服务器(multi_threaded server-MTS)在共享服务器连接下,与数据库连接的客户进程不会与共享服务器直接通信,之所以不能与共享服务器直接对话,是因为这个服务器进程是共享的。,如果采用这种方式,就不会对每条用户的连接创建另外的线程。 在共享服务器中,oracle使用一个“共享进程”池为大量的用户提供服务。,为了共享服务器进程,还需要另外一种机制,通过该机制与服务器进程对话,为此,oracle使用一组称为调度器的进程。 客户进程通过网络与一个调度器进程通信,这个调度器进程将客户的请求放入SGA中的请求队列,第一个空闲共享服务器进程得到这个请求,并进行处理,调度器一直在监听这个队列,发现结果后,就会把结果传给客户。,对开发者而言,两种连接方式没有区别,客户连接向调度器发送一个请求,调度器首先将这个请求放在SGA中的请求队列中(1),第一个可用的共享服务器从请求队列中取出这个请求(2)并处理。共享服务器的处理结束后,再把响应(返代码、数据等)放到响应队列(3),接下来调度器拿到这个响应(4),传给用户。,专用服务器进程和共享服务器进程的任务是一样的:要处理提交的所有SQL,当向数据库提交一个 Select * from emp查询时,会有专用的或共享的服务器进程解析这个查询,并把它放入共享池中,这个进程要提出查询计划,如果有必要,还要执行这个查询计划,可能在缓冲区中找到必要的数据,或者将数据从磁盘读入缓冲区缓存中。 这些服务器进程是干重活的,执行排序、汇总、联结等工作。,了解专用服务器连接和共享服务器连接后, 是否有以下疑问: 怎样才能连接呢? 谁来启动这服务器呢? 怎么与调度联系?,连接的过程与平台有关系,我们这里介绍一般的过程。 TCP/IP的连接原理,TCP/IP连接的基本原理,客户在一台机器上,而服务器驻留在另一台机器上,这两台机器通过一个TCP/IP网络连接。 客户率先行动,使用oracle客户软件建立请求,力图连接数据库。,客户如何与数据库连接,Oracle net是一个网络软件,它需要同时安装在客户机和服务器上,通过它在客户端应用程序与oracle数据库服务器之间或服务器与服务器之间建立通信,-,分析: Sqlplus 为客户端软件 Sys/zhao 用户名/密码 orcl 引出需要来连接的连接串,如果建立一条专用服务器连接,监听器进程就会为我们创建一个专用服务器进程。新的专用服务器进程继承了监听器建立的连接,现在就与数据库物理地连接上了。,当我们发出共享服务器连接请求时,监听器的表现有所不同,监听器进程知道实例中运行了哪些调度器。接收到连接请求后,监听器可以从调度器池中选择一个调度器进程,监听器会向客户返回连接信息,其中说明了客户如何与调度器进程进行连接,如果可能的化,还可以把连接“转发”给调度器进程。 监听器发回连接信息后,它的工作就结束了。,监听器一直在特定主机的特定端口上运行,而调度 器会在服务器上随意指派的端口上接受连接,监听器知道调度器指定的随机端口号,并为客户选择一个调度器,客户再与监听器断开连接,并与调度器直接连接,然后客户端就与数据库有了一个物理的连接。,现在我们大致了解了客户端是如何连接服务器了。 现在来看一些具体的设置,后的orcl为连接字符串,如何解析该连接字符串? 我们要用到sqlnet.ora这个文件,该文件决定怎样找一个连接中出现的连接字符串。,Sqlnet.ora文件中NAMES.DIRECTORY_PATH中设置的解析方法,1、主机命名(hostname) 2、本地命名(tnsnames) 3、oracle easy connect(EZCONNECT) 4、oracle internet directory 5、external naming,主机 命名(hostname),主机命名:在一个连接中,一个主机名被当做标识一个数据库的全局数据库名,NAMES.DIRECTORY_PATH= (HOSTNAME, TNSNAMES),Sqlnet.ora文件中保存了网络服务名的解析路径 C:windowssystem32driverecthost,服务器端的监听要设置后面的链接符对应的服务,然后重新启动,本地命名(tnsnames或local naming ),通过各自客户端的配置信息进行解析 配置tnsnames.ora文件,TNS(transparent network substrate)透明网络底层 我们就理解TNS为客户端处理与远程连接的基础软件,有了它,客户端才有可能与服务器建立对等通信。 TNS连接串告诉客户端软件如何与远程服务器连接,当运行该命令时,客户端的客户软件会读取位于机器上的一个软件Tnsnames.ora文件,这是一个纯文本的配置文件。,通过该配置,客户软件可以把我们使用的TNS连接串ORCL映射到某些有用的信息,也就是主机名、该主机上监听器进程接受连接的端口,该主机上所连接数据库的服务名,客户端软件知道要连接到哪里,它会与主机名为AAAA的服务器在端口1521打开一条TCP/IP连接,如果服务器端DBA安装并配置了oracle net,并且有一个监听器在端口1521上监听连接请求,就会收到这个连接。,在网络环境中,我们会在服务器上运行一个称为TNS监听器的进程。就是这个监听器进程让我们的客户端与数据库物理连接。,当监听器收到连接请求时,它会使用自己的配置文件检查这个请求, 可能会拒绝请求(可能没有对应的数据库,或者IP地址受限, 不允许连接该主机),也可能接受请求,并真正建立连接。,SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = E:oracleproduct10.2.0db_2) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = E:oracleproduct10.2.0db_2) (SID_NAME = ORCL) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = AAAA)(PORT = 1521) ) ),EZCONNECT,该方法只有在oracle 10g以上的版本使用 要想使用该解析方法 在sqlnet.ora中必须设置 NAMES.DIRECTORY_PATH=(EZCONNECT,TNSNAMES),connect scott/tigerhostname:port/servicesname connect scott/tiger/hostname/servicesname,oracle internet directory,管理许多oracle服务器的复杂网络时有优势,管理员可以在一个比较集中的位置上配置和管理。,External naming,使用非oracle工具管理和解析oracle服务名称。,总结三个文件,客户端的两个文件 Sqlnet.ora Tnsnames.ora 服务器端的文件 Listener.ora,Connect sys/zhaoorcl as sysdba 1、oracle net首先通过sqlnet.ora来决定怎样找连接中出现的网络服务名orcl 假如sqlnet.ora是下面的设置 Names.directory_path=(tnsnames,hostname) 客户端就首先在tnsnames.ora中找orcl的记录,如果没有,则尝试把orcl当做一个主机名,通过网络途径将该主机名解析为对应的IP,然后连接。,2、listener.ora 监听进程的配置文件,在服务器端接受远程连接的申请,如果不使用远程连接,listener进程不是必须的, 关闭llistener进程并不影响已经存在的数据库连接,服务器监听的关闭,配置监听器,Oracle net manager Oracle net configuration assistant 手工配置listener.ora,几个名称,1、数据库名 一个数据库的标识 2、实例名 数据库实例名是用于和操作系统进行联系的标识,即数据库和操纵系统之间的交互用的就是数据库实例名。 3、数据库实例和oracle_sid 两者都代表数据库实例,但有区别 instance_name是数据库的参数 oracle_sid是操作系统的环境变量,从操作系统的角度访问实例名,必须通过oarcle_sid 4、全局数据库名 数据库名+域名,监听器,注册,注册就是将数据库作为一个服务注册到监听器。 在数据库服务器启动过程中,数据库服务器会向监听程序注册响应的服务(无论何时启动一个数据库,默认都有两条信息注册到监听器中:数据库服务器对应的实例和服务),静态注册,静态注册就是监听进程启动时读取listener.ora文件的配置,将实例和服务注册到监听程序 静态注册时,listener.ora中的GLOBAL_DBNAME向外提供服务名,listener.ora中的SID_NAME提供注册的实例名。,动态注册,动态注册时instance启动的时候pmon进程根据参数文件中的instance_name,service_names两个参数将实例和服务动态的注册到listener中。,注册到监听器中的实例值从参数文件中的instance_name参数获得,如果该参数没有设定值,那么它将取参数文件的db_name值。 注册到监听器中的服务值从参数文件中的service_names取得。如果该参数没有设定值,数据库将拼接参数文件中的db_name和db_domain的值来注册自己。,动态注册默认只注册到默认的监听器上(名称为listener,端口1521,协议tcp),非默认的动态注册,Pmon 默认只会注册到port=1521 的listener如果想让pmon动态注册到以外的监听,需要设置参数 local_listener=listener1 Alter system set local_listener=listener1 但这样不能成功,设置local_listene

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论