千家信息网

多种虚拟机环境下安装Oracle11g RAC

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,1、安全环境与网络规划1.1、安装环境RAC节点操作系统:Linux 6.4 x8664Cluster software:Oracle Grid Infrastructure 11gr2(11.2.0
千家信息网最后更新 2024年11月23日多种虚拟机环境下安装Oracle11g RAC

1、安全环境与网络规划

1.1、安装环境

RAC节点操作系统:Linux 6.4 x8664
Cluster software:Oracle Grid Infrastructure 11gr2(11.2.0.4)
Oracle Database software:Oracle11gr2(11.2.0.4)
共享存储:ASM

1.2、网络规划

节点名称 Public IP Private IP Virtual IP SCAN 名称 SCAN IP

注意:Oracle11g新增SCAN-IP,为VIP的一个池概念

1.3、Oracle软件组

1.4、RAC节点

1.5、存储组件

2、创建虚拟机

2.1、VMware vSphere

以administrator用户登录虚拟化主机:



对主机右键点击"新建虚拟机"

选择自定义配置,下一步

给虚拟机命名 rac1,下一步

选择虚拟机存放位置,下一步

选择虚拟机文件存放位置(尽量放于共享存储上,空间大且防止数据丢失),下一步

选择高版本,下一步

选择操作系统为Linux,版本为Red Hat Enterprise Linux 6(64位),下一步

配置CPU、内存,下一步


选择网卡,配置两块网卡,一块作为Public,另一块作为Private,下一步


选择SCSI驱动器类型:LSI Logic并行,下一步

选择创建新磁盘,下一步

配置磁盘大小,下一步

上述三个选项的解释:

选择虚拟设备节点,默认为SCSI(0:0),选择模式为非独立,下一步

选择在虚拟机创建之前编辑选项,继续

编辑光驱设备,选择ISO文件,完成

查看新建虚拟机配置

以相同方式创建另一个节点rac2。

2.2、VMware Workstation

新建虚拟机rac1,选择自定义,下一步


选择安装操作系统ISO,下一步

命名虚拟机,选择存放位置,下一步


配置内存大小,下一步

选择网络类型为桥接网络,下一步

选择I/O控制器类型为LSI Logic,下一步

选择磁盘类型为SCSI,下一步


配置磁盘大小,并选择将虚拟磁盘拆分多个文件,下一步

指定磁盘文件,下一步


以相同方式创建另一个节点rac2。

2.3、Virtual BOX

新建虚拟机rac1,命名虚拟机,选择系统类型为Linux,版本为Red Hat (64bit),下一步

配置内存大小,下一步

创建虚拟硬盘,创建

选择虚拟磁盘文件类型,下一步

选择动态分配,下一步

选择文件位置和大小,下一步

创建完成

设置虚拟机参数

选择存储,在右侧属性,点击分配光驱右边的 ,选择安装操作系统ISO文件


以相同方式创建另一个节点rac2。

3、安装系统

3.1、安装系统(两节点)

系统安装过程都是一致,因此不予详述。本文只针对安装过程中部分容易出错的地方简述
选择基本存储设备

提示是否丢弃所有的数据,yes,discard any data

选择自定义分区,Create Custom Layout

进入分区界面

选择标准分区模式,Standard Partition

分别创建虚拟内存(swap)、boot分区、/分区



分区结果

选择确定格式化

选择写入磁盘

选择默认即可

选择系统模式,Software Development Workstation,Customize Later,其他默认

开始安装系统

安装后,提示重启系统,并有一系列配置,其中启动Kdump

根据提示,再次重启系统,系统安装完毕!

3.2、配置网络(两节点)

此步骤,需要虚拟机有两块网卡,分别为Public和Private网卡。

使用root用户登录虚拟机,右键,选择Edit Connection

按以下步骤操作,分别配置两块网卡IP为上表对应项



3.3、删除自动生成的虚拟网卡(两节点)

所谓虚拟网卡,即执行 ifconfig命令列出的virbr0,如图

执行以下命令来删除该虚拟网卡
virsh net-list
virsh net-destroy default
virsh net-undefine default
service libvirtd restart

再次使用ifconfig命令查看,该虚拟网卡已不存在

3.4、测试网络(两节点)

1、物理机ping两台虚拟机rac1、rac2的Public IP
2、rac1节点 ping rac2节点的Public IP和Private IP
3、rac2节点 ping rac1节点的Public IP和Private IP
以上三步完全可以ping通即可。

4、添加共享存储

4.1、VMware vSphere

4.1.1、配置rac1节点

关闭rac1节点,右键rac1节点选择编辑设置,进入配置界面,点击添加

选择硬盘,下一步

创建新的虚拟磁盘

配置磁盘大小,选择厚置备置零(集群专用),指定磁盘的存放位置,下一步

驱动器设备选择SCSI 1:0,模式选择独立(集群必须选择此项),下一步


在虚拟机属性中,选择刚添加的SCSI controller 1 驱动器,配置其为物理模式(用于支持共享),以保证rac1、rac2节点的共享访问

重复执行上述步骤,添加另外两块磁盘,将其驱动器设备选择为SCSI 1:1;SCSI 1:2。
添加3块共享磁盘的rac1节点配置信息如下:

4.1.2、配置rac2节点

关闭rac2节点,右键rac2节点选择编辑设置,进入配置界面,点击添加

选择硬盘,下一步

选择已有虚拟磁盘,下一步

选择指定的存储设备,此处需要注意:选择在rac1节点中创建的第一块磁盘

驱动器设备选择SCSI 1:0,模式选择独立,下一步

同rac1节点一样,在rac2节点属性中,选择刚添加的SCSI controller 1驱动器,配置其为物理模式用于共享

重复执行以上步骤,添加剩余的2块磁盘。注意,驱动器编号要依次选择SCSI 1:1、SCSI 1:2。
添加3块共享磁盘的rac2节点配置信息如下:

4.2、VMware Workstation

4.2.1、物理机中添加共享磁盘

vmware-vdiskmanager.exe -c -s 5G -a lsilogic -t 2 "d:\Virtual Machines\RAC\shared"\asm1.vmdk
vmware-vdiskmanager.exe -c -s 5G -a lsilogic -t 2 "d:\Virtual Machines\RAC\shared"\asm2.vmdk
vmware-vdiskmanager.exe -c -s 20G -a lsilogic -t 2 "d:\Virtual Machines\RAC\shared"\asm3.vmdk

注意:-a 指定磁盘类型 -t 2表示直接划分一个预分配空间的文件。

4.2.2、关闭节点,用记事本编辑vmx文件,例如:rac1.vmx(两节点)

添加如下内容:
#shared disks configure
disk.EnableUUID = "TRUE"
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.maxUnsyncedWrites = "0"

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsil.sharedBus = "VIRTUAL"

scsi1:0.present = "TRUE"
scsi1:0.mode = "independent-persistent"
scsi1:0.fileName = "D:\Virtual Machines\RAC\shared\asm1.vmdk"
scsi1:0.deviceType = "disk"
scsi1:0.redo = ""

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.fileName = "D:\Virtual Machines\RAC\shared\asm2.vmdk"
scsi1:1.deviceType = "disk"
scsi1:1.redo = ""

scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.fileName = "D:\Virtual Machines\RAC\shared\asm3.vmdk"
scsi1:2.deviceType = "disk"
scsi1:2.redo = ""
注意:
1、 此处添加了3块共享盘,因此添加3段内容scsi1:0,scsi1:1,scsi1:2,也即要增加几块盘,就要增加相应段数的内容
2、 scsi 1:.fileName=后面的内容要与你在物理主机使用vmware-vdiskmanager.exe创建的磁盘存储位置一致
3、 重启两节点,查看虚拟机配置,确认共享磁盘文件加载成功(不重启系统可能不能识别出磁盘)

4.3、Virtual BOX

4.3.1、配置rac1节点

方法1:
rac1节点的配置也中,选择存储,选择"SATA 控制器",然单击"添加硬盘"图标

创建新的磁盘,create new disk

选择默认VDI磁盘模式

选择固定大小(共享磁盘必须选择此选项),下一步

配置共享磁盘存储路径及大小

新建的磁盘,已经连接到rac1虚拟机
选择此新磁盘。

单击"修改(modify)"图标并选择"Shareable"

重复以上步骤,创建另外2块磁盘。
最后,增加磁盘后的配置信息

方法2:
1、在物理主机命令行中执行以下语句,创建磁盘
VBoxManage.exe createhd -filename asm1.vdi -size 5120 -format VDI -variant Fixed
VBoxManage.exe createhd -filename asm2.vdi -size 5120 -format VDI -variant Fixed
VBoxManage.exe createhd -filename asm3.vdi -size 204800 -format VDI -variant Fixed

2、连接rac1虚拟机
VBoxManage.exe storageattach rac1 --storagectl "SATA 控制器" --port 1 --device 0 --type hdd --medium asm1.vdi --mtype shareable
VBoxManage.exe storageattach rac1 --storagectl "SATA 控制器" --port 2 --device 0 --type hdd --medium asm2.vdi --mtype shareable
VBoxManage.exe storageattach rac1 --storagectl "SATA 控制器" --port 3 --device 0 --type hdd --medium asm3.vdi --mtype shareable
3、设置磁盘共享
VBoxManage.exe modifyhd asm1.vdi --type shareable
VBoxManage.exe modifyhd asm2.vdi --type shareable
VBoxManage.exe modifyhd asm3.vdi --type shareable
4、查看rac1配置信息

4.3.2、配置rac2节点

rac2节点只需配置磁盘驱动器与虚拟机的连接即可,如下:
VBoxManage.exe storageattach rac2 --storagectl "SATA 控制器" --port 1 --device 0 --type hdd --medium asm1.vdi --mtype shareable
VBoxManage.exe storageattach rac2 --storagectl "SATA 控制器" --port 2 --device 0 --type hdd --medium asm2.vdi --mtype shareable
VBoxManage.exe storageattach rac2 --storagectl "SATA 控制器" --port 3 --device 0 --type hdd --medium asm3.vdi --mtype shareable

5、实现共享存储

5.1、划分共享磁盘(单节点)

fdisk -l

三个分区作用解释:
fdisk /dev/sdb --作为ocr和voting disk存放文件
fdisk /dev/sdc --存放快速恢复区文件
fdisk /dev/sdd --存放数据库文件
fdisk /dev/sdb[c|d]
依次n → p → 1 → Enter → Enter → w,实现分区

fdisk -l --再次查看并在rac2节点查看,确保与rac1完全一致

分区完毕,不要对新加磁盘进行格式化,保持裸设备。

5.2、配置ASM磁盘(两节点)

使用udev管理配置磁盘方式
rpm -qa|grep udev --查看是否安装udev

执行以下命令,获取scsi id信息
scsiid -g -u -d /dev/sdb [c|d]
36000c292f99f2349911c3766f3cc53d7
36000c293f4c9f2c1fdd38a63e5861ad3
36000c2994d5eda8fbefc5922b14ab651

编辑udev配置文件,添加rules文件(/etc/udev/rules.d/)并授权添加以下参数。
方法1:
vi /etc/udev/rules.d/99-x-asmdisk.rules
KERNEL=="sdb1", BUS=="scsi", PROGRAM="scsiid -g -u -d /dev/$parent",RESULT=="36000c292f99f2349911c3766f3cc53d7", NAME="asmdiskOCR", OWNER:="grid", GROUP:="dba",MODE="0660"

KERNEL=="sdc1", BUS=="scsi", PROGRAM="scsiid -g -u -d /dev/$parent",RESULT=="36000c293f4c9f2c1fdd38a63e5861ad3", NAME="asmdiskDATA", OWNER:="grid", GROUP:="dba",MODE="0660"

KERNEL=="sdd1", BUS=="scsi", PROGRAM="scsiid -g -u -d /dev/$parent",RESULT=="36000c2994d5eda8fbefc5922b14ab651", NAME="asmdiskFRA", OWNER:="grid", GROUP:="dba",MODE="0660"

注意:
1、 一行为一条规则
2、 , 与下一个关键词要有空格
3、 GROUP:=后面不确定值,dba与asmadmin都可以
启动udev
startudev

ls /dev/asmdisk

方法2:
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
直接在命令行下输入并执行以下循环
for i in b c d;
do
echo "KERNEL==\"sd\", BUS==\"scsi\", PROGRAM==\"/sbin/scsiid --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"/sbin/scsiid --whitelisted --replace-whitespace --device=/dev/sd$i\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >>/etc/udev/rules.d/99-oracle-asmdevives.rules
done
注意:此处的b、c、d是sdb、sdc、sdd去掉sd
启动udev
startudev

ls /dev/asm

6、配置Linux系统

6.1、用户组及用户设置(两节点,root用户)

6.1.1、创建Oracle软件组

groupadd -g 601 oinstall
groupadd -g 602 dba
groupadd -g 603 oper
groupadd -g 604 asmadmin
groupadd -g 605 asmdba
groupadd -g 606 asmoper

6.1.2、创建grid、oracle用户

useradd -u 601 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 602 -g oinstall -G dba,oper,asmdba oracle

6.1.3、为grid、oracle用户设置密码

passwd grid
passwd oracle

6.2、主机名IP映射文件设置(两节点)

vi /etc/hosts --加入以下内容
#public:
192.168.2.231 rac1
192.168.2.232 rac2

#vip:
192.168.2.233 rac1-vip
192.168.2.234 rac2-vip

#priv
1.1.6.231 rac1-priv
1.1.6.232 rac2-priv

#SCAN
192.168.2.235 rac-scan

6.3、配置Linux内核参数(两节点)

vi /etc/sysctl.conf --加入以下内容
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.iplocalportrange = 9000 65500
net.core.rmemdefault = 262144
net.core.rmemmax = 4194304
net.core.wmemdefault = 262144
net.core.wmemmax = 1048576

sysctl -p --使以上设置生效

6.4、设置grid、oracle用户设置shell limits(两节点)

vi /etc/security/limits.conf --加入以下内容
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768

vi /etc/pam.d/login --加入以下内容
session required pamlimits.so

6.5、创建Oracle Inventory Directory(两节点)

mkdir -p /u01/app/oraInventory
chown -R grid.oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory

6.6、创建Oracle Grid Infrastructure Home目录(两节点)

mkdir -p /u01/app/grid
mkdir -p /u01/app/grid/crs
mkdir -p /u01/app/grid/11.2.0
chown -R grid.oinstall /u01/app/grid
chmod -R 775 /u01/app/grid

6.7、创建Oracle RDBMS Home目录(两节点)

mkdir -p /u01/app/oracle
chown -R oracle.oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle

mkdir -p /u01/app/oracle/product/11.2.0/db1
chown -R oracle.oinstall /u01/app/oracle/product/11.2.0/db1
chmod -R 775 /u01/app/oracle/product/11.2.0/db1

6.8、安装相应系统支持包(两节点64&32bit)

binutils
compat-libstdc++-33
elfutils-libelf
elfutils-libelf-devel
gcc gcc-c++
glibc
glibc-common
glibc-devel
glibc-headers
ksh
libaio
libaio-devel
libgcc
libstdc++
libstdc++-devel
make
numactl-devel
sysstat
unixODBC
unixODBC-devel

方法1:
拷贝系统光盘内容到本地目录
mkdir /yum/
cp /media/ /yum/
删除/etc/yum.repos.d/下内容并创建yum.repo
vi /etc/yum.repos.d/yum.repo
[yum]
name=yum
baseurl=file:///yum/
enabled=1

方法2:
rpm -ivh -nodeps -force rpm

6.9、修改grid、oracle用户环境变量(两节点)

Su - grid --切换到grid用户,修改环境变量
Vi .bashprofile --删除重复内容,加入以下内容
export ORACLEHOSTNAME=rac1(rac2)
export ORACLEUNQNAME=rac
export ORACLEBASE=/u01/app/grid/crs
export ORACLEHOME=/u01/app/grid/11.2.0
export ORACLESID=+ASM1(+ASM2)
export ORACLETERM=xterm
export PATH=$ORACLEHOME/bin:/usr/sbin:$PATH
export LDLIBRARYPATH=$ORACLEHOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLEHOME/JRE:$ORACLEHOME/jlib:$ORACLEHOME/rdbms/jlib
export TMP=/tmp
export TMPDIR=$TMP

Su - oracle --切换到oracle用户,修改环境变量
Vi .bashprofile --删除重复内容,加入以下内容
export ORACLEHOSTNAME=rac1(rac2)
export ORACLEUNQNAME=rac
export ORACLEBASE=/u01/app/oracle
export ORACLEHOME=$ORACLEBASE/product/11.2.0/db1
export ORACLESID=rac1(rac2)
export ORACLETERM=xterm
export PATH=$ORACLEHOME/bin:/usr/sbin:$PATH
export LDLIBRARYPATH=$ORACLEHOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLEHOME/JRE:$ORACLEHOME/jlib:$ORACLEHOME/rdbms/jlib
export TMP=/tmp
export TMPDIR=$TMP

7、关闭防火墙

7.1、设置SELinux(两节点)

1、立即生效
setenforce 0 --立即关闭SELinux
getenforce --查看SELinux状态
2、永久生效
vi /etc/selinux/config --关闭selinux
替换SELinux=enforcing为SELinux=disabled

7.2、关闭防火墙iptables(两节点)

service iptables save
service iptables stop --关闭iptables
chkconfig iptables off --设置iptables不随系统启动
chkconfig --list iptables --查看防火墙状态列表

8、设置grid、oracle用户ssh等效性

ssh等效性操作过程一样,因此只需切换到相应用户执行即可

su - grid --两节点
cd /home/grid
rm -rf ~/.ssh
mkdir ~/.ssh
chmod 700 ~/.ssh

ssh-keygen -t rsa
ssh-keygen -t dsa

配置同步
rac1节点
cat ~/.ssh/idrsa.pub >> ~/.ssh/authorizedkeys
cat ~/.ssh/iddsa.pub >> ~/.ssh/authorizedkeys
scp ~/.ssh/authorizedkeys rac2:~/.ssh/authorizedkeys

rac2节点
cat ~/.ssh/idrsa.pub >> ~/.ssh/authorizedkeys
cat ~/.ssh/iddsa.pub >> ~/.ssh/authorizedkeys
scp ~/.ssh/authorizedkeys rac1:~/.ssh/authorizedkeys

检测连通性 --两节点
ssh racdb1 date
ssh racdb2 date
ssh racdb1-priv date
ssh racdb2-priv date
注意:第一次询问是否要连接,输入yes即可。

9、时钟同步

9.1、使用Linux系统的NTP服务同步时钟(两节点)

vi /etc/ntp.conf --主节点rac1加入以下内容
Server 127.127.1.0
Fudge 127.127.1.0 stratum 11
Broadcastdelay 0.008

vi /etc/ntp.conf --其他节点rac2加入以下内容
Server 192.168.2.231 prefer
Driftfile /var/lib/ntp/drift
Broadcastdelay 0.008

vi /etc/sysconfig/ntpd --配置NTP服务
SYNCHWCLOCK=yes
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

/etc/init.d/ntpd restart --启动NTP服务
chkconfig ntpd on --设置NTP服务随系统启动
netstat -an |grep 123 --确保该端口以udp方式开放
ntpstat --查看NTP服务状态

9.2、使用oracle集群软件ctss服务同步时钟(两节点)

11G R2 默认有自己的时间同步机制,没有NTP也是可以的。有NTP的话ctss应该一直运行观察模式的。使用集群时间同步服务在集群中提供同步服务,需要卸载网络时间协议 (NTP) 及其配置。
service ntpd stop
chkconfig ntpd off
mv /etc/ntp.conf /etc/ntp.conf.original --有/etc/ntp.conf这个文件,ctss是不会启用的
rm /var/run/ntpd.pid --此文件保存NTP后台程序的pid

10、安装前准备

本操作需要两节点分别执行!!

上传安装文件,本次安装的是Oracle 11.2.0.4版本,共3个安装包,其中1、2是database包,3是grid包。

分别解压3个包,解压后产生两个目录/setup/database、/setup/grid
注意:rac2节点只上传grid包,解压即可。

在两个rac节点上安装操作系统程序包cvuqdisk(安装包在/setup/grid/下)。如果没有cvuqdisk,集群验证实用程序就无法发现共享磁盘(/dev/asm),且在安装后期会收到"Package cvuqdisk not installed"的错误。

root用户下安装cvuqdisk-1.0.9-1.rpm包
export CVUQDISKGRP=oinstall
cd /setup/grid/rpm
rpm -ivh cvuqdisk-1.0.9-1.rpm

su - grid --切换到grid用户
cd /setup/grid
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose > 1.log --输入1.log,方便查看

如有报错,则执行下面命令后再次执行此命令
/tmp/CVU11.2.0.1.0grid/runfixup.sh
rm -rf /tmp/bootstrap
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -fixup -verbose
注意:以上命令执行结果中,提示网络问题、时间同步、DNS问题可忽略!!!

./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose
注意:
1、 两条CVU检查命令的结果均为passed才能继续安装(网络、时间、DNS问题可忽略)。
2、 此时要保证两节点4个IP(Public、Private)可以互相ping通

11、安装Oracle Grid Infrastructure

11.1、安装流程

本操作只需在一个节点分别执行!!

图形界面安装需要在root用户执行如下命令
xhost +

出现如上输出,即可继续进行图形安装。

su - grid
cd /setup/grid
./runInstaller

跳过更新

选择安装选项

选择高级安装(方便设置参数)


Cluster Name可以随意命名;SCAN Name需要与/etc/hosts中配置一致;端口默认1521。不配置GNS

添加节点2信息


网络信息

采用ASM存储管理

配置ocr及voting disk存储磁盘组,此处为磁盘组名为CRS

更改发现路径/dev/asm,以找到共享磁盘

选择规划好的磁盘加入CRS组

设置ASM管理密码(为了方便采用统一设置密码)

密码不符合oracle规则警告,选择yes继续

不适用IPMI


选择grid软件ORACLEBASE及ORACLEHOME(事先配置了.bashprofile,这里会自动找到路径)

选择oraInventory目录(该目录主要存放安装日志等)

安装预检。
如果两节点ll /dev/asm,可以查看到一致内容,则Device Checks for ASM警告可以忽略;
如果使用Linux系统NTP服务,则出现Network Time Protocol警告(使用ctss则不会报警)
可能还会有一些关于DNS、网络的警告,忽略即可

略过警告提醒,选择yes继续

安装概览

安装

提示以root用户分别在两节点执行root.sh脚本。注意最后的提示,需要在安装节点先执行root.sh完毕后,再在其他节点执行(此时可以并行执行)!!!

rac1节点执行完毕

接下来在其他节点执行root.sh

INS-20802是监听错误。其原因是/etc/hosts中配置了SCAN的地址,此步如果可以ping通SCAN-IP,那么忽略此错误即可。点击OK继续,安装grid完成。

11.2、安装后检查

su - grid
检查CRS状态
crsctl check crs

检查Cluster资源
crsstat -t

检查CRS节点信息
olsnodes -n

检查两节点Oracle TNS监听进程
ps -ef|grep lsnr |grep -v 'grep'|grep -v 'ocfs'|awk '{print$9}'

确认针对Oracle Cluster文件的Oracle ASM功能:
su - grid
srvctl status asm -a

11.3、配置ASM磁盘组

grid用户下,执行asmca,添加物理盘到ASM磁盘组


创建Oracle数据存放盘

配置oracle数据盘完成

重复以上操作,创建闪回盘。
最后配置结果:

12、安装Oracle DataBase

12.1、安装流程

本操作只需在一个节点分别执行!!

图形界面安装需要在root用户执行如下命令
xhost +

出现如上输出,即可继续进行图形安装。

su - oracle
cd /setup/database
./runInstaller

不接收Oracle安全更新

安全更新邮箱警告,选择yes继续

跳过更新

选择仅安装数据库软件(Install database software only)

选择全部节点并测试SSH连通性

连通性测试成功

选择语言

选择企业版

选择ORACLEBASE及ORACLEHOME

Oracle管理组

安装预检。出现SCAN警告,其原因是SCAN-IP最多可以配置3个地址并对应域名,此处未使用DNS Name且只配置了一个IP,因此报错,但不会影响系统使用,可以忽略!

忽略SCAN-IP警告,选择yes继续

安装概览

安装

root用户执行root.sh脚本。此处可以在所有节点并行执行(与grid安装最后不同),不过建议依次执行。


安装完成

12.2、安装数据库

此时oracle用户检查监听程序是否存在
su - oracle
lsnrctl status

监听检查完毕,执行以下命令开始创建数据库
dbca

创建数据库

选择安装模板(General Purpose or Transaction Processing)

选择Admin-Managed,填入Global Database Name(.bashprofile中配置的ORACLEUNQNAME)并选择所有节点

选择OEM

设置管理密码(为方便使用统一密码)

选择数据库文件存储区

输入ASM磁盘组管理密码,OK继续

选择闪回区ASM磁盘组,按需启用归档


配置Database的内存,启用自动内存管理

更改字符集(由于在中国需要支持汉字,因此选择ZHS16GBK)

数据库存储概览

是否创建Oracle安装脚本(Generate Database Creation Scripts)

创建数据库概览

创建Oracle安装脚本

创建数据库

创建数据库完毕,OK

13、Oracle RAC维护

Oracle Clusterware的命令集可以分为以下4种:
节点层:osnodes
网络层:oifcfg
集群层:crsctl, ocrcheck,ocrdump,ocrconfig
应用层:srvctl,onsctl,crsstat
注意:CRS维护需要使用grid用户(root用户需要在grid ORACLEHOME/bin目录下执行),建议在grid用户下维护

13.1、节点层

olsnodes -n -i -s

13.2、网络层

13.2.1、列出CRS网卡

oifcfg iflist

13.2.2、获取CRS网卡信息

oifcfg getif

13.3、集群层

13.3.1、检查CRS状态

crsctl check crs

13.3.2、检查CRS 单个服务

crsctl check cssd[crsd|evmd]

13.3.3、检查CRS是否自动启动(root用户)

crsctl disable|enable crs

13.3.4、启动、停止、查看CRS(root用户)

crsctl start|stop crs

13.3.5、查看Votedisk磁盘位置

crsctl query css votedisk

13.3.6、维护Votedisk

以图新方式安装Clusterware的过程中,在配置Votedisk时,如果选择External Redundancy策略。则只能填写一个Votedisk。但是即使使用External Redundancy作为冗余策略,也可以添加多个Vodedisk,只是必须通过crsctl 命令来添加,添加多个Votedisk后,这些Votedisk 互为镜像,可以防止Votedisk的单点故障。
需要注意的是,Votedisk使用的是一种"多数可用算法",如果有多个Votedisk,则必须一半以上的Votedisk同时使用,Clusterware才能正常使用。 比如配置了4个Votedisk,坏一个Votedisk,集群可以正常工作,如果坏了2个,则不能满足半数以上,集群会立即宕掉,所有节点立即重启,所以如果添加Votedisk,尽量不要只添加一个,而应该添加2个。这点和OCR 不一样。OCR 只需配置一个。
添加和删除Votedisk的操作比较危险,必须停止数据库,停止ASM,停止CRS Stack后操作,并且操作时必须使用-force参数。

以下操作均应使用root用户执行
1) 查看当前配置
./crsctl query css votedisk
2) 停止所有节点的CRS:
./crsctl stop crs
3) 添加Votedisk
./crsctl add css votedisk /dev/raw/raw1 -force
注意:即使在CRS 关闭后,也必须通过-force 参数来添加和删除Votedisk,并且-force 参数只有在CRS关闭的场合下使用才安全。 否则会报:Cluter is not a ready state for online disk addition.
4) 确认添加后的情况:
./crsctl query css votedisk
5) 启动CRS
./crsctl start crs

