Oracle 11g RAC搭建(VMware环境)
Oracle 11g RAC搭建VMware环境
安装环境与网络规划
安装环境
网络规划
环境配置
通过SecureCRT建立命令行连接
关闭防火墙
创建必要的用户组和目录并授权
节点配置检查
系统文件设置
配置IP和hostshostname
配置grid和oracle用户环境变量
配置oracle用户ssh互信
配置裸盘
配置grid用户ssh互信
挂载安装软件文件夹
安装用于Linux的cvuqdisk
手动运行cvu使用验证程序验证Oracle集群件要求所有节点都执行
安装Grid Infrastructure
安装流程
安装grid后的资源检查
为数据和快速恢复去创建ASM磁盘组
安装Oracle database软件RAC
安装流程
创建集群数据库
RAC维护
查看服务状态
检查CRS状态
查看集群中节点配置信息
查看集群件的表决磁盘信息
查看集群SCAN VIP信息
启停集群数据库
EM管理
本地sqlplus连接
安装环境与网络规划
安装环境主机操作系统:windows 10
虚拟机VMware12:两台Oracle Linux R6 U5 x86_64
Oracle Database software: Oracle11gR2
Cluster software: Oracle grid infrastructure 11gR2
共享存储:ASM
细节说明:
1. 安装Oracle Linux时,注意分配两个网卡,一个网卡为Host Only方式,用于两台虚拟机节点的通讯,另一个网卡为Nat方式,用于连接外网,后面再手动分配静态IP。每台主机的内存和swap规划为至少2.5G。硬盘规划为:boot 500M,其他空间分配为LVM方式管理,LVM划分2.5G为swap,其他为/。
两台Oracle Linux主机名为rac1、rac2
注意这里安装的两个操作系统最好在不同的硬盘中,否则I/O会很吃力。
2. 由于采用的是共享存储ASM,而且搭建集群需要共享空间作注册盘(OCR)和投票盘(votingdisk)。VMware创建共享存储方式:
进入VMware安装目录,cmd命令下:
这里创建了两个1G的ocr盘,一个1G的投票盘,一个20G的数据盘,一个10G的备份盘。
修改RAC1虚拟机目录下的vmx配置文件:
scsi1.present = "TRUE" scsi1.virtualDev = "lsilogic" scsi1.sharedBus = "virtual" scsi1:1.present = "TRUE" scsi1:1.mode = "independent-persistent" scsi1:1.filename = "F:\VMware\RAC\Sharedisk\ocr.vmdk" scsi1:1.deviceType = "plainDisk" scsi1:2.present = "TRUE" scsi1:2.mode = "independent-persistent" scsi1:2.filename = "F:\VMware\RAC\Sharedisk\votingdisk.vmdk" scsi1:2.deviceType = "plainDisk" scsi1:3.present = "TRUE" scsi1:3.mode = "independent-persistent" scsi1:3.filename = "F:\VMware\RAC\Sharedisk\data.vmdk" scsi1:3.deviceType = "plainDisk" scsi1:4.present = "TRUE" scsi1:4.mode = "independent-persistent" scsi1:4.filename = "F:\VMware\RAC\Sharedisk\backup.vmdk" scsi1:4.deviceType = "plainDisk" scsi1:5.present = "TRUE" scsi1:5.mode = "independent-persistent" scsi1:5.filename = "F:\VMware\RAC\Sharedisk\ocr2.vmdk" scsi1:5.deviceType = "plainDisk" disk.locking = "false" diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.DataCacheMinReadAheadSize = "0" diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0"修改RAC2的vmx配置文件:
scsi1.sharedBus = "virtual" disk.locking = "false" diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.DataCacheMinReadAheadSize = "0" diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0" gui.lastPoweredViewMode = "fullscreen" checkpoint.vmState = "" usb:0.present = "TRUE" usb:0.deviceType = "hid" usb:0.port = "0" usb:0.parent = "-1"这里就在RAC2的虚拟机设置中手动添加创建好的五个虚拟硬盘,要求是独立永久属性。
硬件配置要求:
- 每个服务器节点至少需要2块网卡,一个对外网络接口,一个私有网路接口(心跳)。
- 如果你通过OUI安装Oracle集群软件,需要保证每个节点用于外网或私网接口(网卡名)保证一致。比如,node1使用eth0作为对外接口,node2就不能使用eth1作为对外接口。
IP配置要求:
这里不采用DHCP方式,指定静态的scan ip(scan ip可以实现集群的负载均衡,由集群软件按情况分配给某一节点)。
每个节点分配一个ip、一个虚拟ip、一个私有ip。
其中ip、vip和scan-ip需要在同一个网段。
非GNS下手动配置IP实例:
IdentityHome NodeHost NodeGiven NameTypeAddressRAC1 Public RAC1 RAC1 rac1 Public 192.168.248.101
RAC1 VIP RAC1 RAC1 rac1-vip Public 192.168.248.201
RAC1 Private RAC1 RAC1 rac1-priv Private 192.168.109.101
RAC2 RAC2 RAC2 rac2 Public 192.168.248.102
RAC2 VIP RAC2 RAC2 rac2-vip Public 192.168.248.202
RAC2 Private RAC2 RAC2 rac2-priv Private 192.168.109.102
SCAN IP none Selected by Oracle Clusterware scan-ip virtual 192.168.248.110
环境配置
默认情况下,下面操作在每个节点下均要进行,密码均设置oracle
1. 通过SecureCRT建立命令行连接
sqlplus中Backspace出现^H的乱码
Options->Session Options->Terminal->Emulation->Mapped Keys->Other mappings
勾选Backspace sends delete
vi中不能使用delete和home
Options->Session Options->Terminal->Emulation
设置Terminal为Linux
勾选Select an alternate keyboard emulation为Linux
参照官方文档,采用GI与DB分开安装和权限的策略,对于多实例管理有利。
4. 节点配置检查内存大小:至少2.5GB
Swap大小:
当内存为2.5GB-16GB时,Swap需要大于等于系统内存。
当内存大于16GB时,Swap等于16GB即可。
查看内存和swap大小:
如果swap太小,swap调整方法:
通过此种方式进行swap 的扩展,首先要计算出block的数目。具体为根据需要扩展的swapfile的大小,以M为单位。block=swap分区大小*1024, 例如,需要扩展64M的swapfile,则:block=64*1024=65536.
然后做如下步骤:
#dd if=/dev/zero of=/swapfile bs=1024 count=65536
#mkswap /swapfile
#swapon /swapfile
#vi /etc/fstab
增加/swapf swap swap defaults 0 0
# cat /proc/swaps 或者# free –m //查看swap分区大小
# swapoff /swapf //关闭扩展的swap分区
(1)内核参数设置:
[root@rac1 ~]# vi /etc/sysctl.conf
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1306910720
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
这里后面检测要改
kernel.shmmax = 68719476736
确认修改内核
[root@rac1 ~]# sysctl -p
也可以采用Oracle Linux光盘中的相关安装包来调整
[root@rac1 Packages]# pwd
/mnt/cdrom/Packages
[root@rac1 Packages]# ll | grep preinstall
-rw-r–r– 1 root root 15524 Dec 25 2012 oracle-rdbms-server-11gR2-preinstall-1.0-7.el6.x86_64.rpm
(2)配置oracle、grid用户的shell限制
[root@rac1 ~]# vi /etc/security/limits.conf
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
(3)配置login
[root@rac1 ~]# vi /etc/pam.d/login
session required pam_limits.so
安装需要的软件包
binutils-2.20.51.0.2-5.11.el6 (x86_64)
compat-libcap1-1.10-1 (x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)
compat-libstdc++-33-3.2.3-69.el6.i686
gcc-4.4.4-13.el6 (x86_64)
gcc-c++-4.4.4-13.el6 (x86_64)
glibc-2.12-1.7.el6 (i686)
glibc-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6.i686
ksh
libgcc-4.4.4-13.el6 (i686)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6.i686
libstdc++-devel-4.4.4-13.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6.i686
libaio-0.3.107-10.el6 (x86_64)
libaio-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6 (x86_64)
libaio-devel-0.3.107-10.el6.i686
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)
这里使用的是配置本地源的方式,自己先进行配置:
[root@rac1 ~]# mount /dev/cdrom /mnt/cdrom/
[root@rac1 ~]# vi /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
[root@rac1 ~]# yum clean all
[root@rac1 ~]# yum makecache
[root@rac1 ~]# yum install gcc gcc-c++ glibc* glibc-devel* ksh libgcc* libstdc++* libstdc++-devel* make sysstat