有关RAC 的一些概念性和原理性的知识, 请参考我的blog:

http://blog.csdn.net/tianlesoftware/archive/2010/02/27/5331067.aspx

这次实验是 OCFS2+ASM 来实现的,至于裸设备平台的搭建,以后在整理。在生产环境中还是raw + ASM 比较多。

实验平台:Oracle 10gR2 RAC + RHEL 4.0 +VMWare GSX 3.2.0

安装步骤:

1.安装前准备及OS安装配置

2.安装Oracle 10gR2 clusterware

3.安装Oracle 10gR2 database

4.配置netca

5.创建ASM 实例

6.配置dbca创建数据库

7.检查RAC状态

8.RAC 卸载

一. 安装前准备及OS安装配置

Host OS 准备

1. 从Oracle OTN下载 oracle 10gR2 for x86 linux,下2个zip, 一个是clusterware zip,一个是database zip, comp CD 可选.

2. 准备的RHEL 5(x86)

3. 搞清楚你的linux的kernel version

4. 从Oracle OTN下载 ocfs2 , ocfs2 tools, ocfs2 console, ASMLib, ASMLib support , 记住这些都是针对你的kernel的,不要下错

http://oss.oracle.com/projects/ocfs2/source.html

http://oss.oracle.com/projects/ocfs2/files/

http://oss.oracle.com/projects/ocfs2-tools/files/

注意, ocfs2 tools 和 ocfs2 console 在一个页面下载。

http://www.oracle.com/technology/tech/linux/asmlib/index.html

该页面有下载地址,注意选择CPU 类型。 里面有asmlib 和 support。 在同一个页面。

5. VMWare GSX 3.2.0 for linux

虚拟机 Workstation,GSX Server 和ESX之间的区别

http://blog.csdn.net/tianlesoftware/archive/2010/02/22/5316767.aspx

OS安装

1. 在vmware console 中创建redhat 4 实例,取名rac1. 内存600M, 硬盘12GB。

2. 创建好后vmware OS之后,加上一块NIC网卡

3. 在gsx里用vdiskmanager 创建Share Disk。

ocfs2 for OCR and voting disk, ASM for Oracle DATA.

Dos 下进入vmware 的安装目录,运行一下命令

vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 1GB一个 for ocfs2 for OCR + CRS voting

vmware-vdiskmanager.exe -c -s 500Mb -a lsilogic -t 2 E:/VM/RACShare/ocfs2_ocr_crs.vmdk

vmware-vdiskmanager 创建 pre-allocated并且是lsi contoller的硬盘 for Oracle data & flash recovery area

vmware-vdiskmanager.exe -c -s 4096Mb -a lsilogic -t 2 E:/VM/RACShare/asm_data.vmdk

vmware-vdiskmanager.exe -c -s 2048Mb -a lsilogic -t 2 E:/VM/RACShare/asm_recovery.vmdk

做好后,share目录就会产生你刚才创建的这些vmdk了.

4. 到 rac1的目录,打开rac1.vmx , 在最后空白处添加这几段内容(一定要最后)

scsi1.present = "TRUE"

scsi1.virtualDev = "lsilogic"

scsi1.sharedBus = "virtual"

这段是打开 scsi1上的使用,并且设置成virtual, controller设置成lsilogic

然后依次添加

scsi1:1.present = "TRUE"

scsi1:1.mode = "independent-persistent"

scsi1:1.filename = "E:/VM/RACShare/ocfs2_ocr_crs.vmdk"

scsi1:1.deviceType = "plainDisk"

scsi1:2.present = "TRUE"

scsi1:2.mode = "independent-persistent"

scsi1:2.filename = "E:/VM/RACShare/asm_data.vmdk"

scsi1:2.deviceType = "plainDisk"

scsi1:3.present = "TRUE"

scsi1:3.mode = "independent-persistent"

scsi1:3.filename = "E:/VM/RACShare/asm_recovery.vmdk"

scsi1:3.deviceType = "plainDisk"

最后添加这个

disk.locking = "false"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.DataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "4096"

diskLib.maxUnsyncedWrites = "0"

这段是对vmware使用共享硬盘的方式进行定义

保存退出之后,重新打开你的vmware-console,你就可以看到2个vmware guest OS的配置中,都有这些硬盘出现了.

5. 然后就安装你的vmware  OS, 安装的时候,为了方便,把包全部装上,省得以后麻烦。

将rac1结点复制到rac2, 在虚拟机中用新ID打开,修改IP地址,hostname,节点2创建完成。 采用复制就省的安装2次系统,比较方便。

6.  配置你的2个网卡的固定IP,hostname, DNS, gateway, time server (NTP)

/etc/sysconfig/network-script/ifcfg-eth0

/etc/sysconfig/network-script/ifcfg-eth1

修改机器名,IP和网关 -- 默认网关必须设置,不然 vipca 报错