13.3.7、查看OCR状态

ocrcheck

13.3.8、维护OCR

1 查看OCR自动备份
ocrconfig -showbackup

2 使用导出、导入进行备份、恢复模拟案例(root用户)
Oracle 推荐在对集群做调整时,比如增加,删除节点之前,应该对OCR做一个备份,可以使用export 备份到指定文件,如果做了replace或者restore 等操作,Oracle 建议使用cluvfy comp ocr -n all 命令来做一次全面的检查。该命令在clusterware 的安装软件里。
1)首先关闭所有节点的CRS
./crsctl stop crs
2)用root 用户导出OCR内容
./ocrconfig -export /u01/ocr.exp
3)重启CRS
./crsctl start crs
4)检查CRS 状态
./crsctl check crs
5)破坏OCR内容
dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=102400
6)检查OCR一致性
./ocrcheck
7)使用cluvfy 工具检查一致性
./runcluvfy.sh comp ocr -n all
8)使用Import 恢复OCR 内容
./ocrconfig -import /u01/ocr.exp
9)再次检查OCR
./ocrcheck
10)使用cluvfy工具检查
./runcluvfy.sh comp ocr -n all

3 移动OCR 文件位置模拟案例(root用户)
将OCR从/dev/raw/raw1 移动到/dev/raw/raw3上。
1)查看是否有OCR备份
./ocrconfig -showbackup
如果没有备份,可以立即执行一次导出作为备份:
./ocrconfig -export /u01/ocrbackup -s online
2)查看当前OCR配置
./ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 147352
Used space (kbytes) : 4364
Available space (kbytes) : 142988
ID : 610419116
Device/File Name : /dev/raw/raw1
Device/File integrity check succeeded
Device/File not configured
Cluster registry integrity check succeeded
输出显示当前只有一个Primary OCR,在/dev/raw/raw1,没有Mirror OCR。 因为现在只有一个OCR文件,所以不能直接改变这个OCR的位置,必须先添加镜像后在修改,否则会报:Failed to initialize ocrconfig.
3)添加一个Mirror OCR
./ocrconfig -replace ocrmirror /dev/raw/raw4
4)确认添加成功
./ocrcheck
5)改变primary OCR 位置
./ocrconfig -replace ocr /dev/raw/raw3
确认修改成功:
./ocrcheck
6)使用ocrconfig命令修改后,所有RAC节点上的/etc/oracle/ocr.loc 文件内容也会自动同步了,如果没有自动同步,可以手工的改成以下内容。
more /etc/oracle/ocr.loc
ocrconfigloc=/dev/raw/raw1
Ocrmirrorconfigloc=/dev/raw/raw3
localonly=FALSE

