详解Oracle RAC入门和提高

数据库 Oracle
对于Oracle Real Application Server,真正应用集群,简称Oracle RAC大家并不陌生,本文将为大家做一次Oracle RAC入门和提高的课程。

本文将详细讲述Oracle RAC入门和提高,希望对广大Oracle数据库管理人员以及致力于学习Oracle数据库的管理人有所帮助。

Oracle RAC 产品概述

Oracle Real Application Server,真正应用集群,简称Oracle RAC ,是Oracle的并行集群,位于不同服务器系统的Oracle实例同时访问同一个Oracle数据库,节点之间通过私有网络进行通信,所有的控制文件、联机日志和数据文件存放在共享的设备上,能够被集群中的所有节点同时读写。其系统架构如下图:
 

系统架构
 

RAC提供的好处包括:

(1)多节点负载均衡;

(2)提供高可用:故障容错和无缝切换功能,将硬件和软件错误造成的影响最小化,下表是RAC与传统的双机热备方式切换时间的对比:

多节点均衡

(3)通过并行执行技术提高事务响应时间----通常用于数据分析系统;

(4)通过横向扩展提高每秒交易数和连接数 ;----通常对于联机事务系统;

(5)节约硬件成本,可以用多个廉价PC服务器代替昂贵的小型机或大型机,同时节约相应维护成本;

(6)可扩展性好,可以方便添加删除节点,扩展硬件资源;

RAC的缺点有:

相对单机,管理更复杂,要求更高;

在系统规划设计较差时性能甚至不如单节点;

可能会增加软件成本(如果使用高配置的pc服务器,Oracle一般按照CPU个数收费)

在Oracle9i之前,RAC的名称是OPS (Oracle parallel Server)。RAC 与 OPS 之间的一个较大区别是,RAC采用了Cache Fusion(高速缓存合并)技术。在 OPS 中,节点间的数据请求需要先将数据写入磁盘,然后发出请求的节点才可以读取该数据。使用Cache fusion时,RAC的各个节点的数据缓冲区通过高速、低延迟的内部网络进行数据块的传输。

Oracle RAC在中国各行各业使用都比较广泛,包括通信移动、金融服务、社会保障和电子商务等,据Oracle统计,2007财年中国有500多家企业使用Oracle实时应用集群,考虑到未登记信息,实际数字更高于这一数字。典型的用户包括:中彩在线/OLTP/4节点/10gR2/AIX5.3、淘宝/DataWarehouse/4节点/10gR2/RHEL4、北京社保/6节点 /HP_Alpha/ MA8000、建行证券系统/2节点/IBM_P595/EMC_DMX3、上海电力/2节点/Alpha_GS160、广东移动、山东网通等。

#p#

Oracle RAC/Clusterware的结构和组件

一、RAC主要组件, 软硬件两部分

(1) 服务器 >= 2

(2) 操作系统,推荐使用Oracle认证的系统;版本不要太老,也不要太新

(3) CPU/内存 根据业务需要,内存至少1G

(4) 本地磁盘空间,>=30G

(5) 网卡 >=2 ,推荐4个以上千兆网卡

(6) 私有以太网络,推荐千兆交换机以上

(7) HBA卡 ,如果是SAN,推荐2个冗余HBA

(8) 共享存储设备,推荐SAN设备

(9) 存储管理, ASM/Cluster LV/裸分区/CFS,不推荐用OCFS,卷管理软件、多路径软件等

(10) 第三方集群软件: 可选

(11) Oracle Clusterware 软件

(12) Oracle RDBMS 软件

二、Clusterware主要进程

(1)crsd: 负责管理集群的高可用操作。管理的crs资源包括数据库、实例、监听、虚拟IP,ons,gds或者其他,操作包括启动、关闭、监控及故障切换。改进程由root用户管理和启动。crsd如果有故障会导致系统重启。

(2)cssd,管理各节点的关系,用于节点间通信,节点在加入或离开集群时通知集群。该进程由oracle用户运行管理。发生故障时cssd也会自动重启系统。

(3)oprocd – 集群进程管理 —Process monitor for the cluster. 用于保护共享数据IO fencing。

仅在没有使用vendor的集群软件状态下运行

(4)evmd :事件检测进程,由oracle用户运行管理

三、Clusterware使用的共享设备