[root@rac1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.85.10.119

NETMASK=255.255.255.0

GATEWAY=10.85.10.253

修改主机名
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rac1

修改完之后重启生效:
/etc/rc.d/init.d/network restart 重新启动

查看DNS:
cat /etc/resolv.conf

同步时间:

1. 在rac1上用root用户执行

#chkconfig time on     #在系统引导的时候自动启动

2. 在rac2 上添加任务,每一分钟和rac1进行一次时间同步。

[root@rac2 ~]# crontab -l

*/1 * * * * rdate -s 10.85.10.119

rac 对节点间时间较敏感,如果不同步在安装clusterware 时后会报错,而且在安装vipca 的时候也会报错。 具体时间同步参考我的blog:

Linux 时间同步配置

http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5315587.aspx

linux 下修改日期和时间

http://blog.csdn.net/tianlesoftware/archive/2009/11/13/4808096.aspx

7. 安装结束后,进入 OS, 修改解析文件: /etc/hosts

如下

注:机器名和public名要一样

127.0.0.1 localhost (必须要这样)

10.85.10.119 rac1

10.85.10.121 rac2

192.168.1.119 rac1-priv

192.168.1.121 rac2-priv

10.85.10.122 rac1-vip

10.85.10.123 rac2-vip

两个node都要一样.

修改后要确认这个hosts 都正确 (ping)

8. 建立用户等效性

建立等效用户之后,2个结点直接Oracle 用户互相访问就不在需要密码了, 这样就为RAC管理提供了可能性,如果等效性没有配好, RAC 肯定是装不起来的。

group add dba oinstall 组在两个node上, 创建oracle 用户, 主组oinstall, 附加组是dba和disk

#groupadd oinstall

#groupadd dba

#useradd -g oinstall -G dba oracle

#passwd oracle

建立等效用户

在rac1:

[root@rac1 opt]# su - oracle

[oracle@rac1 ~]$ mkdir ~/.ssh

[oracle@rac1 ~]$ chmod 700 ~/.ssh

[oracle@rac1 ~]$ ssh-keygen -t rsa

[oracle@rac1 ~]$ ssh-keygen -t dsa

在rac2:

[root@rac2 opt]# su - oracle

[oracle@rac2 ~]$ mkdir ~/.ssh

[oracle@rac2 ~]$ chmod 700 ~/.ssh

[oracle@rac2 ~]$ ssh-keygen -t rsa

[oracle@rac2 ~]$ ssh-keygen -t dsa

切换回rac1,接着执行:

[oracle@rac1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[oracle@rac1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

提示:下列命令会提示你输入rac2 的oracle 密码,按照提示输入即可,如果失败可重新尝试执行命

令。

[oracle@rac1 ~]$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys

[oracle@rac1 ~]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[oracle@rac1 ~]$ ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

[oracle@rac2 ~]$ scp ~/.ssh/authorized_keys rac1:~/.ssh/authorized_keys

确保2个node都有相互的结点信息。

两机相互执行,看看是否还需要输入密码

[oracle@rac1 ~]$ ssh rac1 date

[oracle@rac1 ~]$ ssh rac2 date

[oracle@rac1 ~]$ ssh rac1-priv date

[oracle@rac1 ~]$ ssh rac2-priv date

切换至rac2 执行

[oracle@rac2 ~]$ ssh rac1 date

[oracle@rac2 ~]$ ssh rac2 date

[oracle@rac2 ~]$ ssh rac1-priv date

[oracle@rac2 ~]$ ssh rac2-priv date

9. 在每个结点上创建目录

[root@rac2 ~]# mkdir -p /u01/app/oracle

[root@rac2 ~]# chown -R oracle:oinstall /u01

[root@rac2 ~]# chmod -R 777 /u01

这个目录给oracle和clusterware系统的

[root@rac2 ~]# mkdir -p /u02/oradata/orcl

[root@rac2 ~]# chown -R oracle:oinstall /u02

[root@rac2 ~]# chmod -R 777 /u02

这个目录给 ocfs2用来装OCR, CRS voting 的

10. 修改你的 /etc/sysctl.conf ,添加这些kernel 参数

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=262144

net.core.wmem_max=262144

kernel.shmall = 78643200

kernel.shmmax = 314572800

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

# sysctl -p 立刻生效

kernel.shmall为物理内存除以pagesize;

kernel.shmmax为物理内存的一半;

fs.file-max为512 乘以 processes (如128个process则为 65536);

net.ipv4.ip_local_port_range/net.core.rmem_default/net.core.rmem_max三个参数设置和官方文档不一样, 这是根据metalink 343431.1 最新要求更改的;

net.ipv4.tcp_rmem/net.ipv4.tcp_wmem两个参数一般情况下无需设置, 除非是在Dataguard/Streams等需很多网络传输情况下;

其它参数根据官方文档要求设置即可.

具体内容参考我的blog:

Linux 内核参数及Oracle相关参数调整

http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4668741.aspx

11. 设置用户资源限制

因为所有的进程都是以Oracle 身份来运行的,因此需要定义Oracle 用户能够使用的系统资源数量。

vi /etc/sysconfig/limits.conf

--使用HugePage 内存技术,添加下面2行

Oracle soft memlock 5242880

Oracle hard memlock 524280

--进程句柄数量

oracle soft nproc 2047

oracle hard nproc 16384

-- 文件句柄

oracle soft nofile 65536

oracle hard nofile 65536

将下面一行添加到/etc/pam.d/login文件中:
session required /lib/security/pam_limits.so

12. 配置 hangcheck-timer 模块

Hangcheck-timer 是Linux 提供的一个内核级的IO-Fencing 模块, 这个模块会监控Linux 内核运行状态, 如果长时间挂起, 这个模块会自动重启系统。 这个模块在Linux 内核空间运行, 不会受系统负载的影响。 这个模块会使用CPU的Time Stamp Counter(TSC) 寄存器,这个寄存器的值会在每个时钟周期自动增加, 因此使用的是硬件时间,所以精度更高。

配置这个模块需要2个参数: hangcheck_tick 和 hangcheck_margin。

hangcheck_tick用于定义多长时间检查一次,缺省值是30秒。 有可能内核本身很忙, 导致这个检查被推迟, 该模块还允许定义一个延迟上限,就是hangcheck_margin, 它的缺省值是180秒。

Hangcheck-timer 模块会根据hangcheck_tick 的设置,定时检查内核。只要2次检查的时间间隔小于 hangcheck_tick + hangchec_margin, 都会认为内核运行正常,否则就意味着运行异常,这个模块会自动重启系统。

CRS本身还有一个MissCount 参数,可以通过crsctl get css miscount 命令查看。

当RAC结点间的心跳信息丢失时, Clusterware 必须确保在进行重构时,故障结点确实是Dead 状态,否则结点仅是临时负载过高导致心跳丢失,然后其他结点开始重构,但是结点没有重启,这样会损坏数据库。 因此MissCount 必须大于 hangcheck_tick+hangcheck_margin的和。

12.1 查看模块位置:

[root@rac1 ~]# find /lib/modules -name "hangcheck-timer.ko"

/lib/modules/2.6.9-78.EL/kernel/drivers/char/hangcheck-timer.ko

/lib/modules/2.6.9-78.ELsmp/kernel/drivers/char/hangcheck-timer.ko

12.2 配置系统启动时自动加载模块,在/etc/rc.d/rc.local 中添加如下内容

[root@rac1 ~]# modprobe hangcheck-timer

[root@rac1 ~]# vi /etc/rc.d/rc.local

modprobe hangcheck-timer

12.3 配置hangcheck-timer参数, 在/etc/modprobe.conf 中添加如下内容:

[root@rac1 ~]# vi /etc/modprobe.conf

options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

12.4 确认模块加载成功:

[root@rac1 ~]# grep Hangcheck /var/log/messages | tail -2

Feb 23 22:08:44 rac1 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 30 seconds, margin is 180 seconds).

13. 安装ocfs2 , ocfs2的console的rpm,

# rpm -ivh *.rpm

linux 挂在windows 共享的盘

1. 启动nfs服务:   service nfs start

2. mount -o username=share,password=share //10.85.10.80/RAC /mnt

14. 在每个node 上这样操作

/etc/init.d/o2cb enable

然后编辑 /etc/init.d/o2cb, 删除掉 靠近配置开头的那些带 #的配置行

进入X, 然后运行 ocfs2console, 把你的2个node都添加进去

添加后会生成 /etc/ocfs2/cluster.conf文件

若不能apply, 把/etc/ocfs2/cluster.Conf 文件删了在运行即可。

node:

ip_port = 7777

ip_address = 10.85.10.119

number = 0

name = rac1                  ---- 注意:name是机器名

cluster = ocfs2

node:

ip_port = 7777

ip_address = 10.85.10.121

number = 1

name = rac2

cluster = ocfs2

cluster:

node_count = 2

name = ocfs2

15.先格式化分区 fdisk /dev/sdb,/dev/sdc,/dev/sdd,/dev/sde,/dev/sdf.

在一个结点执行格式化就可以了,因为他们是共享的。

[root@rac1 init.d]# fdisk /dev/sdc

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-130, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):

Using default value 130

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

在用fdisk -l 就会看到新的分区sdb1,sdc1,sdd1,sde1,sdf1

格式化分区:

在一个 node上 mkfs.ocfs2 -b 4k -C 32k -L oradatafiles /dev/sdb1 (就是前面创建的第一个vmdk)

16. 在每个node上

mount -t ocfs2 -o datavolume /dev/sdb1 /u02/oradata/orcl

若在第二个结点挂不上,把系统重启一下就可以了

在挂载之前,/etc/init.d/o2cb status 显示为Checking O2CB heartbeat: Not active。

在格式化和挂载文件系统之前,应验证 O2CB 在两个节点上均联机;O2CB 心跳当前没有

活动,因为文件系统还没有挂载 。挂载之后就会变成active。

问题1:若出现这样的错误,注意检查下防火墙是否关闭,关闭防火墙在看看。

o2net_connect_expired:1664 ERROR: no connection established with node 0 after 30.0 seconds, giving up and returning errors.

关闭防火墙命令:

1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off

2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

参考: Build Your Own Oracle RAC 10g Release 2 Cluster on Linux and FireWire

http://blog.csdn.net/tianlesoftware/archive/2009/11/13/4805700.aspx

修改参数,让ocfs2 在系统启动时自动挂共享盘

Configure OCFS to Mount Automatically at Startup

修改你的 /etc/fstab , 添加 类似这样的行

/dev/sdb1 /u02/oradata/orcl ocfs2 _netdev,datavolume 0 0

到这里,我们的ocfs2 for OCR, CRS voting 就OK了

RAC Ocfs2文件系统常见问题解决方法

http://blog.csdn.net/tianlesoftware/archive/2009/11/13/4805727.aspx

17. 修改 /etc/sysconfig/o2cb

把threshhold 的 值设置成 600

[隔离时间(秒)] = (O2CB_HEARTBEAT_THRESHOLD - 1) * 2
(301 - 1) * 2 = 600 秒

为什么设成600,如果时间过短,会造成ocfs不能正常挂载。

具体参考我的blog:

解决 OCFS2 不能自动挂载 提示 o2net_connect_expired

http://blog.csdn.net/tianlesoftware/archive/2009/11/14/4806813.aspx

18. 在每个node上安装 ASMLibs, tools, support 三个rpm文件

# rpm -ivh *.rpm --nodeps --force

然后运行 /etc/init.d/oracleasm configure

回答 oracle , dba, y, y 就可以了

19. 创建ASM

在一个node上:

通过以 root 用户身份运行以下命令来标记由 ASMLib 使用的磁盘:/etc/init.d/oracleasm createdisk DISK_NAME device_name

(提示:DISK_NAME 应由大写字母组成。当前版本有一个错误,即假如使用小写字母,ASM 实例将无法识别磁盘。)

记住,ASM在linux下面处理的对象是 partition,不是disk, 所以你那些vmdk要linux 下面partition好才能用,所以先fdisk一下在创建.

/etc/init.d/oracleasm createdisk VOL3 /dev/sdc1

/etc/init.d/oracleasm createdisk VOL2 /dev/sdd1

创建好后, 在这个node 上运行 /etc/init.d/oracleasm listdisks 查看

20. 在另外一个node 上

/etc/init.d/oracleasm scandisks

/etc/init.d/oracleasm listdisks 查看

21. 在每个node上

Su -oracle

Cd /home/oracle

修改 oracle用户家目录下的 .bash_profile

注意ORACLE_SID, 和后面建库要一致。

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export ORA_CRS_HOME=$ORACLE_BASE/product/crs

export ORACLE_SID=rac1

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin

export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin

export ORACLE_TERM=xterm

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS10=$ORACLE_HOME/nls/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export CLASSPATH=$ORACLE_HOME/JRE

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

export THREADS_FLAG=native

export TEMP=/tmp

export TMPDIR=/tmp

第二个节点的 ORACLE_SID=rac2 其他都一样

二. 安装Oracle 10gR2 clusterware

1. 用Xmanager 软件连上虚拟机之后运行clusterware 的安装软件, Xmanager 支持图形界面, 所以能省很多事。

注:若出现这样:libXp.so.6: cannot open shared object file 错误,安装下libXp包就可以了

2.确认你的安装目录是/u01/app/oracle/product/crs

3. 增加相关结点信息

rac1 rac1-priv rac1-vip

rac2 rac2-priv rac2-vip

4.指定 eth0 的类型时public

5. 指定OCR 和 Voting Disk

一般而言,如果采用存储来存放OCR和Voting Disk. 存储本身就提供了redundancy策略,此时我们可以选择External Redundancy 选项, 此时Oracle 就不在考虑软件冗余了。 如果没有使用存储设备或者存储为RAID0,那么就可以使用Oracle 自己提供的软件冗余机制 Normal Redundancy 选项,此时就会激活Mirror Location 选项. 用来指定镜像文件位置, Oracle 的Clusterware在运行时会维护这个Mirror文件的内容同步。

OCR 最多只有一份冗余:

/u02/oradata/orcl/OCRFile

/u02/oradata/orcl/OCRFile_mirror

Voting Disk 最多可以定义2份冗余:

/u02/oradata/orcl/VotingFile

/u02/oradata/orcl/VotingFile_mirror1

/u02/oradata/orcl/VotingFile_mirror2

7.然后就开始安装了,结束时会提示用root在每个节点上运行orainstRoot.Sh 和 root.Sh脚本, 在第二个结点上运行root.Sh 后自动调用vipca 这个命令, 在第二个结点运行root.Sh 之前要修改一下vipca命令, 不然可能会报错。

RAC安装时需要执行4个脚本及意义

http://blog.csdn.net/tianlesoftware/archive/2010/02/22/5317034.aspx

注意: VIPCA 命令也是用ROOT 用户来运行的, 只需要在一个结点运行就可以了。

进入$CRS_HOME/bin/目录, 用vi来修改vipca 和 srvctl 2个命令。

问题1: vipca报错,是redhat的bug

Running vipca(silent) for configuring nodeapps

/home/oracle/crs/oracle/product/10/crs/jdk/jre//bin/java: error while loading

shared libraries: libpthread.so.0: cannot open shared object file:

No such file or directory

解决方法:

Remember to re-edit these files on all nodes:

<CRS_HOME>/bin/vipca

<CRS_HOME>/bin/srvctl

<RDBMS_HOME>/bin/srvctl

<ASM_HOME>/bin/srvctl

after applying the 10.2.0.2 or 10.2.0.3 patchsets, as these patchset will still include those settings unnecessary for OEL5 or RHEL5 or SLES10.  This issue was raised with development and is fixed in the 10.2.0.4 patchsets.

Note that we are explicitly unsetting LD_ASSUME_KERNEL and not merely commenting out its setting to handle a case where the user has it set in their environment (login shell).

$ vi vipca

... ...

Linux) LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

