RAC Object Remastering (Dynamic Remastering)

原文作者:Riyaj Shamsudeen 原文链接:http://orainternals.wordpress.com/2010/03/25/rac-object-remastering-dynamic-remastering/ 译者注:如果您对本文章有兴趣,请一定先去阅读Riyaj的原文,在万不得已时可以使用这篇译文校对一下自己的理解。译文中的master, mastering, remastering, affinity lock都翻译的不满意,甚至有些词左思右想还是保留了原文。IT技术从业者应该以英文为母语。 感谢Yong Huang,从跟他的邮件往来中得到了很多帮助。 ***********以下为译文全文***********。 RAC Object Remastering (Dynamic Remastering) by Riyaj Shamsudeen 在RAC环境中,每个数据块都被一个实例所掌控(mastered)。掌控一个数据块意思是主实例(master instance)始终监控这个数据块的状态,直到下一次重配置事件发生(因为实例重启或者其它原因)。 Hash to the master 这些数据库是根据数据块范围来掌控的。举例来说,数据块范围从file 10,block 1开始到block 128可能是被实例1所掌控,而从file 10,block 129到block 256是被实例2所掌控。当然,在不同的版本10g,11g中都有所不同,只是中心思想都是将数据块均衡地分布在不同实例上由此Global Cache grants可以在各实例间平衡分布。有趣的是,从10g以后版本数据块范围的长度是128(Julian Dyke提到在9i中是1089,但是我个人还没有测试过)。技术支持推荐取消db_file_multiblock_read_count初始化参数的设置这样将会自动调整到128,我猜这意味着通过较少的GC消息就可以进行完整的多块读。走题了。 更深入的,Michael Möller指出这种哈希算法有进一步优化:当通过数据块地址(DBA)初次计算主节点时使用到哈希算法,生成一个“虚拟属主”,然后在通过一个查询表(长度是最大允许的节点数,128?)再转化为真实(在线且打开的)属主。这意味着当有一个节点关闭或者启动的时候,RAC不需要为所有数据块再次计算哈希值,而只需要分发新的Hash-to-node表。(这张表在节点发生变化时也同样需要重新分发) 以下SQL有助于显示数据块的属主(master)和拥有者(owner)。这个SQL结合了x$kjbl和x$le表来获得资源名称。如果你对于Oracle锁机制比较熟悉,你可能认识这些缓存融合(cache fusion)锁(以前的PCM锁)的结构。在这里锁类型是BL,id1是block#,id2是file_id。列kjblname2显示的是锁资源的十进制数字格式。 请注意下面的输出: 1. 数据块范围:File 1, block 6360-6376为node 3所掌控同时也属于node 3 2. 数据块范围:File 1,一直到10709数据块为实例0所掌控,属于实例3 3. 从10770开始的下一个数据块范围为实例2所掌控并且属于实例3 还请注意这些输出是从一个还没有remastering操作的数据库中获得的。 REM kjblname2列逗号前第一部分是数据块,第二部分file_id*65536是BL…

Slide of Load Balancing & Failover

这次在2010数据库技术大会上的演讲主题是 – RAC环境中的负载均衡和失效接管。基本上是概念性的东西,自然在演讲过程中也或多或少分享了自己的实践经验。 周六的早上9点开始,第一场演讲就能有这么多喜爱技术的人来捧场,实在是让人感动。几乎要为自己挣扎数次才起床的举动而感到羞愧。 有兴趣的朋友可以在Slideshare上查看这次演讲的ppt。 DTCC Rac Load Balancing Failover View more presentations from kamusis.

Issues when Add Nodes into RAC 10g

近期在客户处将原先的4节点RAC扩充到8节点。期间碰到一些问题,总结一下。 系统环境: Redhat Enterprise Server 4,Oracle RAC 10.2.0.4,OCFS2 一。现象: 往CRS中添加节点时运行rootaddnode.sh会报PRKC-1044错误。 PRKC-1044 – FAILED TO CHECK REMOTE COMMAND EXECUTION 原因: 在配置ssh对等性的时候,设置的passphrase非空。 解决方法: 重新配置ssh对等性,在Enter passphrase (empty for no passphrase): 时直接回车,不要输入任何密码。 二。现象: 在使用dbca往RAC中添加新节点时报TNS-04602错误。 TNS-04414: File Error caused by: TNS-04602: Invalid syntax error: Expected “LITERAL” before or at… 原因: 数据库中没有设置remote_listener参数。 解决方法: [sourcecode language=”sql” light=”true”]alter system set remote_listener=’LISTENERS_RAC’ scope=both;[/sourcecode] 三。总结…