设为首页 收藏本站
查看: 1132|回复: 0

[经验分享] Fedora主机下RHEL5+Oracle11g+VirtualBox=RAC(原创)

[复制链接]
发表于 2016-1-11 08:22:53 | 显示全部楼层 |阅读模式
  安装前准备:笔者主机为Fedora 14,安装所需的软件:
                《红帽企业级LinuxAS版》RedhatEnterpriseLinuxASv5.4rhel-server-5.4-i386-dvd.iso
                  linux_x86_11gR1_clusterware.zip
                  oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm
                  oracleasmlib-2.0.4-1.el5.i386.rpm
                  oracleasm-support-2.1.3-1.el5.i386.rpm
                  linux_11gR1_database_1013
                  足够的硬盘空间,虚拟机
  硬盘选择动态扩展,大小为20G,主机预留30G的硬盘空间
虚拟机的配置
首先安装虚拟机软件VirtualBox,到
http://www.virtualbox.org/wiki/Downloads
下载适合自己的rpm包
笔者使用的是fedora系统,故使用如下命令安装
rpm -Uvh VirtualBox-4.0-4.0.0_69151_fedora14-1.i686.rpm
创建虚拟机,这个地球人都会,注意以下四点:
1、内存大于等于1200M否则装rac的时候会报错
2、创建新的硬盘作为虚拟机的硬盘,不要使用已有的硬盘作为虚拟机的硬盘
3、单击虚拟机的设置选项,点击Storage,在存储树中使用“SATA控制器”作为存储控制器,这一步一定要使用“SATA控制器”,默认的IDE控制器无法在一个控制器上添加多个硬盘。关于这一步,读者可以先删除现有的IDE控制器,然后添加SATA控制器,最后再把以创建好的虚拟机硬盘添加到控制器中。
4、虚拟机硬盘选择动态扩展,大小为20G
5、使用虚拟机的桥接设置,将两块虚拟网卡桥接到 同一块 网卡中
  说明
虚拟机的eth0作为心跳网络,网段:192.168.0.0   
虚拟机的eth1作为心跳网络,网段:192.168.2.0
  VIPIP:rac1,192.168.2.111;  rac2,192.168.2.112
OCR:/dev/raw/raw1    Voting Disk:/dev/raw/raw2
本文采用ASM作为数据存储介质,安装oracle软件、 配置ASM和建库由于较为简单,本文限于篇幅就不再详述。           
   
  安装配置第一台RHEL5  --rac1
安装RHEL5网上教程很多本文不再赘述。注意满足下面三点:
安装下列软件包:
            GNOME Desktop Environment
          Editors
          Graphical Internet
          Text-based Internet
          Development Libraries
          Development Tools
          Server Configuration Tools
          Administration Tools
          Base
          System Tools
          X Window System  
配置  IP地址如下
          hostname: rac1.localdomain  

  • IP Address eth0: 192.168.2.101 (public address)  
  • Default Gateway eth0: 192.168.2.1 (public address)  
  • IP Address eth1: 192.168.0.101 (private address)  
  •   Default Gateway eth1: none  
禁用SELINUX和防火墙
安装完成后,在虚拟机上执行,SWAP分区大于等于2g
1、安装所需软件包
关于在VirtualBox上挂载iso镜像在4.0版本中似乎有bug,笔者经常不能正常识别光盘镜像中的文件,这里笔者采用先在主机配置共享,将 iso镜像中拷贝到RHEL5中再进行安装的方式进行。关于如何在fedora下设置共享,请读者自行研究,不在本文讨论范围。