echo $LD_LIBRARY_PATH

echo $CLASSPATH

#Remove this workaround when the bug 3937317 is fixed

arch=`uname -m`

if [ "$arch" = "i686" -o "$arch" = "ia64" ]

then

# LD_ASSUME_KERNEL=2.4.19

# export LD_ASSUME_KERNEL

echo

fi

#End workaround

问题2: 如果遇到这个错误:

# vipca
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]

解决方法:

在CRS_HOME下 运行 oifcfg 命令:

在rac1:

# ./oifcfg setif -global eth0/10.85.10.119:public
# ./oifcfg setif -global eth1/192.168.1.119:cluster_interconnect
# ./oifcfg getif
eth0 10.85.10.119 global public
eth1 192.168.1.119 global cluster_interconnect

在rac2:

/bin # ./oifcfg setif -global eth0/10.85.10.121:public
/bin # ./oifcfg setif -global eth1/192.168.1.121:cluster_interconnect
/bin # ./oifcfg getif
eth0 10.85.10.121 global public
eth1 192.168.1.121 global cluster_interconnect

然后在手工运行vipca添加nodeapps resource即可。

问题3:An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : 11 occurred at PC=0xB7503E29
Function=__libc_free+0x49
Library=/lib/tls/libc.so.6

修改主机名不正确导致的。
RHEL
/etc/sysconfig/network 主机名,如果在/etc/hosts中解析不了。就报这个错误!