(1) Oracle Cluster Registry(OCR):记录集群的配置信息;

(2) Voting disk : 即投票盘,保存节点的成员信息,当配置多个投票盘的时候个数必须为奇数,每个节点必须同时能够连接半数以上的投票盘才能够存活;

四、安装路径的选择

安装路径的选择

注:

(1)在Oracle RAC中,软件不建议安装在共享文件系统上;包括CRS_HOME和ORACLE_HOME,尤其是CRS软件,推荐安装在本地文件系统中,这样在进行软件升级,以及安装patch和patchset的时候可以使用滚动升级(rolling upgrade)的方式,减少计划当机时间。另外如果软件安装在共享文件系统也会增加单一故障点。

(2)如果使用ASM存储,需要为asm单独安装ORACLE软件,独立的ORACLE_HOME,易于管理和维护,比如当遇到asm的bug需要安装补丁时,就不会影响RDBMS文件和软件。

(3)在Oracle 11gR2中将新增存储选项:acfs (Oracle ASM Cluster File System)

第三方集群

在Oracle9i中,除了Windows和Linux,在安装RAC之前必须先安装vendor clusterware,即第三方集群,包括IBM的HACMP, HP的ServiceGuard for oracle RAC, Sun cluster,Veritas SFRAC等,这一类的集群软件为Oracle RAC提供了下面的功能:

(1)共享的逻辑卷管理或者集群文件系统用于存放数据文件;

(2)提供了统一的集群的成员组管理;

(3)使用更健壮的SCSI-3 PGR机制来防止心跳故障(即裂脑split brain)导致的数据损坏,这种功能一般叫做IO fencing;

(4)提供效率更高的、更低延迟的心跳网络用于cache fusion,可以相对减少TCP/IP的开销,包括:

HP SGeRAC: HMP (Hyper Messaging Protocol),

Sun Cluster: RSM (Remote Shared Memory),

Veritas SFRAC: LLT (low-latency transport),

Compac True Cluster: RDG (reliable data grams);

通常如果要使用第三方集群的心跳协议,需要将$ORACLE_HOME/lib/libskgxpX.so文件替换为第三方集群

软件提供的libskgxpX.so文件(其中X代表Oracle版本号9/10/11),skgxp 是System Kernel Generic Interface Inter-Process Communications的缩写,是oracle开放的一个应用接口,用于传输GCS和GES 的数据。Oracle自带的libskgxp文件定义的传输协议是UDP/IP。

5)提供扩展的容灾方案,例如campus cluster/metro cluster/extended RAC;如下图, 以Veritas的SFRAC为例,它提供两种Oracle Extended RAC方案,方案一是使用Veritas Volume Manager对底层阵列进行镜像,提供同城容灾级别的实时数据保护;方案二使用GCO/VVR对数据库进行数据复制,可以实现距离更远、超过10km广域网的容灾;

阵列

(6)Veritas SFRAC 还提供了以下特性:

补充的Oracle ODM,可以使Oracle同时拥有文件系统的易管理和裸设备的性能;

标准的多路径软件(DMP),不需要再安装其他软件就可支持绝大多数磁盘阵列,在异构SAN环境中有更好的兼容性;

从Oracle10g起,Oracle提供了自己的集群软件,叫Oracle clusterware简称CRS,这个软件是安装oracle rac的前提,而上述第三方集群则成了安装的可选项。同时提供了另外一个新特性叫做ASM,可以用于RAC下的共享磁盘设备的管理,还实现了数据文件的条带化和镜像,以提高性能和安全性 (S.A.M.E: stripe and mirror everything ) ,不再依赖第三方存储软件来搭建RAC系统。

那么Oracle是如何识别第三方集群的呢?

在安装完第三方集群后,会在特定目录下生成Oracle RAC接口文件,这个文件的作用就是上面的第二点功能:集群成员管理信息(cluster membership 简称CM)。在HPUX下该文件是/opt/nmapi/nmapi2/lib/pa20_64,在AIX/Solaris/Linux下这个文件是 /opt/ORCLcluster/lib/libskgxn2.so 。