# mount -o loop 《红帽企业级LinuxAS版》RedhatEnterpriseLinuxASv5.4rhel-server-5.4-i386-dvd.iso /mnt
挂载iso镜像后,在双节点上执行
cd #/mnt/Server
rpm -Uvh binutils-2.*
rpm -Uvh compat-libstdc++-33*
rpm -Uvh elfutils-libelf-0.*
rpm -Uvh elfutils-libelf-devel-*
rpm -Uvh gcc-4.*
rpm -Uvh gcc-c++-4.*
rpm -Uvh glibc-2.*
rpm -Uvh glibc-common-2.*
rpm -Uvh glibc-devel-2.*
rpm -Uvh glibc-headers-2.*
rpm -Uvh ksh-2*
rpm -Uvh libaio-0.*
rpm -Uvh libaio-devel-0.*
rpm -Uvh libgcc-4.*
rpm -Uvh libstdc++-4.*
rpm -Uvh libstdc++-devel-4.*
rpm -Uvh make-3.*
rpm -Uvh sysstat-7.*
rpm -Uvh unixODBC-2.*
rpm -Uvh unixODBC-devel-2.*
rpm -Uvh compat-db-4*
rpm -Uvh compat-gcc*
rpm -Uvh openmotif-2.2.3*
rpm -Uvh libXp-1.0.0-8.1*
rpm -ivh compat-db-4.2.52-5.1.i386.rpm
rpm -Uvh compat-gcc-34-3.4.6-4.i386.rpm
rpm -Uvh compat-gcc-34-c++-3.4.6-4.i386.rpm
rpm -Uvh compat-libstdc++-33-3.2.3-61.i386.rpm
rpm -ivh openmotif-2.3.1-2.el5.i386.rpm
rpm -ivh compat-gcc-7.3-2.96.128
rpm -Uvh compat-gcc-c++-7.3-2.96.128
rpm -Uvh compat-libstdc++-7.3-2.96.128
rpm -Uvh compat-libstdc++-devel-7.3-2.96.128

2、在双节点上配置主机名和ip的映射关系
修改/etc/hosts 如下
127.0.0.1       localhost.localdomain   localhost
# Public
192.168.2.101           rac1
192.168.2.102           rac2
# Private
192.168.0.101           rac1-priv
192.168.0.102           rac2-priv
# Virtual
192.168.2.111           rac1-vip
192.168.2.112           rac2-vip
# SCAN
192.168.2.201   rac-scan.localdomain rac-sca

SCAN 的ip 在本次rac 安装中并不会用到,但是处于习惯笔者还是进行了定义
确保 /etc/hosts 文件的环回地址中不包含节点名(rac1 或 rac2)。如果计算机名出现在环回地址条目中,如下所示:
127.0.0.1  racnode1 localhost.localdomain localhost
需要将其删除,如下所示:
127.0.0.1 localhost.localdomain localhost
如果 RAC 节点名出现在环回地址中,您在 RAC 安装期间将收到以下错误消息:
ORA-00603: ORACLE server session terminated by fatal error                        
或者
ORA-29702: error occurred in Cluster Group Service operation      
                  

3、  在双节点上 配置内核参数
修改/etc/sysctl.conf 如下
fs.aio-max-nr = 1048576
fs.file-max = 6815744            //表示文件句柄的最大数量。文件句柄表示在Linux系统中可以

                                                 打开的文件数量  
kernel.shmall = 2097152      //表示系统一次可以使用的共享内存段的总量(以页为单位)。
kernel.shmmax = 1054504960       //表示单个内存能够使用的共享内存段的最大尺寸(以字
  
                                                                            节为单位)。默认为32M,对于Oracle来说默认值太低了
kernel.shmmni = 4096         
  //表示单个内存能够使用的共享内存段的最小尺寸(以字为单位)   
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128    
  //表示设置的信号量,关于该参数可参见笔者的另一篇   
                                                                                文章   
net.ipv4.ip_local_port_range = 1024 65500   //表示用于向外连接的端口范围。缺省情况下   
                                                                                                    很小:32768到61000,改为1024到65000。
net.core.rmem_default=262144              //
  默认的TCP数据接收缓冲   
net.core.rmem_max=4194304                //最大的TCP数据接收缓冲
net.core.wmem_default=262144           
  //   默认的TCP数据发送缓冲   