13.4、应用层

13.4.1、查看CRS状态

crsstat -t -v
crsstat crsstat ora.scan1.vip --查看ora.scan1.vip状态

crsstat -ls --查看每个资源的权限定义,权限定义格式和Linux 一样

13.4.2、onsctl命令

onsctl命令用于管理配置ONS(Oracle Notification Service). ONS 是Oracle Clusterware 实现FAN Event Push模型的基础。
在传统模型中,客户端需要定期检查服务器来判断服务端状态,本质上是一个pull模型,Oracle 10g 引入了一个全新的PUSH 机制--FAN(Fast Application Notification),当服务端发生某些事件时,服务器会主动的通知客户端这种变化,这样客户端就能尽早得知服务端的变化。 而引入这种机制就是依赖ONS实现, 在使用onsctl命令之前,需要先配置ONS服务。
查看ONS服务状态

onsctl ping

启动ONS
onsctl start

查看ONS的详细信息
onsctl debug

13.4.3、srvctl命令

srvctl可以操作下面的几种资源:Database,Instance,ASM,Service,Listener 和Node Application,其中Node application又包括GSD,ONS,VIP。

查看数据库配置
srvctl config database --显示数据库名
srvctl config database -d rac --显示指定rac数据库的详细信息

查看各节点资源信息
srvctl config nodeapps
srvctl config nodeapps -n rac1 -a -g