当安装CRS的的检查阶段,就会检测是否有该文件,如果有的话,在安装CRS过程中生成一个软连接文件,文件名是ligskgxn2.so,指向上面的libskgxn2.so或pa20_64文件,这个软连接的位置在CRS_HOME/lib/目录;如果没有第三方集群,那么CRS安装过程中生成自己的libskgxn2.so文件。换句话说,在有第三方集群存在的情况下,CRS的集群成员信息是来自于第三方集群,两套集群的成员信息保持一致和同步;没有第三方集群情况时,CRS自己管理成员信息。

通过查询$CRS_HOME/log/hostname/cssd/ocssd.log可以看到css识别到的第三方集群,下面的例子分别是HACMP、SFRAC、SunCluster、ServiceGuide :

 

  1. [CSSD]2008-05-27 15:09:43.456 [1029] >TRACE: clssnm_skgxninit: initialized skgxn version (2/0/IBM AIX skgxn)  
  2. [CSSD]2008-12-30 21:44:56.172 [1029] >TRACE: clssnm_skgxninit: initialized skgxn version (2/0/Veritas Cluster Server MM  
  3. [CSSD]2007-08-10 02:19:39.572 [3] >TRACE: clssnm_skgxninit: initialized skgxn version (2/2/Oracle Solaris UDLM)  
  4. [CSSD]2006-09-29 18:57:53.323 [5] >TRACE: clssnm_skgxninit: initialized skgxn version (2/0/Hewlett-Packard SKGXN 2.0) 

 

在9i/8i中没有css/crs,该信息可以在后台进程lmon的trace文件中得到(在bdump中);

在安装Oracle 9i RAC/8i OPS的过程中,Oracle识别集群方法类似。

在多个平台上,如果两个节点没有正确链接libskgxn2文件,可能会导致第二个实例无法mount或出现ORA-600错误。

Oracle支持的RAC环境

因为Oracle RAC本身比较复杂,在安装和管理中可能会遇到各种问题,涉及到OS、RDBMS、Cluster软件和网络、主机、存储等硬件,为了避免不必要的问题发生,在安装之前,我们需要确认安装环境是否满足要求,包括软件和硬件两方面,尤其是Vendor clusterware和OS 的版本的兼容性需要注意,可以从metalink中得到最新的Oracle官方认证信息:登陆Metalink.oracle.com 选择 Certify,选择by product,选择real application server,选择对应平台就可以得到。下面列出一些关于硬件和平台支持的常见问题:

官方不支持的:Vmware, Sun LDOM ,Solaris Local Container/Zones

官方支持的: IBM LPAR, IBM VIOS(Virtual IO Server), Solaris Global Containers

RHEL GFS , ISCSI,

私有网络(心跳线)的支持: 不支持使用交叉线,支持 Infiniband RDS (10gR2之后)

异构环境:支持不同的硬件、但相同的软件(OS/Oracle)组成的集群,不支持32位与64位系统间的集群

目前支持的NFS的server包括:

EMC Celerra

Fujitsu Filer NR1000 Series

IBM N Series

NetApp FAS, F, G Series

Pillar Data Systems Axiom 500

Sun StorageTek 5000 Series

Oracle Clusterware的心跳

Oracle clusterware 使用两种心跳设备来验证成员的状态,保证集群的完整性;一是对voting disk的心跳,ocssd进程每秒向votedisk写入一条心跳信息;二是节点间的私有以太网的心跳,两种心跳机制都有一个对应的超时时间,分别叫做 misscount和disktimeout:

misscount 用于定义节点间心跳通信的超时,单位为秒;

disktimeout ,默认200秒,定义css进程与vote disk连接的超时时间;

reboottime ,发生裂脑并且一个节点被踢出后,这个节点将在reboottime的时间内重启;默认是3秒;

其中misscount默认值见下表
misscount

用下面的命令查看上述参数的实际值:

  1. 1. # crsctl get css misscount  
  2. 2. # grep misscount $CRS_HOME/log/hostname/cssd/ocssd.log  
  3. [CSSD]2008-11-27 22:29:42.397 [1] >TRACE: clssnmInitNMInfo: misscount set to 600 

 

在下面两种情况发生时,css会踢出节点来保证数据的完整,:

(1) Private Network IO time > misscount,会发生split brain即裂脑现象,产生多个“子集群”(subcluster) ,这些子集群进行投票来选择哪个存活,踢出节点的原则按照下面的原则:

节点数目不一致的,节点数多的subcluster存活;节点数相同的,node ID小的节点存活。

(2) Vote Disk IO Time > disktimeout ,踢出节点原则如下:失去半数以上vote disk连接的节点将在reboottime的时间内重启;例如有5个vote disk,当由于网络或者存储原因某个节点与其中>=3个vote disk连接超时时,该节点就会重启。当一个或者两个vote disk损坏时则不会影响集群的运行。

可以手工修改这三个参数的值,单位都是秒:(谨慎使用)

 

  1. $CRS_HOME/bin/crsctl set css misscount   
  2. $CRS_HOME/bin/crsctl set css reboottime [-force]  
  3. $CRS_HOME/bin/crsctl set css disktimeout [-force]  
  4. 或者重新设置成默认值:crsctl unset css misscount 

 

Clusterware的私有网络

在Oracle 10g/11g中,Oracle的私有网络(private network)包括clusterware的私有网络和数据库实例的私有网络:

clusterware的私有网络主要包括css数据的传送,即用一种特殊的ping命令来检测其他机器的状态;

数据库实例的私有网络,包括RDMS和ASM的,用于cache fusion(GCS/GES)数据的传输。

当我们只使用一个私有网卡的时,同时传送上面两类的数据。如果我们在安装时指定了两个私有网卡,首先使用如下面$CRS_HOME/bin/oifcfg getif命令来得到所有网络接口列表,这些信息保存在ocr中:

 

  1. # oifcfg getif  
  2. en0 10.200.56.0 global public 
  3. en3 192.168.3.0 global cluster_interconnect  
  4. en5 192.168.5.0 global cluster_interconnect 

 

情况会有所不同,clusterware的私有网络,目前(10g/11g)只能使用一个网络接口,对应于/etc/hosts中定义的private hostname的那个网卡,可以通过查看ocssd的log来确定:

当/etc/hosts 中定义private hostname为192.168.3.233时看到 :

 

  1. [ CSSD]2009-01-16 17:34:12.406 [1029] >TRACE: clssgmPeerListener: Listening on (ADDRESS=(PROTOCOL=tcp)(DEV=12) (HOST=192.168.3.233)(PORT=45527)) 

这个是与其他节点css进行通信的信息:

 

  1. [ CSSD]2009-01-16 17:36:27.463 [1029] >TRACE: clssgmConnectToNode: 
  2. node 2 clsc (ADDRESS=(PROTOCOL=tcp)(DEV=12) (HOST=192.168.3.234)(PORT=37732)) - size 64 ver 1 

当/etc/hosts 中定义private hostname为192.168.5.233时,css使用了另外一个网络:

 

  1. [ CSSD]2009-01-16 18:59:56.411 [1029] >TRACE: clssgmPeerListener:   
  2. Listening on (ADDRESS=(PROTOCOL=tcp)(DEV=12) (HOST=192.168.5.233)(PORT=50415)) 

Oracle实例的私有网络

Oracle实例的心跳网络使用方式的优先级从高到低如下:

(1) 如果使用了第三方集群的IPC,替换了对应$ORACLE_HOME/lib/libskgxnX.so文件,那么数据库实例的cache fusion会使用对应的网络协议,而忽略ocr中和数据库初始化参数中cluster_interconnects的配置,下面的例子当中就使用了 VCSIPC,可以从对应的alert log中验证:

 

  1. db_name = r10g  
  2. open_cursors = 300  
  3. pga_aggregate_target = 1237319680  
  4. Fri Mar 13 14:00:35 2009  
  5. Oracle instance running with ODM: Veritas 6.0 ODM Library, Version 1.1  
  6. cluster interconnect IPC version:  
  7. VERITAS IPC 5.1.0.0 15:16:24 Feb 12 2009  
  8. IPC Vendor 86 proto 76  
  9. Version 1.0  
  10. PMON started with pid=2, OS id=4399196  
  11. DIAG started with pid=3, OS id=3936288 

 

(2) 如果没有使用第三方IPC,则优先使用数据库初始化参数的cluster_interconnects配置,这个参数的格式为if1:if2:...:ifn,可以不同于crs的私有网络,需要注意的是,该参数不支持多个网卡的故障切换;

(3) 没有上面两个配置,数据库会使用oifcfg列出的心跳的网络,在对应的告警日志中可以得到:

 

  1. Interface type 1 en6 192.168.61.0 configured from OCR for use as a cluster interconnect  
  2. Interface type 1 en0 10.182.0.0 configured from OCR for use as a public interface  
  3. . . . .  
  4. Cluster communication is configured to use the following interface(s) for this instance  
  5. 192.168.61.0 

(4) 没有1和2的配置,并且oifcfg也没有配置cluster_interconnect,则数据库会使用共有网络进行心跳信息的传输,这种配置其实是配置失败的情况,数据库虽然能够启动,但急需DBA修正,在告警日志中可以看到:

 

  1. WARNING: No cluster interconnect has been specified. Depending on  
  2. the communication driver configured Oracle cluster traffic  
  3. may be directed to the public interface of this machine.  
  4. Oracle recommends that RAC clustered databases be configured  
  5. with a private interconnect for enhanced security and  
  6. performance. 

 

对于一个已经有的系统,可以用下面几种方法确认数据库实例的心跳配置,包括网卡名称,IP地址,使用的网络协议:

(1) 最简单的方法:可以在数据库的后台报警日志中得到。具体参见上面列出的告警日志;

(2) 使用oradebug ;

 

  1. SQL> oradebug setmypid  
  2. SQL> oradebug ipc  
  3. SQL> oradebug tracefile_name 

 

找到对应trace文件的这一行:socket no 10 IP 10.0.0.1 UDP 49197

(3) 从数据字典中得到(V$CLUSTER_INTERCONNECTS 和 V$CONFIGURED_INTERCONNECTS),或查询x$ksxpia

 

  1. SQL> SELECT * FROM V$CLUSTER_INTERCONNECTS; ----Oracle 11g 开始支持此试图  
  2. NAME IP_ADDRESS IS_ SOURCE  
  3. ------------------------------ ---------------- --- -------------------------------  
  4. en3 192.168.2.31 NO Oracle Cluster Repository  
  5. en5 192.168.3.231 NO Oracle Cluster Repository  
  6. SQL> SELECT * FROM V$CONFIGURED_INTERCONNECTS;  
  7. NAME IP_ADDRESS IS_ SOURCE  
  8. ------------------------------ ---------------- --- -------------------------------  
  9. en3 192.168.2.31 NO Oracle Cluster Repository  
  10. en5 192.168.3.231 NO Oracle Cluster Repository  
  11. en0 10.200.59.231 YES Oracle Cluster Repository  
  12. SQL> select * from x$ksxpia ;  
  13. ADDR INDX INST_ID PUB_KSXPIA PICKED_KSXPIA NAME_KSXPIA IP_KSXPIA  
  14. ---------------- ---------- ---------- ---------- --------------- --------------- ----------------  
  15. 00000001104AAF28 0 1 N OCR en6 192.168.61.121  
  16. 00000001104AAF28 1 1 Y OCR en0 10.182.6.211 

 

为了避免心跳网络成为系统的单一故障点,简单地我们可以使用操作系统绑定的网卡来作为Oracle的心跳网络,以AIX为例,我们可以使用etherchannel技术,假设系统中有ent0/1/2/3四块网卡,我们绑定2和3作为心跳:

 

  1. #mkdev -c adapter -s pseudo -t ibm_ech -a adapter_names='ent2,ent3' ## 将生成网卡设备ent4  
  2. #/usr/lib/methods/defif  
  3. #lsdev -Cc adapter | grep ent  
  4. #lsattr -El ent4  
  5. #ifconfig en4 inet 192.168.3.231 netmask 255.255.255.0 up  
  6. 在Solaris上可以使用dladm来创建链路聚合:  
  7. # dladm create-aggr -d bge2 -d bge3 1  
  8. # ifconfig aggr1 plumb 192.168.3.231 netmask 255.255.255.0 up  
  9. # dladm show-aggr  
  10. # ifconfig -a 

 

同样在HPUX和Linux对应的技术分别叫APA和bonding。

UDP私有网络的调优

当使用UDP作为数据库实例间cashe fusion的通信协议时,在操作系统上需要调整相关参数,以提高UDP传输效率,并在较大数据时避免出现超出OS限制的错误:

(1) UDP数据包发送缓冲区:大小通常设置要大于(db_block_size * db_multiblock_read_count )+4k,

(2) UDP数据包接收缓冲区:大小通常设置10倍发送缓冲区;

(3) UDP缓冲区最大值:设置尽量大(通常大于2M)并一定要大于前两个值;

各个平台对应查看和修改命令如下:

Solaris 查看

  1. ndd /dev/udp udp_xmit_hiwat udp_recv_hiwat udp_max_buf ;  
  2. 修改 ndd -set /dev/udp udp_xmit_hiwat 262144  
  3. ndd -set /dev/udp udp_recv_hiwat 262144  
  4. ndd -set /dev/udp udp_max_buf 2621440 

 

AIX 查看

  1. no -a |egrep “udp_|tcp_|sb_max”  
  2. 修改 no -p -o udp_sendspace=262144 
  3. no -p -o udp_recvspace=1310720 
  4. no -p -o tcp_sendspace=262144 
  5. no -p -o tcp_recvspace=262144 
  6. no -p -o sb_max=2621440 

 

Linux 查看

  1. 文件/etc/sysctl.conf  
  2. 修改 sysctl -w net.core.rmem_max=2621440 
  3. sysctl -w net.core.wmem_max=2621440 
  4. sysctl -w net.core.rmem_default=262144 
  5. sysctl -w net.core.wmem_default=262144 

 

HP-UX 不需要

HP TRU64 查看 /sbin/sysconfig -q udp

修改: 编辑文件/etc/sysconfigtab

inet: udp_recvspace = 65536

udp_sendspace = 65536

Windows 不需要

常见安装、管理错误

1. 安装CRS失败,或执行root.sh报错,可能原因:

(1) 节点间的时间不同步,解决方法:使用ntp服务

(2) Linux下启用了默认的防火墙,导致执行root.sh报错:

Failure at final check of Oracle CRS stack.

10

解决方法:禁用iptables ,注释/etc/pam.d/other ;

 

  1. # service iptables stop; # chkconfig iptables off. 

(3) 裸设备的权限问题,可能因为操作系统重新启动后权限发生变化。(RHEL4)

解决方法: 把 chown oracle:dba /dev/raw/raw* 命令加入到/etc/rc.local中,每次开机自动执行

或者修改文件/etc/udev/permissions.d/50-udev.permissions

第113行raw/*:root:disk:0660 改成 raw/*:oracle:dba:0660

(4) Solaris使用了包括cylinder 0的磁盘分区来存储OCR或者vote disk。

解决办法:相关分区不应该包括cylinder 0,可以从1开始。

(5) 使用的公网IP地址不可路由,

解决方法:添加相关网关

(6) 在/etc/hosts 中没有loopback地址,即127.0.0.1 localhost

(7) 主机名含有大些字母、减号或者下划线等特殊字符;

(8) HPUX中oracle不要使用gnu的bash,修改使用默认shell;

(9) 检查操作系统、第三方集群是否是oracle官方支持的,是否需要补丁,比如在AIX5.3+HACMP上安装

Oracle 10g/11g RAC,oslevel就需要06及以上;

(10) AIX平台,需要将共享设备的reserve_policy (reserve_lock) 属性修改为no_reserve(no);

(11) 所有节点看到的OCR和vote设备的路径名应该一致,如果不一致,可以用软连接解决;

(12) 心跳设备问题或者ocr/votedisk 访问问题,unix/linux查看有无/tmp/crsctl.*文件,得到错误信息;

(13) 在CRS旧的安装的环境中重新安装失败

解决方法: dd清除ocr和vote disk,并使用下面语句清理旧的crs配置文件

 

  1. rm -rf /usr/tmp/.oracle /var/tmp/.oracle /tmp/.oracle /etc/oracle/* /var/opt/oracle/*  
  2. rm -rf /etc/init.cssd /etc/init.crs* /etc/init.evmd /etc/init.d/init.cssd /etc/init.d/init.crs  
  3. rm -rf /etc/init.d/init.crsd /etc/init.d/init.evmd /etc/rc3.d/K96init.crs /etc/rc3.d/S96init.crs  
  4. rm -rf /etc/rc.d/rc2.d/K96init.crs /etc/rc.d/rc2.d/S96init.crs 

 

2 客户端有时候报错:

ORA-12545: Connect failed because target host or object does not exist

ORA-12545: 因目标主机或对象不存在, 连接失败

解决方法:设置local_listener初始化参数

3 如果选择节点界面出不来。

(1)HACMP环境中需要检查oracle 用户必须在 hagsuser组里.

(2)如果是hacmp5.4,需要打Oracle补丁6718715;

(3)可以使用集群配置文件cluster CONFIGURATION FILE ,内容模板如下:

 

  1. MyCluster  
  2. rac01 rac01-priv rac01-vip  
  3. rac02 rac02-priv rac02-vip  
  4. rac03 rac03-priv rac03-vip  
  5. rac04 rac04-priv rac04-vip 

 

4. AIX上数据库启动报错

 

  1. ora-27504 IPC error creating OSD context  
  2. ora-27300 OS system dependent operation:sendmsg failed with status:59  
  3. ora-27301 OS failure message:Message too long  
  4. ora-27302 failure occurred at:sskgxpsnd1 

 

原因:没有设置网络参数udp_recvspace/udp_sendspace

5. Windows平台,ORA-600 [kccsbck_first]

解决方法:关闭Media Sense(媒体感知)

6. 系统循环重启:

可能是CRS导致,如果因为crs,首先设置 crsctl disable crs 来禁止oracle crs的自动启动。

查看OS、crsd和cssd的对应日志,看/tmp/下是否有crs文件 (ls -lrt /tmp/crsctl*),确定crs失败原因。

7. 第二个节点的数据实例无法mount,挂起或者报错,

原因1:使用了vendor clusterware ,libskgxn2.so文件链接错误,

解决方法:比较两个节点的ORACLE_HOME/lib/libskgxn2和CRS_HOME/lib/libskgxn2*都是否相同,

如果不同需要重新link

原因2:任何平台Oracle 9i,没有设置网络参数udp参数

导致udp_sendspace或者udp_recvspace小于 db_block_size * db_file_multiblock_read_count

解决方法:设置对应参数,如AIX上设置udp_recvspace = 65536 udp_sendspace = 65536

原因3:AIX/HACMP/Oracle9i,在hacmp中定义了service IP

解决方法:在初始化参数中定义cluster_interconnects

原因4:任何平台,设置了错误的cluster_interconnects

解决方法:检查并纠正此参数,

8. 建库时不能识别裸设备;

原因1:Oracle,10.2.0.3 ,很多平台(比如aix和linux)有rawutl相关bug,

解决办法:还原10.2.0.1中的rawutl工具,该程序在 $ORACLE_HOME/bin目录中。

原因2:Oracle9i,AIX平台,需要设置环境变量export PGSD_SUBSYS=grpsvcs

9. evm资源自动报错oac_init:2: Could not connect to server, clsc retcode = 9

解决方法:关闭 “UDP ICMP rejections”

 

  1. /etc/rc.d/init.d/iptables stop ;chkconfig iptables off 

【编辑推荐】

  1. 新的Oracle 11g功能展示
  2. 深入Oracle 11g分区功能
  3. Oracle 11g R2中新特性一览
  4. Oracle 11g R2如约而至 RAC技术成亮点 
  5. 详解Oracle数据库优化方案与实践
责任编辑:彭凡 来源: ITPUB
相关推荐

2022-06-20 05:25:54

裂脑Oracle RAC数据库

2019-02-25 08:40:28

Linux磁盘IO

2010-03-04 09:27:00

Oracle RAC

2011-05-19 14:11:29

Oracle

2019-07-09 10:24:14

Oracle脚本负载均衡

2011-03-29 10:47:49

ORACLE数据库

2011-04-11 14:56:09

Oracle性能

2010-04-12 15:28:38

Oracle RAC

2010-04-22 10:30:11

Oracle RAC

2023-10-11 08:59:05

2010-04-02 16:31:58

Oracle RAC

2010-04-27 16:54:11

Oracle RAC

2023-08-28 09:14:20

ScrapyPython

2010-04-07 09:21:03

Oracle RAC

2017-03-28 11:39:58

深信服超融合平台

2018-10-12 11:11:39

Oracle内存结构

2010-04-09 16:51:24

Oracle数据库

2023-10-10 09:26:18

2010-04-19 17:37:51

Oracle 10g

2009-04-27 13:26:41

Oracle 10gRAC链接错误
点赞
收藏

51CTO技术栈公众号