oracle重启rac2监听,RAC监听服务
一. 服务器端均衡(Server-Side
LB)工作原理:
1.该均衡实现是依赖于Listener收集的负载信息。在数据库运行过程中,PMON后台进程会收集数系统的负载信息,然后登记到Listener中。
2.PMON进程不仅会向本地的Listener注册,也会想其他节点上的Listener注册,但到底向何处注册,是由Remote_Listeners和Local_Listener这两个参数决定。Local_Listener不用设置,而Remote_Listeners需要设置,参数值有一个tnsnames项。
3.当收到客户端连接请求时,就会把连接转给负载最小的节点,这个节点可能是自己,也可能是其他节点,也就是Listener会转发客户端的连接请求。
配置方法:
SQL> show parameter listener;
NAME TYPE
VALUE
------------------------------------ -----------
------------------------------
local_listener string
remote_listener string LISTENERS_DEVDB
tnsnames.ora
LISTENERS_DEVDB =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT =
1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT =
1521))
)
listener.ora(除掉SID_LIST_LISTENER_NAME项)
LISTENER_RAC1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT =
1521)(IP = FIRST))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT =
1521)(IP = FIRST))
)
)
二. LOCAL_LISTENER 与动态注册
关于动态注册,参考我的Blog:
Oracle Listener 动态注册 与 静态注册
动态注册是在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 详解
中对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]
LOCAL_LISTENER 和 REMOTE_LISTENER 这2个参数就是配置Client-Side TAF的。
官网的配置参考:
10g & 11g Configuration of TAF(Transparent Application
Failover) and Load Balancing [ID 453293.1]
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里的。
oracle重启rac2监听,RAC监听服务相关推荐
- oracle没有注册mdsdora,oracle rac一个节点服务注册不上,必须重启监听才能注册上,各位大神帮忙看一下...
环境是windows 2008 + oracle 11.2.0.4 rac其中rac1节点服务总是注册不上,rac2节点正常 --1.查看监听状态 C:\Users\Administrator> ...
- Comnnect oracle,RAC监听日志与CRS日志
RAC监听日志:tnsname.ora CRS日志: 位置:Oracle集群涉及的日志主要位于"$ORA_CRS_HOME/log"和"$ORACLE_HOME/log& ...
- oracle rac 通信端口,修改oracle 10g rac监听端口号为1523的步骤
修改oracle 10g rac监听端口号为1523的步骤 一. 修改listener.ora ,将其中的1521改为1523.事先做该文件的备份,以便快速复原 二. 修改tnsnames.ora ...
- 连接linux数据库Oracle时报错ORA-12541: TNS: 无监听程序重启后提示出现ORA-01034和ORA-27101
1 windows上安装Oracle的客户端. 2 确保linux服务器上的1521端口开放 3 看你的window机器是够能够ping同linux服务器的ip地址 4 在windows中的Oracl ...
- oracle 静态监听 端口,侦听动态注册静态注册local_listener参数端口PORT
之前都是网上看过整理的,今天看到local_listener竟然一点印象都没有,太恐怖,索性再好好整理一下,避免再次忘记. 一.什么是注册 注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道 ...
- Oracle Net Configuration(监听程序和网络服务配置)
1.在Oracle服务端和客户端都安装完之后,就需要配置监听程序和本地网络服务,以便外部程序和工具的访问,所以Oracle提供了两款自带的工具来配置它们分别是 Net Configuration.Ne ...
- oracle数据库连接时报12514_连接Oracle数据库时报ORA-12541:TNS:无监听程序的图文解决教程...
在用PL/SQL Developer等客户端工具连接oracle服务器时出现ORA-12541:TNS:无监听程序的错误,如下图: 发现原来是oracle的监听没有启动,重启监听后就连接成功了,下面跟 ...
- linux查询数据库oracle端口,Oracle数据库常用命令、Linux监听配置、oracle linux下开放1521端口...
Oracle数据库常用命令.Linux监听配置.oracle linux下开放1521端口 时间:2020-02-14 来源: 一.Linux下Oracle数据库常用命令 oracle用户下执行: $ ...
- Oracle11g rac监听,Oracle11gRAC监听程序offline
Oracle 11g RAC 监听程序在调整过网络后出现监听进程offline,而且两台节点之间频繁切换,查看日志/var/log/message 发现有频繁的 Oracle 11g RAC 监听程序 ...
- 新装oracle如何启动服务,Oracle数据库新装之后出现的监听程序无法正常启动和运行(Oracle-12514)问题...
修改安装目录下的配置文件 比如:F:\app\admin-PC\product\11.2.0\dbhome_1\network\admin\ 修改这个目录下的listener.ora和tnsnames ...
最新文章
- ExtJS 4.2 第一个程序
- 1.11 抽象(abstract)类
- ubuntu apache配置负载均衡篇(二)
- php调用视频功能,phpcms如何调用视频?
- shell-script(command groups)
- SQL大赛——5X5方格棋盘难题
- Gradle学习总结——抓重点学Gradle
- java中的基本算法
- 《CSS世界》(张鑫旭)pdf
- php网页代码字体大小,HTML网页字体大小的设置
- python计算直角三角形斜边上的中线_直角三角形斜边上的中线等于斜边的一半教学设计...
- 杂谈(1)--人生必知的78种经典效应
- windows安全事件查看及安全事件id汇总
- 拍摄的风景视频中,如何快速有效地去除视频中的杂物?
- 如何运营好微信公众号
- Android下的单元测试
- char[4]转int或int转char
- 计算机学科评估排名2020,2020哲学学科评估排名结果出炉及评估结果
- 先序遍历的顺序建立二叉链表
- 董藩:北京房价可以涨到每平米80万===如此高论,岂不保存下来,且待25年后再看...