查看监听信息
srvctl config listener
srvctl config listener -n rac1

配置数据库是否启动
srvctl enable|disable database -d rac
srvctl enable|disable database -d rac -i rac1

启动数据库
srvctl start database -d rac

启动实例
srvctl start instance -d raw

参考:http://www.cnblogs.com/rootq/archive/2012/11/14/2769421.html

14、附录:

14.1、CRS名词解释:

14.1.1、CRS一些服务作用

cvu:负责oracle健康检查的进程ons:负责不同的节点间的通信,集群同步。gsd:负责服务资源的分配,只用于9i RAC,但为了向后兼容才保留的,不影响性能。建议不作处理。oc4j:是用于DBWLM(Database Workload Management (DBWLM))的一个资源, WLM在 11.2.0.2 才可用。不作处理即可。acfs (ASM Cluster File System) :基于ASM的集群文件系统,11.2后增加功能。支持更广泛的存储文件类型。ora.acfs表示该服务的支持与否。

14.1.2、Oracle Cluster Registry(OCR)

OCR 负责维护整个集群的配置信息,包括RAC以及Clusterware资源.为了解决集群 的"健忘"问题,整个集群会有一份配置OCR,最多两分OCR,一个primary OCR和一个mirror OCR互为镜像,以防OCR的单点故障。

