4 Nodes Oracle10g RAC on Linux x86-64

用时两天给客户安装完了4节点的Oracle10g RAC on Linux x86-64,使用了OCFS2存储数据文件以及ocr和voting disk。概括一下碰到的问题。 1. 基本上完全按照Oracle官方安装文档,但是其中kernel.shmall内核参数的设置,如果按照默认值2097152的话,最多只能使用到8G内存,当配置SGA过高的时候,就会在启动实例的时候报错。 SQL> startup nomount ORA-27102: out of memory Linux-x86_64 Error: 28: No space left on device 需要将此参数值修改为shmmax/PAGE_SIZE值(通过getconf PAGE_SIZE获取),在此次实施中,客户机器为64G内存,PAGE_SIZE = 4096,因此应该设置kernel.shmall = 16475728。 2. 在安装CRS之前文档中要求运行rootpre.sh,但是却会报“No OraCM running”这样的错误。按照Metalink Note: 405986.1,这个错误可以忽略。 3. 安装CRS最后运行root.sh的时候,报错: PROT-1: Failed to initialize ocrconfig Failed to upgrade Oracle Cluster Registry configuration 重新mount OCFS2文件系统之后,再次运行root.sh,故障消失。 umount /u02/oradata/system mount -L…

About SCN propagation in Oracle RAC

关于昨天被客户问到Oracle RAC在节点间的同步问题,今天稍微整理一下。 由于Oracle RAC多节点共用一份数据库Datafile,因此在磁盘存储方面不存在同步问题。那么实际上所谓各节点同步指的是每个节点间SGA的同步,更专业一些的术语其实就是SCN propagation的算法。 在Oracle9i和Oracle10gR1中,SCN propagation默认使用Lamport方案,受到初始化参数MAX_COMMIT_PROPAGATION_DELAY影响,默认的同步间隔是7秒,也就是在极限情况下,一个节点上的更新在7秒后另外的节点才能知道。将该参数值设置为0,则表示要求任何一个事务在commit之后就立刻通知其他节点SCN变更了,这种方式就被称为BOC(Broadcast On Commit)。 在Oracle10gR2和Oracle11g中,BOC被作为了SCN propagation的默认方案,初始化参数MAX_COMMIT_PROPAGATION_DELAY被废弃,转换成了隐含参数_IMMEDIATE_COMMIT_PROPAGATION,默认值为TRUE。 SQL> @hidden Enter value for par: propagation old 14: x.ksppinm like ‘%_&par%’ new 14: x.ksppinm like ‘%_propagation%’ NAME VALUE ISDEFAULT ISMOD ISADJ —————————————- ————————- ——— ———- —– _evt_system_event_propagation TRUE TRUE FALSE FALSE _immediate_commit_propagation TRUE TRUE FALSE FALSE max_commit_propagation_delay 0 TRUE FALSE FALSE 在Oracle11g RAC中,BOC有了更进一步的改善。包括:…

ORA-00064 When Oracle Database Instance Startup

根据Metalink Bug 5455094的解释,在Oracle9iR2 RAC环境中,如果db_cache_size + db_keep_cache_size总共超过了50G,那么数据库实例就会在启动的时候报ORA-00064错误,无法正常启动。 00064, 00000, “object is too large to allocate on this O/S (%s,%s)” // *Cause: An initialization parameter was set to a value that required // allocating more contiguous space than can be allocated on this // operating system. Metalink上的建议是: 1. 降低cache size(这是一个很扯淡的建议,直接无视) 2. 设置_ksmg_granule_size到一个比较大的值,比如_ksmg_granule_size=67108864,实测结果当设置该参数之后,数据库性能低下,反应缓慢。 客户的这个环境,数据库SGA设置高达200G,以上两种方法都不能使用,却可以通过土办法来曲线救国。 1. 设置SGA_MAX_SIZE = 200G,这个参数不会触发Bug…