net.core.wmem_max=1048586             
  //最大的TCP数据发送缓冲    


执行  [iyunv@czmmiao ~]# /sbin/sysctl -p
4、  在双节点上 修改shell 限制
修改etc/security/limits.conf
oracle               soft      nproc   2047             //
    前系统生效的进程的最大数目
oracle               hard     nproc   16384          //
    系统中所能设定的进程的最大数目
oracle               soft       nofile  1024                //   前系统生效的打开文件的最大数目
oracle               hard     nofile  65536              //   统中所能设定的打开文件的最大数目
 
5、  在双节点上 修改登陆限制
/etc/pam.d/login
session required pam_limits.so


6、  关闭 双节点上 的 selinux  
修改/etc/selinux/config   

SELINUX=disabled


7、开启双节点上的ntp 服务,本例rac1作为server,rac2作为client
rac1
#vi /etc/ntp.conf
server 127.127.1.0
Driftfile /var/lib/ntp/drift
Broadcastdelay 0.008

rac2  
# vi /etc/ntp.conf
server 192.168.0.101 prefer
Driftfile /var/lib/ntp/drift
Broadcastdelay 0.008

在双节点上执行
service ntpd restart
 
8、创建必要的组、用户和目录
groupadd -g 1000 oinstall
groupadd -g 1200 dba

useradd -u 1100 -g oinstall -G dba oracle
passwd oracle
mkdir -p /u01/app/oracle/product/11.2.0/db_1
  
mkdir -p /u01/app/oracle/product/11.2.0/crs
chown -R oracle:oinstall /u01

chmod -R 775 /u01/
 
9、在/boot/grub/grub.conf增加"divider=10"以减少空闲CPU的加载(这步为可选,不做也可以)
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Enterprise Linux (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet divider=10
        initrd /initrd-2.6.18-194.el5.img



10、修改oracle的用户的环境变量
以oracle 用户登录
执行vim .bash_profile
  export ORACLE_BASE=/u01/app/oracle     
export ORA_CRS_HOME=$ORACLE_BASE/product/11.2.0/crs 
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 
export ORACLE_SID=rac1 
export ORACLE_TERM=xterm 
export NLS_LANG=AMERICAN_AMERICA.UTF8 
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data 
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
PATH=$PATH:$HOME/bin:$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:/sbin 
export PATH

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi
注意:这里ORA_CRS_HOME需要放在ORACLE_HOME前面

11、以root用户安装VirtualBox的增强功能
单击Devices > Install Guest Additions菜单选项
执行
#cd /media/VBOXADDITIONS_4.0.0_69151/

#cp -rfp * /

#./VBoxLinuxAdditions.run

执行init 0关机

12、为rac1增加硬盘
在主机上执行,切忌要以之前创建rac1的用户执行,例如笔者之前创建rac1的用户为czmmiao,现在也应以czmmiao执行下列命令。

$ # Create the disks and associate them with VirtualBox as virtual media.
$ VBoxManage createhd --filename asm1.vdi --size 1024 --format VDI --variant Fixed
$ VBoxManage createhd --filename asm2.vdi --size 1024 --format VDI --variant Fixed
$ VBoxManage createhd --filename asm3.vdi --size 1024 --format VDI --variant Fixed
$
$ # Connect them to the VM.
$ VBoxManage storageattach rac1 --storagectl "SATA Controller" --port 1 --device 0 --type hdd --medium asm1.vdi --mtype shareable
$ VBoxManage storageattach rac1 --storagectl "SATA Controller" --port 2 --device 0 --type hdd --medium asm2.vdi --mtype shareable
$ VBoxManage storageattach rac1 --storagectl "SATA Controller" --port 3 --device 0 --type hdd --medium asm3.vdi --mtype shareable 
$
$ # Make shareable.
$ VBoxManage modifyhd asm1.vdi --type shareable
$ VBoxManage modifyhd asm2.vdi --type shareable
$ VBoxManage modifyhd asm3.vdi --type shareable

13、重新开启rac1,对硬盘进行分区
# fdisk /dev/sdb
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.

The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
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-1305, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305):
Using default value 1305

