local_listener是在一套Oracle系统上(一个主机上可以安装多套Oracle软件系统的)指定的一个监听程序[应该是在一个主机的多个账户上安装的多套Oracle软件系统公用一个local_listener,即一个主机有一个local_listener]。PMON进程将在该Oracle系统上的(后于该监听程序启动的)实例的信息注册给该监听程序,这就是所谓的动态监听功能。
注释:具有动态监听功能的监听程序,可以监听晚于它启动的实例,不能监听早于它启动的实例,因为将实例的信息注册给该监听程序的PMON进程只有在实例启动时会去将实例的信息注册给该监听程序,其他时候不会去注册。
local_listener有默认值的,即默认监听配置(协议为TCP,端口号为1521),所以凡有该监听配置的监听程序自动具有动态监听功能。其他监听配置的监听程序若要具有动态监听功能,就要将local_listener的监听配置改为或是附加上自己的监听配置即可。
local_listener指定了监听配置,而实际上已有的监听程序中可以不具有这种配置或是实际上的已有的具有这种配置的监听程序还未启动,这样实际上还没有动态监听的功能。只有当具有该监听配置的监听程序启动了之后,才能具有动态监听功能。
注释: local_listener这个参数确切的说是指监听配置,非监听程序。它可以赋多个值,值间用冒号隔开。监听配置和监听程序两个概念不要混淆,监听程序是指具有某种监听配置的程序。
remote_listener参数和local_listener这个参数的功能是一样的(这两个参数都是针对同一个主机(或说同一个Oracle系统)而设置的)。只不过前者定义了一台远程主机上的一个监听配置(程序),让本机上的PMON进程知道向哪个远程主机上的监听程序注册本机上的实例信息,使该远程主机能为本机的实例提供监听服务。这就是所谓的 远程动态监听功能。
上面的文章转自http://blog.csdn.net/haiross/article/details/12772147.
对于单机系统来理解local_listener是很容易的,对于rac的一个节点,它既存在local_listener又存在remote_listener。理解起来就有些问题。我个人理解是local_listener就是本节点的listener,remote_listener是一个所有节点listener的节点池的名字。