oracle技术文档-监听器专题(精).docx
oracle技术文档-监听器专题(精).docx.
Oracle监听器概念 Oracle监听器是主要的oracle服务端网路构件,扮演着至关重要的作用。它负责管理 Oracle 数据库和客户端之间的通讯,它在一个特定的网卡端口(默认是TCP 1521端口)上监听连接请求,并将连接转发给数据库。你可以形象的把它认为是oracle数据库(服务端oracle实例)的大耳朵,一动也不动的呆在一个地方(端口号,默认是1521), 来监听外来的客户端发送的连接请求。 [img=636,471]file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtml1/02/clip_image002.jpg[/img] Ø Oracle监听器是一个独立的操作系统进程。在操作系统的服务列表可以看见它,一般名称为OracleOradb11g_home1TNSListenerØ Oracle监听器独立于oracle实例,它的启动和关闭独立于oracle数据库的启动和关闭。Ø Orale监听器的默认名称是listener,默认端口号为1521 3.Oracle监听器功能3.1监听客户端请求监听客户端请求。监听器运行在数据库服务器之上,与 Oracle 实例(可为多个)相关关联,是一个专门的进程 process,在 Windows 的服务项目或者 Linux 的运行进程列表中,都会看到对应的运行进程。Windows 上名为 TNSLSNR,Linux/Unix平台上是 lsnrctl。监听器守候在服务器制定端口(默认为:1521),监听客户端的请求。3.2为客户端请求分配server process在Oracle模式下,客户端进程是不允许直接操作数据库实例和数据,而是通过一个服务进程Server Process(也称为影子进程)。监听器只负责接听请求,之后将请求转接给Oracle ServerProcess。 当监听器接受到请求之后,就向操作系统(或者Dispathcer组件)要求(或分配)一个Server Process与客户端相连。 3.3注册实例服务 监听器是建立实例和客户端进程之间联系的桥梁。监听器和实例之家的联系,就是通过注册来实现的。 注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个对外的服务名可以和实例名一样,也可以不一样。 注册的过程就是实例告诉监听器,它的数据库实例名instance_name和服务名service_names。(对外提供的服务名)。注册的方式有2种:静态注册和动态注册。详细内容见后面 4.Oracl监听器工作原理 1)监听器作为一个独立的process在操作系统中运行,守候在特定网络端口(默认1521),等待客户端的请求到来。 2)当一个请求“如期而至”,监听器会对比请求中的service名称和已经注册的服务列表,如果不匹配,就拒绝。如果匹配,就定位到对应的oracle实例,并获得实例的oracle_home路径。 3)oracle监听器会向操作系统或dispatcher进程(专用连接、共享连接)分配一个server process,也就是前面讲过的影子进程。Server process将自己在OS中的进程编连接地址信息发给监听器;监听器将客户端信息传递给serverprocess. 4)监听器获得server process的信息之后,将其返回给客户端。客户端根据返回的信息,与server process在指定的服务器端口进行联系。 5)直到这个时候客户端才将连接用户名、密码等信息发给server process,进行登录验证等操作。监听器的工作也就到此结束。 5.Oracle监听器注册机制 在上面的内容中,我们已经初步了解了注册的作用,注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需知道该数据库对外提供的服务名就可以申请连接到数据库。相当于这样:在数据库服务器和客户端之间有一监控程序,在监听程序里,会记录相应数据库对应的服务名(一个数据库可对应多个服务名),当客户端需要连接数据库时,只需要提供服务名,就可以建立客户端与服务器之间的连接。
............