在VMware server上安装oracle10g RAC
这次试验并没有用复制另一台虚拟机的系统的方式完成rac的安装,是在完全安装的两个操作系统进行的oracle clusterware,oracle RAC的配置。硬件:一台2U PC机器,cpu: Intel(R) Xeon X5650 共24核心 内存:24G 两个板载千兆以太网卡 。
软件:windows7旗舰版,VMware-server-1.0.3,CentOS> (10201_clusterware_linux32,10201_database_linux32),xmanager,
============================================================
一. 基础软件安装(详细步骤省略,请参照操作系统安装的相关文档)
1.安装win7操作系统,打开远程桌面管理,配置一个合适的网络(15.0.5.200),可以在局域网内使用
远程桌面访问win7.
2.在win7上安装VMware server,安装过程中提示缺少程序签名的错误,忽略掉继续进行安装即可。
3.带安装好后,重启动操作系统,启动时按F8选择用“禁用驱动程序签名强制”模式进入系统。
4.测试是否能通过远程桌面访问到win7系统,并运行VMware server,看是否可以使用。如果没有进入
“禁用驱动程序签名强制”模式,则无法进入local选项使用VMware。如果测试都通过,则可以通过远程来操作完成实验。
使用远程桌面连接,开始以后的实验
1. 在VMware server上构建两个虚拟机,分别为node1和node2。
正常设置完一个虚拟机后,添加共享存储硬盘:
设置如下图片所示,具体原因请查看VMware文档或其他文档
点击Edit virtual machine settings,进行添加硬盘盘的设置
点击Add
下一步
选中Hard Disk,点击下一步
选择‘Create a new virtual disk’,下一步
选择SCSI (Recommended),下一步
在Disk>
点击‘Browse’,手动选择硬盘存放路径,此处就是与先前创建的虚拟机系统硬盘不同的地方。下一步;
点击向上的图标,进行选择
选择shareddisk,这个文件夹为先前创建好的,为存放共享硬盘准备的。
手工输入硬盘名字,ocrdisk1.vmdk,意思作为oracle clusterware的OCR使用。
点击Advanced,进行硬盘通道选择;
选择SCSI 1:0,完成。
选择Independent,点击完成。
按照这种方法,创建剩下的六块虚拟硬盘,名字分别叫做:ocrdisk2.vmdk,votingdisk1.vmdk,votingdisk2.vmdk,votingdisk3.vmdk,这五块盘为512M容量,asmdisk1.vmdk,asmdisk2.vmdk,这两块盘为10G容量。用途如硬盘的名字所示,分别有两块OCR,三块votting disk盘,两块用作ASM存储。
在第一个虚拟机上设置完成后,编辑第二个虚拟机的配置文件Red Hat Enterprise Linux 4.vmx:
将第二个虚拟机的配置文件备份,然后把第一个虚拟机的Red Hat Enterprise Linux 4.vmx复制到第二个虚拟机陪置文件的位置;并打开这个Red Hat Enterprise Linux 4.vmx,按照备份的配置修改相应项:
scsi0:0.fileName = "node1disk.vmdk" 修改成scsi0:0.fileName = "node2disk.vmdk"
将displayName = "node1"修改成displayName = "node2"
uuid.location = "56 4d c7 a0 45 ca 8c ed-03 fd 14 3f ab fe 81 cd"
uuid.bios = "56 4d c7 a0 45 ca 8c ed-03 fd 14 3f ab fe 81 cd"
ethernet0.generatedAddress = "00:0c:29:fe:81:cd"
ethernet1.generatedAddress = "00:0c:29:fe:81:d7"
以上四项都是将等号右边的内容修改成原来node2配置文件的内容。
2.安装操作系统,其中node1和node2安装CentOS 4.4(32bit)的系统。
具体安装细节请查看安装操作系统相关文档。
===================================================
二. 基本环境配置:
安装好操作系统后,准备安装oracle RAC相关的环境;
1. 创建相关用户组和oracle用户
分别在node1和node2上创建:
# groupadd -g 500 oinstall
# groupadd -g 501 dba
# groupadd -g 502 oper
# useradd -g oinstall -G dba,oper -u 500 oracle
# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
2. 配置/etc/hosts
由于没有配置dns服务,所以/etc/hosts文件暂时配置如下
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
15.0.5.201node1
15.0.5.211node1-vip
10.0.0.1node1-priv
15.0.5.202node2
15.0.5.212node2-vip
10.0.0.2node2-priv
node2与node1的/etc/hosts文件相同。
3.配置SSH互信任
$ mkdir~/ .ssh
(或者使用ssh node2,成功登陆后既可以在oracle目录下创建一个.ssh目录。)
$ chmod 700~/ .ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your> Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
3a:8d:57:83:66:5f:69:c0:fd:95:c3:64:7d:ce:1a:de oracle@node1
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your> Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
ed:27:e9:43:8f:a6:35:6f:d3:13:85:fa:ef:76:fe:66 oracle@node1
$ ssh node1 cat /home/oracle/.ssh/id_rsa.pub >>authorized_keys
$ ssh node1 cat /home/oracle/.ssh/id_dsa.pub >>authorized_keys
在node2上重复上面的步骤创建:
$ ssh-keygen -t rsa
$ ssh-keygen -t dsa
继续在node1上:
$ ssh node2 cat /home/oracle/.ssh/id_rsa.pub >>authorized_keys
$ ssh node2 cat /home/oracle/.ssh/id_dsa.pub >>authorized_keys
$ scp authorized_keys node2:/home/oracle/.ssh/
进行ssh登录测试:
$ ssh node2
$ ssh node2-priv
$ ssh node1
$ ssh node1-priv
4. 设置oracle用户的环境
1.检查x window
$ xhost +
15.0.5.201 being added to access control list
2.检查并保证/tmp空间大于400M。因为安装系统是指划了一个根分区,所以/tmp空间与/ 共享使用空间。
5.检查硬件条件
分别在node1和node2上:
# free -m
total used free shared buffers cached
Mem: 2026 293 1733 0 48 130
-/+ buffers/cache: 113 1912
Swap: 4094 0 4094
# df -h
Filesystem SizeUsed Avail Use% Mounted on
/dev/sda3 16G2.7G 13G18% /
/dev/sda1 99M 12M 83M12% /boot
none 1014M 0 1014M 0% /dev/shm
centos:/apps/ 28G9.8G 16G38% /apps
(/apps为另一个nfs服务器提供的目录,所有的oracle相关软件都存放在该目录下。node1和node2都
挂在使用该目录安装需要的软件。)
6. 检查软件情况
oracle要求集群中的节点必须使用相同版本的操作系统!
为避免安装数据库软件时的麻烦,将node1和node2的centos改为redhat:
# cat /etc/redhat-release
CentOS> # cp /etc/redhat-release /etc/redhat-release.bak
[root@node1 ~# echo "Red Hat Enterprise Linux AS> 4)">/etc/redhat-release
注:实际测试,不做此操作也没有任何问题。
内核版本:
# uname -r
2.6.9-42.ELsmp
检查软件包:
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
openmotif21-2.1.30-11.RHEL4.2
在node1和node2中使用rpm工具分别对上列出的软件包检查,并安装没有的包;本次安装操作系统选择了所有的软件包,所以在检查包时全都安装了。
7. 配置系统内核参数
在node1和node2的/etc/sysctl.conf文件添加内容:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#fs.file-max = 65536 --注释掉是由于系统默认的值大于65536,使用默认值。
net.ipv4.ip_local_port_range = 32768 65000
net.core.rmem_default = 262144
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
然后运行/sbin/sysctl -p使其生效。(不运行也行,最后要安装oracle clusterware时重启动操作系统。)
在node1和node2的/etc/pam.d/login 文件添加内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
在node1和node2的/etc/security/limits.conf 文件添加内容:
session required /lib/security/pam_limits.so
创建oracle的相关目录
# mkdir -p /u01/app/oracle/oraInventory
# mkdir -p /u01/app/oracle/product/crs
# mkdir -p /u01/app/oracle/product/10.2.0/db_1
# chown -R oracle:oinstall /u01
# chmod -R 755 /u01
验证hangcheck-timer模块:
$ /sbin/lsmod | grep hang
hangcheck_timer 76410
如果无输出结果证明内核没有载入模块,需要手工导入
# insmod /lib/modules/`uname -r`/kernel/drivers/char/hangcheck-timer.ko
hangcheck_tick=30 hangcheck_margin=180
并将这条导入命令添加到/etc/rc.d/rc.local中,保证重启动系统后会导入该模块。
基本环境配置就告一段落,下面开始配置存储相关内容
================================================
三. 配置oracle RAC环境的存储环境:
根据创建虚拟机时配置好的硬盘,共享存储的硬盘有7块,分别为五块512M容量的
ocrdisk1,ocrdisk2,votingdisk1,votingdisk2,votingdisk3
和两块10G容量的asmdisk1,asmdisk2.
---------------------------
使用fdisk工具为共享存储创建分区
# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks> /dev/sda1 * 1 13 104391 83Linux
/dev/sda2 14 535 4192965 82Linux swap
/dev/sda3 536 2610 16667437+83Linux
Disk /dev/sdb: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdd: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdd doesn't contain a valid partition table
Disk /dev/sde: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sde doesn't contain a valid partition table
Disk /dev/sdf: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdf doesn't contain a valid partition table
Disk /dev/sdg: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdg doesn't contain a valid partition table
Disk /dev/sdh: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdh doesn't contain a valid partition table
依上面的显示,需要为/dev/sdb,/dev/sdc,/dev/sdd,dev/sde,/dev/sdf,/dev/sdg,/dev/sdh创建分区
# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-512, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):
Using default value 512
Command (m for help): w
The partition table has been> Calling ioctl() to re-read partition table.
Syncing disks.
按照上面的方法,将在余下的设备上都创建一个分区。分区尺寸为该设备的大小。创建后的结果在
node1和node2上都应该是:
# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks> /dev/sda1 * 1 13 104391 83Linux
/dev/sda2 14 535 4192965 82Linux swap
/dev/sda3 536 2610 16667437+83Linux
Disk /dev/sdb: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks> /dev/sdb1 1 512 524272 83Linux
Disk /dev/sdc: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks> /dev/sdc1 1 512 524272 83Linux
Disk /dev/sdd: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks> /dev/sdd1 1 512 524272 83Linux
Disk /dev/sde: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks> /dev/sde1 1 512 524272 83Linux
Disk /dev/sdf: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks> /dev/sdf1 1 512 524272 83Linux
Disk /dev/sdg: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks> /dev/sdg1 1 1305 10482381 83Linux
Disk /dev/sdh: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks> /dev/sdh1 1 1305 10482381 83Linux
为oracle clusterware文件绑定分区到raw devices:
在node1和node2上编辑/etc/sysconfig/rawdevices文件加入下面行:
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdc1
/dev/raw/raw3 /dev/sdd1
/dev/raw/raw4 /dev/sde1
/dev/raw/raw5 /dev/sdf1
/dev/raw/raw6 /dev/sdg1
/dev/raw/raw7 /dev/sdh1
然后启动rawdevices服务:
# /etc/init.d/rawdevices start
改变属性和权限:
# chown root:oinstall /dev/raw/raw1
# chown root:oinstall /dev/raw/raw2
# chown oracle:oinstall /dev/raw/raw3
# chown oracle:oinstall /dev/raw/raw4
# chown oracle:oinstall /dev/raw/raw5
# chown oracle:oinstall /dev/raw/raw6
# chown oracle:oinstall /dev/raw/raw7
# chmod 640 /dev/raw/raw*
# chmod 660 /dev/raw/raw6
# chmod 660 /dev/raw/raw7
注:实验中在node1上面对共享的硬盘建完分区,并绑定raw后,在node2上使用fdisk -l可以正常显示所有硬盘的状态,但是绑定raw系统还是无法识别分区。需要重新启动操作系统才能正常识别。
在/etc/udev/permissions.d/目录下创建文件oracle.permissions并添加内容如下:
#OCR
raw/raw:root:oinstall:0640
#Voting Disks
raw/raw:oracle:oinstall:0660
#ASM
raw/raw:oracle:oinstall:0660
这样可以保证在系统重启后,这些raw绑定的分区的权限依然如我们前面所设置的那样。如果不设置这
个文件,也可以在/etc/rc.d/rc.local文件中添加前面的chown和chmod设置。
============================
四. 安装oracle clusterware
解压10201_clusterware_linux32完成后名为clusterware的目录。进入该目录开始安装:
# cd clusterware/
# ./runInstaller
Next
Next
在安装的path中,默认会是在.bash_profile中设置好的ORACLE_HOME的目录,点击Browse,选择ORA_CRS_HOME的目录,Next。
这里检查系统的相关环境,看是否符合oracle clusterware的安装。如果有不符合条件的检查结果会报告,根据报告进行相应的修复,在Retry,直至验证通过为止。
会给出所在安装节点的IP,需要手工添加另外的所有节点,这里手动添加了node2.
系统能正确识别网卡和所对应的网络,说明对网络的配置没有问题。
根据硬盘的规划,选择Normal Redundancy。并输入/dev/raw/raw1和/dev/raw/raw2两块raw。
同样,Voting Disk也使用Normal Reducdancy。并输入规划的raw。
总览一下所有设置,确认后点击Install。
按照安装完后弹出的对话框的要求,root用户分别执行/u01/app/oracle/orainventory/orainstRoot.sh和/u01/app/oracle/product/crs/root.sh。现在node1上执行,执行完毕后,再在node2上执行。
如果执行脚本成功,会启动crs,css,evm服务。结束安装。
============================================
五. 安装oracle Database 10g 软件:
可以先验证一下集群的状态:
$ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.node1.gsdapplication ONLINE ONLINE node1
ora.node1.onsapplication ONLINE ONLINE node1
ora.node1.vipapplication ONLINE ONLINE node1
ora.node2.gsdapplication ONLINE ONLINE node2
ora.node2.onsapplication ONLINE ONLINE node2
ora.node2.vipapplication ONLINE ONLINE node2
也可以使用runcluvfy.sh工具进行验证,只是每次我验证的时候,包括在安装oracle clusterware软件的时候,总会报告需要,compat-gcc-7.3-2.96.128,compat-gcc-c++-7.3-2.96.128,compat-libstdc++-7.3-2.96.128这几个软件包,而实际上系统已经有相应替代的软件包了,如果在安装这些软件包,系统又会报告软件包有冲突。
解压10201_database_linux32.zip后为database目录,将该目录所有者和组设置为oracle:oinstall。
进入目录,使用oracle用户运行runInstaller
$ ./runInstaller
Next
选择Enterprise Edition,Next
这个目录默认为$ORACLE_HOME变量设置的目录,Next。
勾选node2后,Next
警告为ip_local_port_range设置问题,编辑/etc/sysctl.conf文件,改为要求的设置net.ipv4.ip_local_port_range = 1024 65000,Retry,通过后,Next。
点击Insall.等待安装完成,在node1上运行/u01/app/oracle/product/10.2.0/db_1/root.sh,运行完毕后,再在node2上相同的目录下运行root.sh。
运行完脚本后,系统检测集群环境,报错启动vip失败,查看日志的原因为没有设置默认网关,解决方法为编辑$CRS_ORA_HOME/bin/racgvip文件,设置FAIL_WHEN_DEFAULTGW_NOT_FOUND=0,再Retry后,则系统会启动vip,并成功运行oracle clusterware.
结束安装,退出。
=======================================
五.创建数据库:
这里使用DBCA创建数据库
1.在$ORACLE_HOME/bin下,运行dbca
$ ./dbca
如果安装了集群软件,则DBCA会自动检测出并给出选项,是创建oracle Real Application Clusters database还是Oracle single instance database。选择1,Next
选择Create a Database,Next.
Select All,让node1和node2都选中。Next.
用途选择General Purpose,Next.
输入数据库的名字,Next
可以选择是否自动备份否,Next。
设置密码,Next
选择Automatic Storage Management(ASM),Next
识别出前面设置好的ASM,勾选后Next.
Use Oracle-Managed files
设置flash recovery area位置和大小,也可以不设置,Next。
使用sample schemas,Next。
改变一下Character Sets
使用Use Unicode(AL32UTF8),Next
Next
开始创建数据库
创建完成后退出。Exit.
==============================
总结:
在实验过程中,遇到最多的是网络和共享硬盘的问题。可能由于在VMware Server上运行带来复杂性,有时候node2中运行ifconfig命令后,网卡都没有了,重启网络服务又恢复正常。有时候提示没有足够的存储空间。fdisk -l 查看硬盘数量不少,重启rawservices服务后有能识别到。可能这些问题在实际的生产系统中不会遇到,但是网络和存储的设置对RAC能否成功实施至关重要。如果前期的准备工作到位,硬件,软件,相关的包,网络,内核的设置,共享存储都满足oracle RAC的要求,则安装过程是水到渠成的事情。
页:
[1]