Command (m for help): p

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1305    10482381   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#
分区后的结果如下所示

[iyunv@rac1 ~]# ls /dev/sd*
/dev/sda   /dev/sda2  /dev/sdb1  /dev/sdc   /dev/sdd
/dev/sda1  /dev/sdb   /dev/sdb2  /dev/sdc1  /dev/sdd1

14、安装配置ASM管理软件和Cluster管理软件
[iyunv@rac1 ~]# uname -r
2.6.18-164.el5

到Oracle官网上下载
oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm
oracleasmlib-2.0.4-1.el5.i386.rpm
oracleasm-support-2.1.3-1.el5.i386.rpm
linux_x86_11gR1_clusterware.zip

#rpm -Uvh oracleasm*.rpm

cd /your/path/to/grid/rpm
rpm -Uvh cvuqdisk*

配置ASM
# oracleasm configure -i
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
#

装载内核
# /usr/sbin/oracleasm init
Loading module "oracleasm": oracleasm
Mounting ASMlib driver filesystem: /dev/oracleasm
#

创建ASM文件系统
# /usr/sbin/oracleasm createdisk VOL1 /dev/sdc1
Writing disk header: done
Instantiating disk: done
# /usr/sbin/oracleasm createdisk VOL2 /dev/sdd1
Writing disk header: done
Instantiating disk: done

# /usr/sbin/oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...

15、创建裸设备
#vim /etc/sysconfig/rawdevices
/dev/raw/raw1   /dev/sdb1
/dev/raw/raw2   /dev/sdb2
#vim /etc/udev/rules.d/50-udev.rules
KERNEL=="raw[0-9]*",MODE="0660",GROUP="oinstall",OWNER="oracle",NAME="raw/%k"
#shutdown -h now

 
16、  验证用户 nobody 存在
安装软件之前,需要验证在两个节点上存在用户nobody:
要确定该用户是否存在,输入以下命令:
# id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)

如果该命令显示了 nobody 用户的信息,则无需创建该用户。如果用户 nobody 不存在,则输入以下命令进行创建:
# /usr/sbin/useradd nobody

至此第一台虚拟机rac1配置完成,笔者以汗流浃背

创建第二台虚拟机--rac2
在主机上执行
$ VBoxManage clonehd rac1.vdi rac2.vdi
注意,这里的虚拟机硬盘选择“以存在的虚拟机硬盘”选择。
rac2.vdi
$ VBoxManage storageattach rac2 --storagectl "SATA Controller" --port 1 --device 0 --type hdd --medium asm1.vdi --mtype shareable
$ VBoxManage storageattach rac2 --storagectl "SATA Controller" --port 2 --device 0 --type hdd --medium asm2.vdi --mtype shareable
$ VBoxManage storageattach rac2 --storagectl "SATA Controller" --port 3 --device 0 --type hdd --medium asm3.vdi --mtype shareable

hostname: rac2.localdomain
配置rac2网络如下
IP   Address eth0: 192.168.2.102 (public address)
Default  Gateway eth0: 192.168.2.1 (public address)
IP   Address eth1: 192.168.0.102 (private address)
Default Gateway eth1:none


                                                       DSC0000.jpg
 
   
更改oracle用户环境变量
以oracle用户登录  
$vim .bash_profile
ORACLE_SID=RAC2; export ORACLE_SID
ORACLE_HOSTNAME=rac2.localdomain; export ORACLE_HOSTNAME


配置rac1和rac2的等价性

以oracle用户登录rac1的Xwindows,
mkdir   .ssh
chmod 700 .ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
cat *.pub > authorized_keys
scp  authorized_keys rac2:/home/oracle/.ssh/keys_dbs

在rac2上执行
mkdir   .ssh
chmod 700 .ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
cat *.pub > authorized_keys
cat  keys_dbs >> authorized_keys
scp  authorized_keys rac1:/home/oracle/.ssh/