8. clusterware 就安装好了.

确认一下.

$ /u01/app/oracle/product/crs/bin/olsnodes -n

rac1pub 1

rac2pub 2

$ ls -l /etc/init.d/init.*

-r-xr-xr-x 1 root root 1951 Oct 4 14:21 /etc/init.d/init.crs*

-r-xr-xr-x 1 root root 4714 Oct 4 14:21 /etc/init.d/init.crsd*

-r-xr-xr-x 1 root root 35394 Oct 4 14:21 /etc/init.d/init.cssd*

-r-xr-xr-x 1 root root 3190 Oct 4 14:21 /etc/init.d/init.evmd*

检查CRS 安装启动情况:用Root用户执行:

$CRS_HOME/bin/crsctl check crs

CSS appears healthy

CRS appears healthy

EVM appears healthy

表明CRS 安装完成,并且启动成功

#./crs_stat -t -v

注:如果clusterware 安装失败,再次运行安装程序,里面可以把之前的安装删除掉,删除之后在进行安装。

三. 安装Oracle 10gR2 database

1. 检查Oracle 的相关包。Oracle 10g 需要如下包

binutils-2.15.92.0.2-10.EL4

compat-db-4.1.25-9

control-center-2.8.0-12

gcc-3.4.3-9.EL4

