zhuqibs
作者zhuqibs·2020-04-30 19:50
软件开发工程师·Adidas

Oracle RAC -- LB

字数 2465阅读 587评论 0赞 2

!/bin/sh

count=0
while [ $count -lt $2 ]
do
count='expr $count +1'
sqlplus -s willson/willsonm@$1 @test.sql
sleep 1
done

set linesize 160
col host_name for a15
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select instance_number,instance_name ,host_name,status, startup_time from v$instance;

sword =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hack1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack2-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack3-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = hack4-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sword.db.alibaba.com)
(FAILOVER_MODE =
(TYPE = SESSION)
(METHOD = BASIC)
)
)
)

top2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rx8640-1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rx8640-2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(FAILOVER = ON)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = topprod)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)

SELECT INST_ID, COUNT(*) FROM GV$SESSION GROUP BY INST_ID;

select * from v$session where machine='WORKGROUP\WILLSON-PC'

select sid,failover_type,failover_method from v$session where username='SYS';
select * from v$instance

select * from gv$session_wait

select name,failover_method,failover_type,goal,clb_goal from dba_services;
当某个实例的监听收到客户端连接请求,将会统筹考虑RAC环境中各个节点的负载情况,然后将该连接传递到具有最小负载的节点的最小负载实例上。

在10gR2版本之后,节点和实例的负载计算通过lbscore来完成,而lbscore则由两个动态值决定:”goodness” 和 “delta”,这两个值均由PMON来定期更新,计算公式如下:
Lbscore = Goodness (Received from PMON update)
Delta = New Delta (Received from PMON update)
在PMON定期更新的间隔,如果有新连接进入,那么lbscore的计算公式是:
Lbscore = Lbscore(previous) + Listener Delta

可以通过添加监听的trace(TRACE_LEVEL_LISTENER = 16)来获取lbscore的产生情况,更详细的文档请参看Metalink Note: 263599.1。

关于Failover,多说一句,其实Failover也有两种,一种是Connect Time Failover,由客户端TNS配置的(failover=on)参数控制,另外一种是TAF,由客户端TNS配置中的failover_mode参数控制。

Service1 =
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=192.168.1.162)
(PORT=1522))
(CONNECT_DATA=
(SERVICE_NAME=VPROD)
(INSTANCE_NAME=VPROD1)
(FAILOVER_MODE=
(BACKUP=Service2)
(TYPE=select)
(METHOD=basic))))

Service2 =
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=tcp)
(HOST=192.168.1.164)
(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=VPROD)
(INSTANCE_NAME=VPROD2)
(FAILOVER_MODE=
(BACKUP=Service2)
(TYPE=select)
(METHOD=basic))))

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广