Roby's profileblue_princePhotosBlogListsMore ![]() | Help |
|
November 26 RAC上收集所有节点AWR报告的脚本假如你管理着一个超过十个节点的RAC数据库,而当你查看数据库的AWR报告时,相信你会跟我一样非常头疼,必须一个个节点把各自节点的AWR报告都找出来,然后一个个节点进行查看对比。有没有这么一个脚本,能够将RAC数据库中所有节点的AWR报告整合起来只生成一份,然后我们要诊断RAC数据库的性能时只需要查看这么一份整合好的AWR报告,里面有非常清晰的RAC各节点数据库性能指标的数据排列在一起,可以方便地查看对比各个节点的性能指标差异。Oracle从11g开始提供了$ORACLE_HOME/rdbms/admin/spawrrac.sql这个脚本,就可以满足此需求,而且还可以向下兼容到10g使用,非常方便。 November 23 今天看到彭伟国了 上周到黄龙体育中心看中超浙江绿城的比赛,混入主席台所在的后台就座。当时本来是想看台离教练席近些,看看能不能看到彭伟国。毕竟这是自己最喜欢的国内球员,从94年开始迷上足球之后,国仔就一直是我最喜欢的国内球员,我一直认为他是中国足坛到目前为止脚法最好的球员。当年国仔和他所效力的广州太阳神队都是我所钟爱的,而现在当年太阳神的主教练周穗安和国仔都是浙江绿城执教,因此便想趁机会接近看一眼。
不想上周比赛后国仔倒是都没碰到,出门后居然碰到阎嵩在身边,当时想和他握个手,不过后面觉得无趣也就离开了。这星期浙江绿城最后一个主场对深圳上清饮,还是照例混入主席台看比赛,比赛本身倒是平平,浙江以2:3负于对手。比赛结束以后混入球员通道所在的大厅,等了好久没看到球员出来。于是准备回家,不想一大帮球迷冲着球队所在的大巴过去。于是我也跟着过去看了一下,后面看到阎嵩他们走了过来,让同事帮着给我和阎嵩拍张照片,同事不会用我的相机,结果合影没拍成。大巴离开后我们便冲着过去,这时候同事说那不是彭伟国吗。于是我紧跟着跑进去,找到彭伟国提出合影的要求,我说我可是你十几年的老球迷了。国仔因为球队输球之后兴致不是很高,不过还是很配合地合影,结果比较晕的就是同事接连按了几下快门后还是没拍成我们的合影,我们看到国仔有些不耐烦也就说拍好了,然后跟着国仔从球员通道离开体育场。后面在外面等着的时候顺便和周穗安以及外援奥托拍了两张合影,他们都很配合。快离开的时候看到国仔开着他的BMW735,车牌很牛X,粵A*6666。
虽然说合影没拍成有些遗憾,不过还是挺高兴能够和当年的偶像能够如此地接近。想想时间如流水,14年就这样过去了。当年我还是一个啥都不知道的毛孩子,因为我堂哥满屋子的《足球》报而迷上了足球,继而喜欢上巴乔和彭伟国,更想不到的是居然能够14年后在杭州相继看到他们真人。这在以前这都是那么遥远的事情,只能在电视上看到他们拼搏的身影。可惜他们如今都退役了,而我对足球的喜爱也随着年岁渐长而日渐消逝。再见了,我的偶像们……
November 12 RAC中的跨节点并行在RAC中,我们可以通过设置跨节点并行,将并行操作分布到RAC中的不同节点同时进行,以便发挥整个RAC环境的最大运算能力。在RAC中设置跨节点并行主要是通过设置parallel_instance_group和instance_groups这两个参数进行的。 instance_groups这个参数主要是设置该节点实例是否属于某一个实例组,这个实例组的命名可以根据你的需要随便命名,而没有严格的限制。每个节点可以设置多个不同的实例组名,实例组名用逗号隔开,比如:instance_groups=crm,erp,oltp。这样只要其他节点的instance_groups参数中有设置成一个一样的名字,就表示这个节点也属于这个实例组。比如在一个4节点RAC的环境中,A节点的instance_groups设置为(crm,erp,oltp),B节点设置为(crm,oltp),C节点设置为(crm,erp),D节点设置为(crm,erp,oltp),那么就有A、B、C、D这4个节点共同组成crm这个实例组,A、C、D这3个节点组成erp这个实例组,A、B、D这3个节点组成oltp这个实例组。 parallel_instance_group设置的值为instance_groups里面设置的值,表明这个节点上面进行的并行操作可以跨越哪些实例组。回到上面的例子,假如A节点的parallel_instance_group设置为crm,由于crm这个实例组的成员是A、B、C、D四个节点都有,那么A节点上的并行操作就可以跨越所有的4个节点。如果A节点的parallel_instance_group设置为erp,那么A节点并行操作就可以跨越A、C、D这3个节点。如果一个节点的parallel_instance_group设置的参数在instance_groups中没有设置,那么这个节点的并行操作将只会在本节点进行,假如B节点的parallel_instance_group设置为erp,那么它上面的并行操作将不会跨节点进行。 默认情况下这两个参数都为空,那么并行操作默认将会是跨节点并行的。当然并不是设置了这两个值就一定会发生跨节点并行,是由优化器和RAC的负载均衡机制共同决定一个并行操作是否跨节点并行,需要跨越实例组中的哪几个节点并行还是实例组的所有节点并行,每个节点分配多少个并行进程工作。由于跨节点并行还有内部互联通信的开销,因此并不一定就会比单节点并行会快多少,只有那些很大的并行操作可能才需要到跨节点并行。这个可以根据测试再进行变更。在我们运行的实际案例中,由于跨节点并行的机制比较复杂,有时候会触发一些BUG,甚至并行度为DEFAULT的表在进行跨节点并行DML时一个并行进程死掉导致整个节点宕机。推荐的做法是系统级别的parallel_instance_group这个参数不要设置,不同的程序在部署之前做好测试工作,看是否需要跨节点并行。由于parallel_instance_group是可以在会话级别设置的,可以修改一些需要跨节点并行的程序在执行之前先执行alter session set parallel_instance_group=……一下,然后只限制这些程序跨节点并行。 November 05 RAC的负载均衡RAC的负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作。在RAC中,负载均衡分为两种,一种是基于客户端连接的,另外一种是基于服务器端的。
这样当客户端连接RAC数据库时,会随机在TNS里面挑个监听地址进行连接。在Oracle10g以前,假如有节点宕机或者类似事故时,客户端可能还是选择连接到这个节点,这样会发生较长时间的TCP等待超时。而在10g以后,由于VIP和FAN的引入,这样的情况可以得到很大程度的改善。客户端的负载均衡在通常情况下能够较好地工作,但是由于连接是在客户端随机发起的,这样客户端并不知道RAC各节点的负荷及连接数情况,有可能负荷大的节点还会源源不断地增加新的连接,导致RAC节点无法均衡工作。
这样服务器端的LOAD BALANCE便配置完成。
另外可以额外设置连接的负载均衡:
|
|
|