gcc-c++-3.4.3-9.EL4

glibc-2.3.4-2

glibc-common-2.3.4-2

gnome-libs-1.4.1.2.90-44.1

libstdc++-3.4.3-9.EL4

libstdc++-devel-3.4.3-9.EL4

make-3.80-5

pdksh-5.2.14-30

sysstat-5.0.5-1

xscreensaver-4.18-5.rhel4.2

libaio-0.3.96

To see which versions of these packages are installed on your system, run the following command:

rpm -q binutils compat-db control-center gcc gcc-c++ glibc glibc-common /
gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio openmotif21

2. 在Xmanager 中用oracle用户,运行database的runInstaller

3. ORACLE安装目录指定到 /u01/app/oracle/product/10.2.0/db_1

4. 把2个node选择上

5. 选择 Install database Software only

6. 会要求你用完全的root权限运行 root.sh ,分别在2个node上一一运行

7. 安装完毕

四. netca 创建监听

注:创建数据库过程应该遵循这个顺序: 先配置监听, 再配置ASM 实例, 最后创建数据库实例, 这样可以减少出错的概率。

1. oracle 用户在一个node上运行 netca

2. 选择所有node

3. 选择 Listener configuration

4.添加一个LISTEN, 1521 port

然后结束配置

监听配置成功后, 2个结点上的Listener 都会坐位Application Resource 注册到CRS中, 这样CRS 就可以监控Listener 的运行状态。 我们可以通过 crs_stat -t -v  查看Listener 状态。

五. 创建ASM 实例

1. 运行DBCA 命令

2. 选择 configure Automatic Storage Management, 来创建ASM 实例

3. 选择所有结点

4. 输入密码和参数文件位置

如:/u02/oradata/orcl/dbs/spfile+ASM.ora

5. 修改asm 参数: asm_diskstring = ORCL:VOL*, 这样能让Oracle自动发现这些硬盘

