本帖最后由 好好吃的面包 于 2014-7-16 15:17 编辑
Load Balance
Load Balance是把负载平均的分配到集群中的各个节点,从而提高整体的吞吐能力。
Oracle 10g RAC提供了两种手段来实现分散负载:
一.Connection Balancing
按照某种算法,把用户分配到不同的节点。
二.Service
在应用层面上进行分散。
一.Connection Balancing
Connection Balancing这种负载均衡是在用户连接层次进行的,也就是用户请求建立连接时,根据每个节点的负载决定把连接分配到哪个实例上。一旦连接建立之后,会话的所有的操作就都在这个实例上完成,而不会再分派到其它实例上。
Connection Balancing有客户端和服务器端两种实现方法:
1.客户端均衡(Client-Side LB)
客户端均衡是Oracle 8使用的方法,配置方法是在客户端的tnsnames.ora文件中加入LOAD_BALANCE=YES条目。
当客户端发起连接时,会从地址列表中随机选取一个,再使用随机算法把连接请求分散到各个实例。
这个方法的缺点很明显,就是在分配连接时没有考虑每个节点的真实负载,最后分配的结果不一定是均衡的。并且随机算法需要长时间片,如果在短时间内同时发起过个连接,这些连接可能都被分配到一个节点上。甚至更坏的情况是,连接可能被分配到故障节点上。
2.服务器端均衡(Server-Side LB)
服务器端负载均衡的实现依赖于Listener收集的负载信息。
在数据库运行过程中,PMON后台进