您好,欢迎访问三七文档
网络连接类型1、客户端直接连接数据库服务器2、中间层的应用服务器连接数据库服务器在客户端,网络服务器就是一个进程在服务器端,网络服务是通过监听器的进程来实现的在oracle中,最常见的连接方式是专用连接服务器进程与用户进程为一一对应的关系,一旦用户进程中断,其对应的服务器进程也被终止客户端最常见的是本地命名方法建立连接的大致过程1、客户端发起连接:通过在客户端提供用户名、密码、以及连接字符串等信息,建立与监听器的连接。连接字符串位于客户端的文件里面,文件名字是tnsnames.ora,根据安装的客户端不同,放置在不同的目录里面。哪台服务器?监听端口?使用协议?请求的数据库服务名?2、客户端一旦与监听器建立连接,则在客户端生成用户进程,同时监听器会判断客户端所请求的服务名是否是自己所管理的服务名如果客户端传过来的连接字符串不包含服务名,报错如果请求的服务名不是自己管理的,报错并中断如果请求的服务名是自己管理的,监听器就在数据库服务器上创建服务器进程3、监听器在创建服务器进程以后,会将用户进程与服务器进程建立连接,之后,监听器退出与客户端的连接4、服务器进程根据用户进程提供的用户名和密码到数据字典里判断是否正确5、如果用户名和密码不匹配,报错,如果匹配,则分配PGA,并生成session1、使用netca配置监听器一个最简单的监听器,只有一个address信息。添加了一个监听器。我们前面在配置listener的时候,并没有涉及到服务名的问题,客户端将服务名传给监听器以后,监听器的服务名来自何处?1、动态注册数据库实例里的PMON进程,将当前实例的服务名注册到同一台服务器上的,默认的,并在1521端口上监听的监听器(就是名为LISTENER的监听器),当前实例的服务名由初始化参数service_name决定手工启用动态注册。这个参数控制动态注册到的监听器。这个非默认监听器上始终没有注册。修改了这个参数以后。很快服务名就注册过来了。默认端口的服务名被动态注销了。静态注册重新启动listener以后,静态注册成功。客户端的服务名和监听器的服务名之间的对应关系就明确了。注册到listener1中静态注册到listener1中去了。配置客户端最常用的两种方式1、简单命名2、本地命名实例名字支持本地命名和简单命名本地命名使用的配置文件是tnsnames.ora文件,该文件位于客户端。我们可以使用netca来配置这个文件连接字符串,所以起名字服务名,必须和监听器里面管理的服务器名字对应1、连接字符串是否能够正确的解析2、判断客户端和服务监听器之间的网络连通性3、并不判断本地服务名和监听器管理的服务名之间是否匹配Oracle数据库服务器支持两种连接方式1、共享连接2、专用连接(默认的连接方式,一个用户进程对应一个服务器进程)用户进程退出,服务器进程也退出,释放所有的资源服务器进程可以看成是用户进程的代理,负责处理用户进程发出的命令,并返回结果共享服务器模式下1、用户进程与服务器进程是多对多的关系,多个服务器进程会处理多个用户进程2、专用连接中,用户进程没有发出命令,服务器进程处于空闲状态,资源一直占用,共享模式中,只要是服务器进程空闲,就可以处理其他用户发出的命令,因此服务器进程的数量减少,对资源的利用更加高效,占用的PGA减少,可以支持更多的用户共享连接的工作过程共享连接模式下,需要配置多个名为dispatcher的组件,dispatcher作为用户进程和服务器进程之间的协调者,负责将用户进程的请求传递给服务器进程,并将服务器进程得到结果返回给用户PMON定期将每个dispatcher的地址、以及工作负载注册到监听器里面,当用户进程连接监听器时,监听器会选择一个负载最低的dispatcher,并把该dispatcher的地址返回给用户进程,用户进程和dispatcher进程建立连接,用户进程在session的整个生命期间,所连接的dispatcher不会发生改变1、用户进程连接到监听器2、监听器根据注册的各个dispatcher的负载情况,选择一个负载最低的dispatcher,并将其地址返回给用户进程3、用户进程根据监听器返回的dispatcher地址,连接到该dispatcher4、dispatcher接收到用户进程发出的请求以后,会将该请求放入请求队列,该队列位于SGA中,请求队列被所有的dispatcher共有5、在服务器进程中,最空闲的服务器进程会从请求队列中按照先进先出的原则,挑选一个请求进行处理6、服务器进程处理请求后,得到的结果放入响应队列,Oracle为每个dispatcher分配一个对应的响应队列7、dispatcher到相应的队列中取出结果,返回给用户进程1、专用连接中,用户进程和服务器进程一一对应,用户进程对应的PGA被服务器进程独享2、共享连接中,多个服务器进程会处理多个用户请求,用户的PGA就需要在不同的服务器进程之间共享,PGA中的UGA部分就会被放入到SGA中,如果配置了largepool,则UGA会在largepool里分配,没有配置largepool,那么UGA就放在sharedpool里面配置共享连接1、配置dispatcher进程的数量2、服务器进程的数量服务器进程动态调整,首先是分配默认的数量,根据负载适当的增加,当负载下降的时候,适当减少服务器进程的数量。但是增加和减少的数量控制在上面的两个参数之间3、配置共享连接的session的数量专用连接=sessions-共享连接专用连接70、共享连接100改变tnsnames.ora文件,使用共享连接方式。启动了三个dispatcher,但是还没有共享连接。建立了一个共享连接。建立了一个专用连接1、服务器端配置完成以后,同时支持两种连接方式2、客户端根据tnsnames.ora中的解析,选择不同的连接方式。共享连接的一些问题1、有些操作是不能使用共享连接的启动关闭数据库实例创建表空间和数据文件维护表和索引等数据库的管理工作2、有些操作不适合共享服务器连接共享服务器适合单纯的OLTP对于需要扫描大量数据,运行时间较长的操作,不适合采用共享连接,例如备份恢复调用外部过程应用:有些功能通过PL/SQL完成会很麻烦,而通过C/C++语言编写编程则会容易得多,因此Oracle提供了在PL/SQL程序里直接调用外部函数(C函数和java方法)的功能,扩展了PL/SQL的程序功能1、用户进程执行PL/SQL程序2、在执行的PL/SQL程序过程中,调用了一个C/C++语言写的函数:c_func,借助别名库,找到被调用的外部函数所在的文件别名库是数据库里面的一个对象,用来描述一个外部函数所在的动态链接库的路径和名字3、PL/SQL将对外部函数的调用请求发给监听器4、监听器生成一个extproc进程,该进程专门用来处理外部函数的调用,每个session都会生成一个属于该session的extproc进程,并且在整个session生命周期里,extproc进程会一直存在5、extproc进程负责将别名库所指定的动态链接库文件加载到内存6、extproc进程执行指定的外部函数,并将结果返回给服务器进程,进而返回给用户使用netca重新配置监听器。对外部过程调用的服务名对外部过程调用的监听信息LISTENER监听tnsnames.ora中必须有上面的项必须和listener.ora中的一样上面的判断表明两个文件都配置正确,注意:两个文件都必须在服务器本地配置。创建一个函数文件,并且把这个函数文件编译成动态链接库建立一个别名库,将执行权限赋给admin在数据库里面创建一个调用声明,然后才能够使用这个函数。调用这个函数使用流程1、配置好监听(两个文件)2、建立好外部函数(C或java),编译链接外部函数成为动态链接库3、建立别名库,将别名库的权限给用户4、在数据库中对要引用的外部函数进行声明5、调用外部函数
本文标题:12-配置网络环境
链接地址:https://www.777doc.com/doc-3603204 .html