我的编程空间,编程开发者的网络收藏夹
学习永远不晚

local_listener 与 remote_listener 参数说明

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

local_listener 与 remote_listener 参数说明

http://blog.csdn.net/tianlesoftware/article/details/6087045

一.  LOCAL_LISTENER 和 REMOTE_LISTENER说明

1.1  LOCAL_LISTENER

官网信息如下:

      

Property

Description

Parameter type

String

Syntax

LOCAL_LISTENER = network_name

Default value

(ADDRESS = (PROTOCOL=TCP)(HOST=hostname)(PORT=1521)) where hostname is the network name of the local host.

Modifiable

ALTER SYSTEM

Basic

No

 

       LOCAL_LISTENER specifies a network name that resolves to an address or address list of Oracle Net local listeners (that is, listeners that are running on the same machine as this instance). The address or address list is specified in the TNSNAMES.ORA file or other address repository as configured for your system.

 

1.2  REMOTE_LISTENER

 

官网说明:

Property

Description

Parameter type

String

Syntax

REMOTE_LISTENER = network_name

Default value

There is no default value.

Modifiable

ALTER SYSTEM

Basic

Yes

 

       REMOTE_LISTENER specifies a network name that resolves to an address or address list of Oracle Net remote listeners (that is, listeners that are not running on the same machine as this instance). The address or address list is specified in the TNSNAMES.ORA file or other address repository as configured for your system.

 

 

 

二.  LOCAL_LISTENER 与动态注册

 

关于动态注册,参考我的Blog:

Oracle Listener 动态注册与 静态注册

 http://www.cndba.cn/Dave/article/1177

 

 动态注册是在instance启动的时候,PMON进程根据init.ora中的instance_name,service_names两个参数将实例和服务动态注册到listener中。

 
  注册到监听器中的实例值从init.ora文件中的instance_name参数取得。如果该参数没有设定值,那么它将取init.ora文件中的db_name的值。如果在RAC中配置,您必须将集群中每个实例的instance_name参数设置为一个唯一的值。

 注册到监听器中的服务值从init.ora文件中的参数service_names取得。如果该参数没有设定值,数据库将拼接init.ora文件中的 db_name和db_domain的值来注册自己。如果选择提供service_names值,您可以使用完全限定的名称(比如 orcl.oracle.com)或缩写的名称(比如orcl)。如果选择缩写的名称并设置了db_domain参数,注册到监听器中的服务将是 service_name值和db_domain值的拼接。

 

   这里要注意的是:动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),因为pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,如果需要向非默认监听注册,则需要配置local_listener参数。

 

   因此我们看到了LOCAL_LISTENER的作用。  监听的端口默认是1521,但是很多情况下,处于安装考虑,不会使用1521端口,因为在这种情况下使用动态注册就需要配置LOCAL_LISTENER参数。

 

   将监听的信息添加到tnsnames.ora  文件中。 因为pmon在动态注册监听时要从tnsnames.ora中读取相关信息。

 

LISTENER _RACDB1 =

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT =1522))

  )

 

 

然后以sys用戶修改local_listener参数:

SQL> alter system set local_listener= LISTENER _RACDB1;

也可以直接指定:

SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1522))';

 

  这样,在DB启动的时候,就会自动的把instence_name 和service_name注册到监听。 如果在这期间,监听重启了,监听里的信息也会丢失,这时就需要手动的把信息注册到监听:

SQL> alter system register;

 

 

三. LOCAL_LISTENER, REMOTE_LISTENER 与RAC CLIENT-SIDE TAF 和 LOAD BALCANING

 

3.1 参数说明

在Blog:

Oracle RAC Failover 详解

   http://www.cndba.cn/Dave/article/1192

           

中对RAC的Failover做了分类:Client-Side TAF 和 Server-side TAF.

Service-SideTAF是在服务器上配置的,Client-Side TAF是在客户端配置的。

 

  Client-Side TAF 是在客户端修改tnsnames.ora 文件来配置的,如果有很多客户端使用这个数据库,那么每次微笑调整都需要把所有的计算机更改一遍,既低效又容易出错。而Service-Side TAF 通过结合Service,在数据库里保存FAIL_MODE的配置,把所有的TAF配置保存在数据字典中,从而省去了客户端的配置工作,客户端的TNS文件就不需要任何TAF的配置选项了。

 

关于Server-side TAF 配置参考Blog:

 How To Configure Server Side Transparent Application Failover [ID 460982.1]

 http://blog.csdn.net/tianlesoftware/archive/2010/12/20/6086728.aspx

 

LOCAL_LISTENER 和 REMOTE_LISTENER 这2个参数就是配置Client-Side TAF的。

 

官网的配置参考:

 10g & 11g Configuration of TAF(Transparent Application Failover) and Load Balancing [ID 453293.1]

   http://blog.csdn.net/tianlesoftware/archive/2010/12/19/6085529.aspx

 

 

3.2  Client-Side TAF 配置

 

3.2.1主机信息如下

Node1:

Hostname: node1.idc.oracle.com 

VIP Hostname: node1-vip.idc.oracle.com 

Database Service_names: service.idc.oracle.com 

SID: sid1

 

Node2: 

Hostname: node2.idc.oracle.com  

VIP Hostname: node2-vip.idc.oracle.com  

Database Service_names: service.idc.oracle.com  

SID: sid2

 

3.2.2  Node1配置

 

(1)修改Listener.ora文件

LISTENER_NODE1=  