14.1.3、Votedisk

Voting Disk里面记录着节点成员的信息,必须存放在共享存储上,Voting Disk主要为了在出现脑裂时,决定那个Partion获得控制权,其他的Partion必须从集群中剔除。4个Votedisk,坏一个Votedisk,集群可以正常工作,如果坏了2个,则不能满足半数以上,集群会立即宕掉,所有节点立即重启

14.1.4、Admin Managed和Policy Managed

Policy-Managed方式介绍
基于策略的管理方式,是以服务器池(Server Pools)为基础的,简单地说,就是先定义一些服务器池,池中包含一定量的服务器,然后再定义一些策略,根据这些策略Oracle会自动决定让多少数据 库实例运行在池中的几台机器上。数据库实例名后缀、数据库实例个数、所运行的主机,这些都是通过策略决定的,而不是数据库管理员事先定好的。
何种环境适合使用这种新的方式进行管理?当管理大量的服务器集群,并且在这些集群中运行着多种不同重要程度,不同策略的RAC数据库时,为了简化管理,建议使用Policy- Managed方式,实际上Oracle也建议只有在超过3台的服务器的时候才使用Policy-Managed来管理整个数据库集群。想象一下使用 Policy-Managed方式可以达到的效果:如果我们有10台服务器组成,根据不同的应用的重要性定义服务器池的关键程度,然后在其中某些机器意外 停机的情况下,仍然可以自动地保持足够多的机器给重要的系统提供数据库服务,而将不关键的系统数据库服务器个数降低到最低限度。
策略管理:DBA指定数据库资源运行在哪个服务器池(排除generic or free)。Oracle Clusterware负责将数据库资源放在一台服务器。
Admin-Managed方式介绍
实际上上面的表述已经明确说明了,Policy-Managed和Admin-Managed方式的差别。让我们再回顾一下,在以往我们创建一个RAC数 据库大概是怎样的方法,我们在dbca的界面中会选择要将数据库实例运行在整个集群中的几台机器上,或者是2台或者是3台,甚或是更多,但是只要在安装的 时候选定几台机器,那么以后如果不做增减节点的操作,就始终会在这几台机器上运行。而且,通常会根据主机名称的排序自动将每台主机上的数据库实例依次命名 为dbname1到dbnameN。这些在管理员安装完毕以后,都不会再自动变化,这就是Admin-Managed方式。
管理员管理:DBA指定数据库资源运行的所有服务器,并且按需手动放置资源。这是之前版本Oracle数据库使用的管理策略。
参考:http://czmmiao.iteye.com/blog/2128771