6. ASM 实例创建完后,用Create New 来创建ASM 磁盘组。 我们用VOL1来创建一个DATA 组, VOL2 创建FLASH_RECOVERY_AREA组。

注: Redundancy 一般选external 就是也就是不考虑冗余,假如选normal 则是mirror, 至少要一个FailGroup选High 就是triple mirror,3倍镜像,需要三个FailGroup

7.  创建完成后,能看到组的状态是Mount, ASM 组必须mount之后才能使用。

ASM 的相关信息参考blog:

Oracle ASM 详解

http://blog.csdn.net/tianlesoftware/archive/2010/02/21/5314541.aspx

六. 配置dbca创建数据库

1. 用oracle用户运行 dbca

2. 选择custom database

3. 输入数据库的全局名,比如rac

4. 输入系统的角色建立密码

5. 选择ASM 来存储, 分别选择我们刚创建的DATA 和FLASH_RECOVERY_AREA 组

6. Database Services 这里,你选择Add你一个新的service, 随便叫名字,比如oltp

然后选择 TAF Policy,是Basic。 这个服务在RAC 的Failover中会用到,如果在这里没有配置,也可以通过dbca命令, 选择 Services Management 来进行配置。 具体参考Blog:

Oracle RAC Failover 详解

http://blog.csdn.net/tianlesoftware/archive/2010/03/03/5340788.aspx

7. 开始创建数据库

七. 检查RAC 运行状态

1.用oracle用户login, 运行

[oracle@rac1 bin]$ ./srvctl status database -d rac

Instance rac1 is running on node rac1

Instance rac2 is running on node rac2

2. $ srvctl status service -d rac -s rac

Service orcltest is running on instance(s) orcl2, orcl1

3. [oracle@rac1 bin]$ ./srvctl status nodeapps -n rac1

VIP is running on node: rac1

GSD is running on node: rac1

Listener is running on node: rac1

ONS daemon is running on node: rac1

4. [oracle@rac1 bin]$ ./srvctl status asm -n rac1

ASM instance +ASM1 is running on node rac1.

5. [root@rac2 bin]# ./crs_stat -t

Name           Type           Target    State     Host

------------------------------------------------------------

ora.rac.db     application    ONLINE    ONLINE    rac1

ora....orcl.cs application    ONLINE    ONLINE    rac1

ora....ac1.srv application    ONLINE    ONLINE    rac1

ora....ac2.srv application    ONLINE    ONLINE    rac2

ora....c1.inst application    ONLINE    ONLINE    rac1

ora....c2.inst application    ONLINE    ONLINE    rac2

ora....SM1.asm application    ONLINE    ONLINE    rac1

ora....C1.lsnr application    ONLINE    ONLINE    rac1

ora.rac1.gsd   application    ONLINE    ONLINE    rac1

ora.rac1.ons   application    ONLINE    ONLINE    rac1

ora.rac1.vip   application    ONLINE    ONLINE    rac1

ora....SM2.asm application    ONLINE    ONLINE    rac2

ora....C2.lsnr application    ONLINE    ONLINE    rac2

ora.rac2.gsd   application    ONLINE    ONLINE    rac2

ora.rac2.ons   application    ONLINE    ONLINE    rac2

ora.rac2.vip   application    ONLINE    ONLINE    rac2

6. 运行 sqlplus /nolog

SQL> connect /as sysdba

SQL> SELECT inst_id , instance_number inst_no , instance_name inst_name

, parallel , status , database_status db_status , active_state state

, host_name host FROM gv$instance ORDER BY inst_id;

INST_ID INST_NO INST_NAME  PAR STATUS  DB_STATUS STATE     HOST

------- -------- --------- --- -------- -------- --------- ------

1        1      rac1       YES OPEN     ACTIVE  NORMAL    rac1

2        2      rac2        YES OPEN     ACTIVE  NORMAL    rac2

7.客户端Failover测试

7.1  修改C:/windows/system32/drivers/etc/hosts 文件,添加如下内容

10.85.10.119 rac1

10.85.10.121 rac2

10.85.10.122 rac1-vip

10.85.10.123 rac2-vip

7.2 修改tnsnames.Ora 文件,增加一下内容:

RAC =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))

(LOAD_BALANCE=YES)

(

CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=RAC)

(

FAILOVER_MODE=

(TYPE=session)

(METHOD=basic)

(RETRIES=180)

(DELAY=5)

)

)

)

)

7.3 客户端用sqlplus 连接数据库

C:/Documents and Settings/Administrator>sqlplus system/admin@rac

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 2月 27 02:06:40 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> select instance_name from V$instance;

INSTANCE_NAME

--------------------------------

rac2

7.4 关闭rac2 数据库

[oracle@rac2 ~]$ export ORACLE_SID=rac2