(DESCRIPTION =  

 (ADDRESS_LIST =  

  (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip.idc.oracle.com)(PORT = 1521)(IP=FIRST))   --私有IP

  (ADDRESS = (PROTOCOL = TCP)(HOST = node1.idc.oracle.com)(PORT = 1521)(IP=FIRST))     --public IP

 )  

 

(2)启动Listener

$ lsnrctl start LISTENER_NODE1

 

(3)修改Tnsnames.ora文件

NODE1_LOCAL=

 (ADDRESS = (PROTOCOL = TCP)(HOST=node1-vip.idc.oracle.com)(PORT = 1521))     

 

测试:

$ tnsping node1_local

 

(4)设置node1的local_listener参数

sql > alter system set LOCAL_LISTENER='node1_local' scope=both sid='sid1' ;

 

 

3.2.3  NODE2 配置

 

(1)修改Listener.ora文件

 

LISTENER_NODE2=   

(DESCRIPTION =  

 (ADDRESS_LIST =           

(ADDRESS=(PROTOCOL=TCP)(HOST=node2.idc.oracle.com)(PORT=1521)(IP=FIRST))  

(ADDRESS=(PROTOCOL=TCP)(HOST=node2-vip.idc.oracle.com)(PORT=1521)(IP=FIRST))  

 )  

)

 

(2)启动Listener

$ lsnrctl start LISTENER_NODE2

 

(3)修改Tnsnames.ora文件

NODE2_LOCAL= 

   (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip.idc.oracle.com)(PORT = 1521)) 

 

验证:

$ tnsping node2_local

 

 

(4)设置local_listener 参数

sql > alter system set LOCAL_LISTENER='node2_local' scope=both sid='sid2' ;

 

 

3.2.4 在node1和node2的 tnsnames.ora 文件添加如下内容

 

NODE_REMOTE =

(DESCRIPTION =  

 (ADDRESS_LIST =  

  (ADDRESS = (PROTOCOL = TCP)(HOST=node1-vip.idc.oracle.com)(PORT = 1521))  

  (ADDRESS = (PROTOCOL = TCP)(HOST=node2-vip.idc.oracle.com)(PORT = 1521))   

 )  

)

 

测试:

$ tnsping node_remote

 

3.2.5  在所有节点设置remote listener

sql> alter system set REMOTE_LISTENER='node_remote' scope=both;

 

 

3.2.6 在客户端设置的tnsnames.ora 设置TAF

RACTAF=

(DESCRIPTION = 

 (ADDRESS_LIST =

  (LOAD_BALANCE = yes) 

       (FAILOVER=ON)  -- 这个参数是默认值,可以不写

  (ADDRESS = (PROTOCOL = TCP)(HOST = node1-vip.idc.oracle.com)(PORT = 1521)) 

  (ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip.idc.oracle.com)(PORT = 1521)) 

 )

 (CONNECT_DATA = 

   (SERVICE_NAME = service.idc.oracle.com) 

   (failover_mode=(type=select)(method=basic)) 

    ) 

  )

 

  当客户端发出连接请求给Server端listener的时候,通过local_listener注册的服务接收这个连接请求,然后由master instance来决定这个连接请求应该由哪个目标instance发出server process响应这个连接请求。如果启用负载均衡,那么主节点会选择cpu负载最小的那个instance,此时:

  如果master分配的目标instance是local listener machine,那么直接通过local server listener,开启后台的server process,处理发出conn的客户端,建立连接,处理会话;

  如果master分配的目标instance不是local listener machine,那么会通过remote_listener这个参数,把连接请求转移到remote machine上的listener, 然后由remote service listener发出一个server process返回客户端,建立连接,处理会话.

 当conn建立连接以后,listener就没有用了,不会再用到了,如果这个时候,已经连接的那个instance down了,会重新由新分配的master instance通过remote_listener切换到可用instance,此时客户不会发现连接中断。conn 和 select操作是不会中断的。

 

  当实例1注册监听的时候,即使节点2的instance没有启动,也会通过remote_listener在节点2 server上注册相应的listener1. 它是在数据库启动的时候,添加到相应的listener service里的。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

local_listener 与 remote_listener 参数说明

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysqldump参数详细说明

参数说明--all-databases , -A导出全部数据库。mysqldump -uroot -p --all-databases--all-tablespaces , -Y导出全部表空间。mysqldump -uroot -p --all-dat

	mysqldump参数详细说明
2020-08-04

winexec()函数的参数说明(c++)

winexec()函数是在Windows下执行命令的一个函数,参数说明如下:1. lpCmdLine:指定要执行的命令行字符串。可以是一个可执行文件路径,也可以是一个批处理文件或其他命令行命令。该参数是一个C风格的字符串,需要以null字符
2023-09-02

keras.layers.Conv2D()函数参数用法及说明

这篇文章主要介绍了keras.layers.Conv2D()函数参数用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-21

Linux SHELL if命令参数说明

* -b 当file存在并且是块文件时返回真 * -c 当file存在并且是字符文件时返回真 * -d 当pathname存在并且是一个目录时返回真 * -e 当pathname指定的文件或目录存在时返回真 * -f 当file存在并且是正
2022-06-04

python mysql中in参数化说明

第一种:拼接字符串,可以解决问题,但是为了避免sql注入,不建议这样写 还是看看第二种:使用.format()函数,很多时候我都是使用这个函数来对sql参数化的 举个例子:select * from XX where id in (1,2,
2022-05-26

ThreadPoolExecutor参数的用法及说明

这篇文章主要介绍了ThreadPoolExecutor参数的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-14

SpringBoot请求参数传递与接收说明小结

这篇文章主要介绍了SpringBoot请求参数传递与接收,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-19

编程热搜

目录