14.1.5、Grid Name Service(GNS)

RAC 中SCAN 的配置有三种方式:
 /etc/hosts --常用方式
 DNS
 GNS --DHCP+DNS
参考:http://blog.csdn.net/tianlesoftware/article/details/42970129
http://download.csdn.net/detail/renfengjun/4488454

14.1.6、Intelligent Management Platform Interface(IPMI)

智能平台管理接口,IPMI是一种规范的标准,其中最重要的物理部件就是BMC(Baseboard Management Controller),它是一种嵌入式管理微控制器,相当于整个平台管理的"大脑"。通过它IPMI可以监控各个传感器的数据并记录各种事件的日志。在Grid Infrastructure安装期间配置,但一般情况下不配置此选项。

14.2、安装问题

14.2.1、安装界面乱码

系统默认字符集与安装软件字符集不同
解决: export LANG=enus

14.2.2、xhost +报错


解决: export DISPLAY=:0 --root用户下
xhost +
su - grid
export DISPLAY=0:0

14.2.3、网卡名称与MAC地址不能对应

解决: ①vi /etc/udev/rules.d/70-persistent-net.rules
②vi /etc/sysconfig/network-scripts/ifcfg-eth0|1
将①中eth0、eth2名称及MAC地址修改为②中对应内容,重启网络即可