[oracle@rac2 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Feb 27 02:58:48 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> select instance_name from v$instance;

INSTANCE_NAME

----------------

rac2

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

7.5 在客户段再次查询,自动切换到了rac1

SQL> select instance_name from V$instance;

INSTANCE_NAME

--------------------------------

rac1

八. RAC 的卸载

卸载分为几个部分:database的卸载和clusterware(10.2版本说法)的卸载(10.1 版本称为CRS:cluster ready service)。

oracle database的卸载可以利用很多方法-粗野的和温柔的,我这里利用dbca去卸载即可。

database的卸载会把所有节点的instance删除掉,并把唯一的database删除。

卸载database的第二步骤是把所有节点的listener卸载,可以利用netca卸载即可。

最后卸载clusterware,可以用Clusterware 的安装程序来卸载,也可以利用脚本进行:

$ORA_CRS_HOME/install/rootdelete.sh -help

对本地节点和远程节点使用不用的命令,详细参考帮助。

[root@rac1 install]# ./rootdelete.sh --help

Usage: rootdelete [-help] [local|remote] [nosharedvar|sharedvar] [sharedhome|nosharedhome] [-downgrade [-version <version>]]

/-help: print this message

local: if this node is the node where OUI is to be run to deinstall, otherwise use 'remote'

sharedvar: OCR is on a shared path, otherwise use 'nosharedvar'

sharedhome: CRS home is on a shared path, otherwuse use 'nosharedhome'

/-downgrade: Oracle clusterware and OCR will be reset for downgrade

/-version <version>: OCR location file will reset for downgrade to specified version, default: 10.1

[root@rac1 install]# ./rootdelete.sh local sharedvar sharedhome -downgrade

[root@rac1 install]# ./rootdelete.sh remote sharedvar sharedhome -downgrade

最后在本地节点执行

$ORA_CRS_HOME/install/rootdeinstall.sh

即可。

脚本执行是比较安全的方式,完成之后把相关目录删除即可完成clusterware的卸载。

补充:RAC 安装的相关问题解决方法:

问题一:

安装好RAC后,在用DBCA建库时选择ASM做为存储方案时,有时候会报错说ASM是单实例环境,不是RAC环境,这样就无法继续建库下来,出错信息如下:

The ASM instance configured on the local node is a single-instance ASM.To create a single-instance database using this ASM instance ,restart DBCA and select the single-instance database option ,to create a RAC database using this ASM instance,convert it to RAC ASM first.

这个错误一般是发生在重装clusterware和database后,这样无论怎么样重启DBCA运行都会报同样的错。具体的解决办法便是在/etc/oratab里面的关于ASM的记录:+ASM1:/u01/app/oracle/product/10.2.0/db_1:N这么一行删除掉,再接着建库就可以了。

问题二:

创建ASM时报:ORA-12547:TNS:lost contact

解决方法:

$ cd $ORACLE_HOME/rdbms/lib

$ make -f ins_rdbms.mk ioracle

问题三

1.counld not start cluster stack. This must be resolved before any OCFS2 filesystem can be mounted

This problem can be caused by different version of ocfs2 lib and redhat kernel.selinux is allowed is another possible reason.

tail -n100 /var/log/messages:

May 18 12:10:27 rac1 kernel: SELinux: initialized (dev configfs, type configfs), not configured for labeling

May 18 12:10:27 rac1 kernel: audit(1211083827.759:7): avc:  denied  { mount } for  pid=12346 comm="mount" name="/" dev=configfs ino=44504 scontext=root:system_r:initrc_t tcontext=system_u:object_r:unlabeled_t tclass=filesystem

May 18 12:10:30 rac1 dbus: Can't send to audit system: USER_AVC pid=2642 uid=81 loginuid=-1 message=avc:  denied  { send_msg } for  scontext=root:system_r:unconfined_t tcontext=user_u:system_r:initrc_t tclass=dbus

May 18 12:11:05 rac1 last message repeated 7 times

May 18 12:12:10 rac1 last message repeated 13 times

[root@rac1 /]#vi /etc/selinux/config

#SELINUX=enforcing

SELINUX=disabled

[root@rac1 /]# setenforce 0

setenforce: SELinux is disabled

问题四

2.The cluster stack has been started. It needs to be running for any clustering functionality to happen.

Please run "/etc/init.d/o2cb enable" to have it started upon bootup.

o2cb_ctl: Unable to access cluster service while creating node Could not add node rac1

[root@rac1 init.d]# ./o2cb enable

Writing O2CB configuration: OK

Starting O2CB cluster ocfs2: Failed

Cluster ocfs2 created

o2cb_ctl: Configuration error discovered while populating cluster ocfs2.  None of its nodes were considered local.

A node is considered local when its node name in the configuration matches this machine's host name.

Stopping O2CB cluster ocfs2: OK

[root@rac1 ocfs2]# pwd

/etc/ocfs2

[root@rac1 ocfs2]# ls

cluster.conf

[root@rac1 ocfs2]# mv cluster.conf cluster.conf.Bak

问题5: 在CRS安装时,最后执行root.sh时,后执行的节点上无法成功,提示:
# ./root.sh
WARNING: directory '/u01/app/oracle/product/10.2.0' is not owned by root
WARNING: directory '/u01/app/oracle/product' is not owned by root
WARNING: directory '/u01/app/oracle' is not owned by root
WARNING: directory '/u01/app' is not owned by root
WARNING: directory '/u01' is not owned by root
Checking to see if Oracle CRS stack is already configured
Setting the permissions on OCR backup directory
Setting up NS directories
Failed to upgrade Oracle Cluster Registry configuration
另外有一种提示为:PRIF-10: failed to initialize the cluster registry 
解决方法:关闭共享磁盘的锁定属性
SSA或者FASTT系列盘阵关闭磁盘锁定用:/usr/sbin/chdev -l hdiskn -a reserve_lock=no
ESS,EMC,HDS,CLARIION系列盘阵关闭磁盘锁定用:/usr/sbin/chdev -l hdiskn -a reserve_policy=no_reserve

在虚拟机上就是添加参数. disk.locking = "false"

转载于:https://www.cnblogs.com/hibernate315/archive/2010/02/27/2399318.html

OCFS2+ASM 的RAC安装文档相关推荐

  1. Oracle 12c RAC 安装文档

    首先,谢谢原作者:此文为转载的文章,现将原地址贴出如下: Oracle 12c RAC 安装文档​www.cnblogs.com/leohahah/p/9488963.html 更多精彩Zabbix文 ...

  2. Redhat 5.4 + ASM + RAW+ Oracle 10g RAC 安装文档

    基于Redhat 5 和redhat 4 的RAC 区别在对raw的处理上. 之前做的是redhat 4.7 的 RAC 实验. 准备做一个Redhat 5.4 的环境. RAC 的一些理论东西: h ...

  3. Openfiler + Redhat 5.4 Oracle 11gR2 RAC 安装文档

    Oracle 11gR2 RAC 的安装. 这个实验采用的架构: 虚拟机VMServer 2.0 + REDHAT 5.4 +Oracle 11gR2+openfiler存储 + DNS server ...

  4. Oracle11.2.0.4 RAC安装文档

    1 环境配置 参考官方文档<Grid Infrastructure Installation Guide for Linux> 1.1 软件环境 操作系统: [root@howe1 ~]# ...

  5. RAW+ASM 的RAC 10g 安装文档

    RAW+ASM 的RAC 10g 安装文档 http://blog.csdn.net/tianlesoftware/article/details/5332909   有关RAC 的一些概念性和原理性 ...

  6. Redhat 5.4 Oracle 10g RAC Openfiler+Multipath + RAW+ ASM 安装文档

    在Redhat 平台上RAC 装过多次. 本来也没打算整理这篇文章. 但是在搭建这个环境的过程中有了一下新的体会. 而且RAC 架构也不一样. 搭建之后对RAC 也有更深的理解. 实验平台配置信息: ...

  7. ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档

    ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报  分类: Oracle RA ...

  8. 转自 David dai linux平台 oracle 数据库 安装文档

    Oracle 官方的安装文档 http://download.oracle.com/docs/cd/B28359_01/install.111/b32002/toc.htm 一. 安装相关包  1.1 ...

  9. 达梦数据库DSC集群安装文档

    达梦数据库DSC集群安装文档 一. DSC安装准备工作 1 1.1. 创建安装用户 2 1.2. 配置udev存储 2 二. DMDSC 搭建 8 三. 搭建DW容灾架构 39 修改dm.ini,数据 ...

最新文章

  1. 负载均衡算法-最少连接数均衡
  2. python程序能不能在安卓手机上跑-如何在手机上运行Python与及编程
  3. CCKS-2017 行业知识图谱构建与应用-下篇
  4. 牛客一 K-Knowledge Test about Match
  5. java找到项目下的某个文件夹_servlet 得到 JavaWeb项目下某文件夹的路径
  6. select隐藏_数仓|几种SQL隐藏的错误,你遇到过吗?
  7. 【无取巧解法,易于理解!】剑指 Offer 26. 树的子结构
  8. 用java编程实现集合的交、并、差和补运算
  9. A customized combobox with JQuery
  10. 六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)
  11. 什么是Scale Up和Scale Out?
  12. Redlock 算法:Redis 实现分布式锁(译)
  13. python机器学习库sklearn——神经网络
  14. 基于JMP的独立样本t检验、配对t检验、单样本t检验
  15. Echarts堆叠柱状图显示百分比
  16. 转载:MATLAB中怎么表示对数函数及e
  17. easypanel b.php,KangleWebServer Easypanel API接口详解
  18. 几种求函数最值的算法
  19. The Rust Programming Language - 第11章 测试 - 11.1 编写测试
  20. ShowDoc在线文档工具的使用

热门文章

  1. h5居中loading_Html5新增标签与样式及让元素水平垂直居中
  2. 【收藏备用】服务器基本故障及排查方法
  3. 简易linux修改ip,让Linux修改IP、DNS等可以更简单
  4. Seata RPC 模块的重构之路
  5. 重磅 | 阿里开源首个 Serverless 开发者平台 Serverless Devs
  6. Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31
  7. 函数计算自动化运维实战2 -- 事件触发 eip 自动转移
  8. java win7 jdk_WIN7下配置JDK并运行JAVA的过程
  9. 云南省2021高考成绩查询时间,2021云南高考成绩什么时候几点可以查
  10. python中执行sql语句_Python执行sql语句