
愿所有人都能被这个世界善待,
愿用心的人永远不会受到伤害。
----小陈寄语
Oracle监听配置篇
监听器是什么?
Oracle监听器运行于数据库服务器端一个进程,用于监听所有来自客户端的连接请求,并提供处理数据库服务方面的请求。
这个进程负责监听用户的连接请求,每当收到一个用户请求,监听器进程就会创建一个影子进程,然后把用户请求转发给这个影子进程,由影子进程继续完成用户提交的各种命令。
一旦监听进程把用户进程转交给影子进程,监听进程的任务就算完成了,会继续去监听下一个用户请求,监听器配置文件listener.ora。
监听器的功能:
A:监听客户端请求,监听器运行在数据库服务器之上,与Oracle实例相关联,是一个专门的进程process。
B:为客户端请求分配Server Process。监听器只负责接收请求,之后将请求转发给Oracle Server Process,(在Oracle服务模式下,客户端进程是不允许直接操作数据库的,需要通过一个服务进程Server Process作为代理。)
C:注册实例服务。本质上讲,listener是建立实例与客户端进程之间联系的桥梁。Listener与实例之间的联系,就是通过注册的过程来实现的。(注册的过程就是实例告诉监听器,它的数据库实例名称instance_name和服务名server_names。
D:错误转移failover:Failover是RAC容错的一个重要方面功能,其功能是在数据库实例奔溃的时候,可以自动将请求转移到其他可用实例上的一种功能,提供很大程度上的可用性(Availability)功能。
E:负载均衡量:在RAC架构种,Oracle实现了负载均衡。当一个用户请求到来时,Oracle会根据当前RAC集群环境中所有实例的负载情况,避开负载较高的实例,将请求转移到负载较低的实例进行处理。
Method1:静态注册
一般来说,我们常说的oracle数据库监听配置,一般都是值静态注册,将实例的相关信息手动告知listener,将数据库的相关信息配置到listener.ora中。在实例启动时就会读取listener.ora文件的配置,listener.ora中的global_dbname向外提供服务名,listener.ora中的sid_name提供注册的实例名,将实例和服务注册到监听程序。静态配置最大的问题就是监听器无法直到数据库真正的状态。
Method2:动态注册
一台服务器一般只需要一个监听器,一个监听器可以监听多个数据库,也可以一个数据库多个监听,当然,也可以为每个数据库配置专门的监听器,这要根据具体情况配置。事实上,配置监听就是将数据库服务的注册信息写入指定文件,那样每次启动监听的时候就会自动读取数据库的相关信息。我们把实例将数据库所提供的服务名及相关信息告诉listener的过程称之为服务注册。注册通常包括数据库的服务名、实例名、server模式、端口号等。
lsnrctl命令可查看监听的运行情况和数据库状态:
ready:代表实例可以接受连接请求,是动态注册的监听。
blocked:实例目前不能接受连接的请求。
unknown:静态注册的监听。





Practice1:静态注册(使用默认端口)
Step1:设置数据库表示,进入指定目录下
Step2:服务器配置监听文件
Step3:客户端配置TNS文件
Step4:服务器启动监听
Step5:启动数据库
Practice2:动态注册(使用默认端口)
Step1:服务器配置监听文件
Step2:客户端配置TNS服务
由于监听的是1521端口,所以可以不配置,共享Practice1。注意关闭LISTENER1;
Step3:启动监听服务
注意:由于是动态注册,所以先本地登录到sys用户进行注册。
Step4:启动数据库
Practice3:静态注册(使用非默认端口1522)
Step1:服务器配置监听文件
编辑如下:
Step2:客户端配置TNS服务
Step3:启动监听服务
Step4:启动数据库
Practice4:静态注册,配置一个侦听器(非默认端口1522、1523)
Step1:服务器配置监听文件
编辑如下:
Step2:客户端配置TNS服务
编辑如下:
Step3:启动监听服务
Step4:启动数据库
测试1:
测试2:
Practice5:配置监听注册,配置多个监听器(非默认端口1524、1525)
Step1:服务器配置监听文件
编辑如下:
Step2:客户端配置TNS服务
编辑如下:
Step3:启动监听服务
监听1:
监听2:
Step4:启动数据库
Pracitce6:配置动态注册,非默认端口(1526)
Step1:服务器配置监听文件
编辑如下:
Step2:客户端配置TNS服务
编辑如下:
Step3:启动监听服务
Step4:启动数据库
启动前:先本地登录到sys用户下注册
正式启动数据库:
Pracitce:添加不同的service_name
注意:此处实验使用LISTENER1测试:
Step1:修改service_name
Step2:修改LISTENER1监听全局名,默认端口1521
编辑如下:
Step3:修改LISTENER1服务名
编辑如下:
Step4:开启监听
Step5:启动数据库

小陈今天的分享就到这里啦!
期待下一期的邂逅!