14.2.4、Linux6.yum安装报错

warning: rpmtsHdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
updates/gpgkey
Public key for .rpm is not installed
解决: rpm --import /etc/pki/rpm-gpg/RPM
参考:http://blog.sina.com.cn/s/blog6e2aeba30100pshi.html

14.2.5、11g支持Linux系统列表

RHEL4.7↑ 5.2↑
SUSE 10 SP2↑

14.2.6、udev配置RAC ASM的几种方式

方法1:60-raw.rules --裸设备
vi /etc/udev/rules.d/60-raw.rules
ACTION=="add",KERNEL=="sdb",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="raw1", OWNER="grid", GROUP="asmadmin",MODE="660"
ACTION=="add",KERNEL=="sdc",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",KERNEL=="raw2", OWNER="grid", GROUP="asmadmin",MODE="660"
ls -l /dev/raw/raw
brw-rw----1 grid asmadmin 8, 96 Jun 29 21:56 /dev/raw1
brw-rw----1 grid asmadmin 8, 64 Jun 29 21:56 /dev/raw2

方法2:99-oracle-asmdevices.rules --ASM
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sdb",NAME="asmdiskb",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sdc",NAME="asmdiskc",OWNER="grid",GROUP="asmadmin",MODE="0660"
udevadm control --reload-rules
startudev
Starting udev:[ OK ]
ll /dev/asm
brw-rw----. 1 gridasmadmin 8, 16 Dec 16 15:52 /dev/asmdiskb
brw-rw----. 1 gridasmadmin 8, 32 Dec 16 15:52 /dev/asmdiskc