在rac1和rac2分别执行
ssh rac1 ssh rac1-priv ssh rac2 ssh rac2-priv
  确保rac1和rac2处于开机状态,以oracle用户登录rac1

  
安装Clusterware群集管理软件
安装前测试
/mountpoint/clusterware/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
这里报错
ERROR:
Could not find a suitable set of interfaces for VIPs.
Result: Node connectivity check failed.

可以不予理会
只要有如下提示即可
System requirement passed for 'crs'
开始安装集群软件
su - root
/etc/init.d/rawdevices start
exit

./runInstall
进行安装,进行到
 
                      DSC0001.jpg
   点击“添加”
                           DSC0002.jpg
   继续进行至
                           DSC0003.jpg
   进行至
Specify Oracle Cluster Register (OCR) Location  时,
选择
External Redundancy
/dev/raw/raw1
进行至
Specify Voting Disk Location时
选择
External Redundancy
/dev/raw/raw2
点击下一步、安装之至:出现提示框
在两个节点上分别执行提示中的脚本,切忌,不能在两个节点上同时执行,完成后点击OK,安装成功。
配置 ASM
安装Oracle Database
注意一下两点即可:
选择企业版安装
选择安装
一路回车到最后遇到提示框时,在两个节点上分别执行提示中的脚本即可
至此,大公告成

   
  卸载Oracle RAC

  这部分主要是为了安装失败的同学,让你卸得干干净净重来吧
  dd if=/dev/zero of=/dev/sdb bs=1k count=3000
  dd if=/dev/zero of=/dev/sdc bs=1k count=3000
  dd if=/dev/zero of=/dev/sdd bs=1k count=3000
rm  -rf -rf /home/oracle/oracle/*
rm  -rf /etc/rc.d/rc5.d/S96init.crs
rm  -rf /etc/rc.d/init.d/init.crs
rm  -rf /etc/rc.d/rc4.d/K96init.crs
rm  -rf /etc/rc.d/rc6.d/K96init.crs
rm  -rf /etc/rc.d/rc1.d/K96init.crs
rm  -rf /etc/rc.d/rc0.d/K96init.crs
rm  -rf /etc/rc.d/rc2.d/K96init.crs
rm  -rf /etc/rc.d/rc3.d/S96init.crs
rm  -rf /etc/oracle/*
rm  -rf /etc/oraInst.loc
rm  -rf /etc/oratab
rm  -rf /usr/local/bin/coraenv
rm  -rf /usr/local/bin/dbhome
rm  -rf /usr/local/bin/oraenv
rm -f /etc/init.d/init.cssd
rm -f /etc/init.d/init.crs
rm -f /etc/init.d/init.crsd
rm -f /etc/init.d/init.evmd
rm -f /etc/rc2.d/K96init.crs
rm -f /etc/rc2.d/S96init.crs
rm -f /etc/rc3.d/K96init.crs
rm -f /etc/rc3.d/S96init.crs
rm -f /etc/rc5.d/K96init.crs
rm -f /etc/rc5.d/S96init.crs
rm -f /etc/inittab.crs
mv /etc/inittab /etc/inittab_bak
cp /etc/inittab.orig /etc/inittab


参考至:
《大话ORACLE RAC》张晓明著
                 http://www.oracle.com/technetwork/cn/articles/hunter-rac11gr2-iscsi-083834-zhs.html
                 http://www.oracle-base.com/articles/11g/OracleDB11gR2RACInstallationOnOEL5UsingVirtualBox.php#create_shared_disks
                 http://wenku.baidu.com/view/37f20a5e3b3567ec102d8abe.html      
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
   

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-162757-1-1.html 上篇帖子: 启用数据空间:让VirtualBox虚拟机中的Ubuntu10.10和XP主机互通有无 下篇帖子: VirtualBox下虚拟机和宿主计算机共享文件夹
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表