1.
1、从客户端建立连接
2.
oracle@SZDB:~> more load_balance.sh
3.
#!/bin/bash
4.
for i in {1..1000}
5.
do
6.
echo $i
7.
sqlplus -S system/oracle@GOBO4 <
8.
select instance_name from v\$instance;
9.
EOF
10.
sleep 1
11.
done
12.
exit 0
13.
oracle@SZDB:~> ./load_balance.sh >srv_load_bal.log
14.
15.
2、分析监听日志
16.
oracle@bo2dbp:/u01/oracle/db/network/log> more listener_bo2dbp.log
17.
12-OCT-2012 12:00:10 * service_update * GOBO4B * 0   #节点bo2dbs上的实例GOBO4B的更新到bo2dbp上监听器的更新信息
18.
12-OCT-2012 12:00:35 * service_update * GOBO4B * 0
19.
12-OCT-2012 12:01:04 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
20.
(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=50322)) * establish * GOBO4 * 0
21.
12-OCT-2012 12:01:05 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
22.
(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=50325)) * establish * GOBO4 * 0
23.
12-OCT-2012 12:01:07 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
24.
(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=50328)) * establish * GOBO4 * 0
25.
12-OCT-2012 12:01:08 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
26.
(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=50330)) * establish * GOBO4 * 0
27.
28.
#上面的日志片断中可以看出全部是客户端发起的到bo2dbp节点上的建立连接的信息
29.
30.
#下面来查看bo2dbs上的监听日志
31.
oracle@bo2dbs:/u01/oracle/db/network/log> more listener_bo2dbs.log
32.
12-OCT-2012 12:00:10 * service_update * GOBO4B * 0
33.
12-OCT-2012 12:00:10 * service_update * GOBO4B * 0
34.
12-OCT-2012 12:00:14 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=bo2dbs)(USER=oracle))(COMMAND=status)(ARGUMENTS=64)
35.
(SERVICE=LISTENER_BO2DBS)(VERSION=169870080)) * status * 0
36.
12-OCT-2012 12:00:35 * service_update * GOBO4B * 0
37.
12-OCT-2012 12:00:35 * service_update * GOBO4B * 0
38.
12-OCT-2012 12:01:04 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
39.
(USER=oracle))(INSTANCE_NAME=GOBO4B)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=61862)) * establish * GOBO4 * 0
40.
12-OCT-2012 12:01:07 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
41.
(USER=oracle))(INSTANCE_NAME=GOBO4B)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=61868)) * establish * GOBO4 * 0
42.
12-OCT-2012 12:01:09 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=GOBO4)(CID=(PROGRAM=sqlplus@SZDB)(HOST=SZDB)
43.
(USER=oracle))(INSTANCE_NAME=GOBO4B)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.7.2)(PORT=61872)) * establish * GOBO4 * 0
44.
45.
#在12-OCT-2012 12:01:04时刻,连接信息中有INSTANCE_NAME=GOBO4B的连接信息,而节点bo2dbp上也有一条类似的信息,因此该条连接
46.
#日志是由节点bo2dbp转发过来而建立的连接请求。
47.
#同样在12-OCT-2012 12:01:07时刻,节点bo2dbp转发过来而建立的连接请求。
48.
49.
#小结一下,
50.
#对于直接连接,监听器日志中将出现establish,且不含有INSTANCE_NAME=GOBO4B 字样
51.
#而对于转发的连接,则转发节点与接收的节点同时存在连接信息,转发节点上存在连接信息的与普通的连接请求一样,
52.
#而接收的节点上存在INSTANCE_NAME= 信息
53.
54.
3、检查负载均衡结果
55.
oracle@SZDB:~> grep GOBO4A srv_load_bal.log |wc -l
56.
755
57.
oracle@SZDB:~> grep GOBO4B srv_load_bal.log |wc -l
58.
245
59.
#从上面的日志文件中可知总共有755个客户端连接到了gobo4a,有245各客户端连接到了gobo4b
60.
61.
#下面查看监听器日志来获得连接信息
62.
#下面的查询中在节点bo2dbp上总共有接受了1000个用户连接
63.
oracle@bo2dbp:/u01/oracle/db/network/log> grep establish listener_bo2dbp.log |wc -l
64.
1000
65.
66.
#下面的查询查看是否有从节点bo2dbs转发过来的连接,结果为0,说明没有任何连接请求从bo2dbs转发过来
67.
oracle@bo2dbp:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbp.log |wc -l
68.
0
69.
70.
#接下来查看节点bo2dbs的监听日志,可以看出总共接受了245个连接请求
71.
oracle@bo2dbs:/u01/oracle/db/network/log> grep establish listener_bo2dbs.log |wc -l
72.
245
73.
74.
#下面的过滤情况也表明在节点bo2dbs上的连接是从bo2dbp上转发的连接,而非客户端直接到bo2dbs的请求连接
75.
oracle@bo2dbs:/u01/oracle/db/network/log> grep INSTANCE_NAME=GOBO4 listener_bo2dbs.log |wc -l
76.
245
77.
78.
#从监听器的日志检查可以,测试中的连接全部请求到节点bo2dbp,是由于tnsnames.ora中ADDRESS的第一个IP地址就是bo2dbp的IP
79.
#因此所有的连接都是请求到bo2dbp,而没有客户端发出到bo2dbs的连接请求
80.
#其次是尽管在bo2dbp有1000个连接请求,而真正建立连接的只有755个,有245转发到了节点bo2dbs