参考:http://www.cnblogs.com/jimeper/archive/2012/12/09/2809724.html

14.2.7、Oracle11.2.0.1问题

1、安装grid,执行root.sh时报错:
错误:这是一个Oracle11.2.0.3(不含)之前版本的bug
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: Inappropriate ioctl for device
ohasd failed to start at /u01/app/grid/11.2.0/crs/install/rootcrs.pl line 443.
解决: 开两个root用户窗口
窗口1:
$ORACLEHOME/root.sh --出现Adding daemon to inittab时,开始在窗口2执行dd
窗口2:
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
注意:这个问题会存在到以后的重新启动,即每次启动都需要操作此步骤!!!

重启操作步骤(两节点):
开两个root用户窗口
窗口1:
$ORACLEHOME/crs/install/roothas.pl --清除CRS配置,出现以下结果后继续执行root.sh
Either /etc/oracle/olr.loc does not exist or is not readable
Make sure the file exists and it has read and execute access
/bin/dd: opening `': No such file or directory
Successfully deconfigured Oracle Restart stack
$ORACLEHOME/root.sh --出现Adding daemon to inittab时,开始在窗口2执行dd

窗口2:
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1 --直到不返回错误
任意窗口:
su - grid
crsstart -all --启动集群
2、netca报错:
错误:
line 190: 16835 Aborted
解决: vi /etc/hosts
IP hostname**

0