【转】虚拟机VMware安装OracleRAC.环境综述

一、重要提示

 构建RAC最好能有实际的硬件环境,这样不仅能有实战经验,也会获得稳定的环境!
用虚拟机安装是万不得已的选择,安装问题比较多而且不 稳定,也不能获得ORACLE的技术
帮助。虚拟机的单机Oracle还可以,但是安装RAC就差强人意了。

二、虚拟机环境

虚拟机VMware小常识:

VMware Workstation 用于个人桌面系统,VMware GSX Server 与 VMWare ESX Server
用于企业服务器。VMware Workstation与VMware GSX Server需要操作系统的支持,但
VMWare ESX Server不需要操作系统支持,可以在主机无操作系统的情况下也可安装。

VMware GSX Server界于VMware Workstation与VMWare ESX Server之间。
可以说,ESX是企业级,GSX工作组级,Workstation个人 单机级。

  VMware Workstation和VMware GSX是操作系统上(Windows/Linux)的一个应用程序,必须
先 安装主机操作系统后才能安装,之后再虚拟新的系统。

VMware ESX则是独立的,可在一台裸机上进行安装。比VMware GSX,VMware ESX性能
有很大提升。


安装Oracle RAC可以使用VMware GSX Server,也可使用Workstation。VMware GSX Server
并不支持share folder,这一点需要注意。

 事实表明,个人用户不需要安装VMware GSX Server,推荐使用VMware Workstation。VMware
GSX Server 运行速度较慢。


三、虚拟机Linux操作系统


操作系统的安装介质(安装光盘等...)很重要,要尽力保证介质的可用性。

不良介质会导致如下问题:
读 取安装包问题发生致命错误
复制完安装包不能引导
驱动设备不能识别
其他意外问题

安装RAC环 境,不推荐使用Red Hat Enterprise Linux AS 4安装Oracle 9i RAC,BUG较多。  

 安装操作系统,选择安装包时可根据自已需要,不必盲目全选(当然如果你空间够大另当别论),
即便后面过程需要别的组件,也可从光盘上十分 方便地RPM。

有些情况下,正常安装企业版,复制完所有文件包后,系统提示重启,然而重启后从硬盘引导
却无法启动,光标停留 在左上角或者打印一些信息再停留在左上角。这个问题是由于grub引导被
破坏,或者grub引导安装失败,解决方案就是手工再进行安装(详细方法 在《服务器配置实例(一).
HP Prolient ML570 服务器》也描述过,请查看):

 即使用Red Hat Linux 启动光盘,在boot下输入linux rescure回车,加载完一堆镜象,会出现提示
符,可进行 命令行操作。
注意:有时在boot下输入linux rescure回车,加载一些东西后,不提示命令行,这时多半与引导
介质有关,请 更换可靠的安装介质。使用不同版本的安装介质引导后,在命令行下输入fdisk -l 会
无任何反应,尽量使用相同版本的介质引导修复。


四、使用虚拟机Linux操作系统

 系统启动运行日志记录在/var/log/messages,对于日常问题可以查看详细原因。这里列举
一些常见问题:

 1. smart 服务启动失败,日志里显示 Device: /dev/sda, Bad IEC (SMART) mode page,
err=-5, skip device

 解答:SMART是硬盘生产商建立的一个工业标准,这个标准就是在硬盘上保存一些实时情况。
如读写情况,可靠程度,错误率等属性。每个属 性都有一个1字节(bytes,大小1-253)的标准值,其
中还有另一个字节保存关键值,如果此时硬盘某个属性值接近小于或达到关键值,那你硬 盘你就
差不多该报废了。SMART一般用于查看硬盘的健康情况,也还需要实际的硬盘支持。虚拟机是没
有任何必要去启动这个服务的。

另 系统启动的服务一定要筛选一些,没有必要启动一大堆服务占用大量的时间与内存,尤其在
虚拟机这个有限资源下,这里列出笔者服务列表:

 gpm
network
readahead
readahead_early
rexec
rlogin
rsh
sshd
syslog
xinetd

rexec rlogin rsh,这三个属于rsh相关服务,如服务列表没有显示,可以去安装光盘里查找
rsh-server RPM包进行安装。这个服务的作用以后会提到。

 第四张光盘上 rsh-server-0.17-25.3.i386.rpm

[root@linuxrac6 RPMS]# rpm -ivh rsh-server-0.17-25.3.i386.rpm 
[root@linuxrac6 RPMS]# chkconfig rsh on
[root@linuxrac6 RPMS]# chkconfig rlogin on
[root@linuxrac6 RPMS]# chkconfig rexec on

[oracle@linuxrac9 ~]$ rpm -qa | grep rsh
rsh-0.17-25.3
rsh-server-0.17-25.3

[root@linuxrac6 RPMS]# chkconfig --list

...
xinetd based services:
rsh:    on
chargen-udp:    off
finger: off
rlogin: on
chargen:        off
krb5-telnet:    off
rexec:  on
rsync:  off

 安装其他服务方面,方法相似。

 2. 在Linux环境下点击菜单项(如teminal),不能弹出窗口

解答:图省事的话重启就能解决,没有小bug的操作 系统是不存在的。


五、配置两台虚拟机

 安装好一台虚拟机操作系统后,可以通过复制方法,构建另一台环境。

示例:

LinuxRac6.vmdk
LinuxRac6-s001.vmdk 
LinuxRac6-s002.vmdk 
LinuxRac6-s003.vmdk 
LinuxRac6-s004.vmdk 
LinuxRac6-s005.vmdk 
nvram
rhel4.vmx

LinuxRac6 是虚拟机的名称,全部复制完成后,不要修改文件名,只需要单机启动修改
主机名和IP地址即可,复制后网卡会有冲突,可从VM -> VM Setttings -> 删除并重新添加
网卡即可。


六、配置双机环境

 这里假设有两台主机 linuxrac9 与 linuxrac6。

---A.双网卡

 RAC里每个节点机都需要两块网卡并使用固定IP,其中一个作为两个节点机内部互相通信之用,
另外一个网卡作为外部网络连接之用。
添 加多个网卡,可从虚拟机软件菜单 VM -> VM Setttings -> 添加,要选择 Ethernet Adapter,
然 后一直缺省并点击NEXT直到结束。

两台节点机全部添加完成后,分别启动两台节点机,在System Setting -> Network 配置网络。
具体配置示例如下(因为是复制的,虚拟机名称一样是没有关系的):

 虚拟机1名:LinuxRac6

主机名:linuxrac9
eth0:134.98.105.70  
eth1:192.168.0.6

虚拟机2名:LinuxRac6

主 机名:linuxrac6
eth0:134.98.105.71 
eth1:192.168.0.9

---B.节点间hosts文件配置

RAC节点机互相不能通过IP来访问,而必须使用 主机名。因此需要设定hosts内容。另外
需要确保RAC节点名没有出现在回送地址中。
即在 /etc/hosts 文件的回送地址中不包含节点名(linuxrac9 或 linuxrac6)。

如下所示:
127.0.0.1     linuxrac9 localhost.localdomain localhost
在 RAC 安装期间将接收到以下错误信息:
ORA-00603:ORACLE server session terminated by fatal error
ORA-29702:error occurred in Cluster Group Service operation

 下面是两台节点机的 /etc/hosts 内容:

 $ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain   localhost
134.98.105.170  linuxrac9
134.98.105.171  linuxrac6
192.168.0.9     linuxrac9-priv
192.168.0.6     linuxrac6-priv

设置完成后,可在多个节点上ping linuxrac9 ,ping linuxrac6, ping linuxrac9-priv ... 来测试是否
正确。

---C.节点间访问配置

 在节点上运行Oracle Universal Installer进行RAC安装时,它会使用 rsh(或 ssh)命令将
Oracle 软件复制到RAC集群的其他节点上。运行Oracle Installer (runInstaller) 的节点必须为
RAC集群的其他节点所 信任。
即你可以在任一台节点,通过rsh(或ssh)访问其他所有节点,而不需要输入密码。

(1) 配置(rsh)

rsh 使用 /etc/hosts.equiv 文件 或 用户目录下 .rhosts 文件进行验证。

rsh安装配置见上面< 四、使用虚拟机Linux操作系统>一节。

 下面是两台节点机的 /etc/hosts.equiv  内容:
$ cat /etc/hosts.equiv
linuxrac9
linuxrac6
linuxrac9-priv
linuxrac6-priv

或 者

root用户设置
$ cat /root/.rhosts
linuxrac9
linuxrac6
linuxrac9-priv
linuxrac6-priv
root 用户需要使用/etc/hosts.equiv文件,另外须修改/etc/pam.d/rsh验证。
#%PAM-1.0
# For root login to succeed here with pam_securetty, "rsh" must be
# listed in /etc/securetty.
auth       required     pam_nologin.so
#auth       required    pam_securetty.so
auth       required     pam_env.so
auth       required     pam_rhosts_auth.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth

 oracle用户设置
$ cat /home/oracle/.rhosts
linuxrac9
linuxrac6
linuxrac9-priv
linuxrac6-priv

测 试:

正确效果:在linuxrac6节点通过rsh访问linuxrac9节点(注意最后一行):
[root@linuxrac6 ~]# rsh linuxrac9 date
connect to address 134.98.105.170: Connection refused
Trying krb4 rsh...
connect to address 134.98.105.170: Connection refused
trying normal rsh (/usr/bin/rsh)
Fri Mar 14 18:40:12 CST 2008

错误效果:在linuxrac9节点通过rsh访问linuxrac6节点(注 意最后一行):
[root@linuxrac9 ~]# rsh linuxrac6 date
connect to address 134.98.105.171: Connection refused
Trying krb4 rsh...
connect to address 134.98.105.171: Connection refused
trying normal rsh (/usr/bin/rsh)
Permission denied.

(2) 配置(ssh)

但在实际 安装Oracle10g过程中,发现rsh系列的rcp操作会失败,Oracle10g还是最好配置ssh
方式。Oracle9i还没有发现这个 问题。

 设置oracle用户的互相信任机制,分别在所有节点机下以oracle用户运行:

$ /usr/bin/ssh-keygen -t rsa
命令会
将公共密钥写入 ~/.ssh/id_rsa.pub 文件
将 私有密钥写入 ~/.ssh/id_rsa 文件

$ /usr/bin/ssh-keygen -t dsa
命令会
将公共密钥写入 ~/.ssh/id_dsa.pub 文件
将私有密钥写入 ~/.ssh/id_dsa 文件

 两个命令都会提示确认生成文件的路径和密码,密码可为空。这些密钥不能随意传递给其它
机器。

 [oracle@linuxrac9 .ssh]$ /usr/bin/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 identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
99:0d:1e:cb:7c:12:09:02:15:78:3e:f9:55:e7:12:38
[oracle@linuxrac9 .ssh]$ /usr/bin/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 identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
3e:43:04:7e:23:1c:87:25:74:9b:ef:53:42:17:af:79


确定所有节点上是否已经存在授权密钥文件 (~/.ssh/authorized_keys),我们将在所有节点机上
重新创 建,同样在某台节点机(如linuxrac9)的oracle用户下运行:

 $ touch ~/.ssh/authorized_keys
$ ssh linuxrac9 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh linuxrac9 cat ~/.ssh/id_dsa.pub  >> ~/.ssh/authorized_keys
$ ssh linuxrac6 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh linuxrac6 cat ~/.ssh/id_dsa.pub  >> ~/.ssh/authorized_keys

 命令执行会提示一些信息,按提示执行即可。

在linuxrac9上,我们在授权密钥文件 (~/.ssh/authorized_keys) 中已经获得了来自集群中各个节点
的 RSA 和 DSA 公共密钥内容。现在将其复制到集群中的其余节点。双节点集群中,剩下的节点就是
linuxrac6。使用 scp 命令将授权密钥文件复制到集群中的其余所有节点:

$ scp ~/.ssh/authorized_keys linuxrac6:~/.ssh/authorized_keys

最后在所有节点下测试ssh,第一次需要密码,以后不用,方法与 rsh相同:

$ ssh linuxrac9 date
$ ssh linuxrac6 hostname
$ ssh linuxrac9-priv date
$ ssh linuxrac6-priv hostname


---D. 节点间时间同步

 RAC不能容忍有时间不同步的现象发生,否则在安装和运行过程会出现各类严重错误。
然而虚拟机经常会出现每个节点机时间步调不一致的现 象,很有必要每隔一段时间同步所有节点
机的时间。笔者这里图省事,使用简单的rsh linuxrac6 date -s的方法,通过crontab调用保存shell进行
同步,这种方法不推荐,调用频繁会产生僵尸进程。

 [root@linuxrac9 liwei]# cat setdate.sh
#!/bin/bash
SETVALUE=`date +'%H:%M:%S'`
rsh linuxrac6 date -s $SETVALUE
echo "linuxrac9:" `date`  >> /root/liwei/setdate.log
echo "linuxrac6:" `rsh linuxrac6 date` >> /root/liwei/setdate.log

 [root@linuxrac9 liwei]# crontab -e

* * * * * /root/liwei/setdate.sh


方法很多可以使用ntp之类的工具。


七、设置共享磁盘

 很多网上文章提及plainmaker.exe去创建共享磁盘,是以前的版本,新版本使用vm-diskmanager。
命令行下进行 目录 E:\Program Files\VMware\VMware GSX Server使用vmware-vdiskmanager
创建共 享磁盘。

 如:
E:\Program Files\VMware\VMware GSX Server>vmware-vdiskmanager -c -s 4Gb -a lsilogic -t 1
"E:\LinuxRacShareDisk\LinuxShareDisk.vmdk"
Using log file C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\vdiskmanager.log
Creating a split disk 'E:\LinuxRacShareDisk\LinuxShareDisk.vmdk'
Virtual disk creation successful.
实际使用中,发现共享磁盘极不稳定,复制文件会突然关机,后重新创建,仍然如此。试了不少
次, 这里列出最后创建语句,也许是运气吧,一直比较稳定:

E:\Program Files\VMware\VMware GSX Server>vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "E:\VMDISK\LinuxShareDisk.vmdk"
Using log file C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\vdiskmanager.log
Creating monolithic preallocated disk 'E:\VMDISK\LinuxShareDisk.vmdk'
Create: 100% done.
Virtual disk creation successful.

 笔者认为,在虚拟机硬盘的设置中,“动态增加大小”和“分割成小文件”两个选项不仅降低了性能,也
是系统很不稳定的重要因素。推荐不要使 用!

 命令的具体参数含义,可以输入vmware-vdiskmanager详细查看,不再说明。 
共享磁盘创建后,需要将它分别添加到两台 节点机上。

方法:
Edit Vitrual Machine -> Hard Disk -> Add -> Next -> 选择Hard Disk Next ->Using an exsit virtual
disk Next-> Browse 选择 E:\LinuxRacShareDisk\LinuxShareDisk.vmdk 注意这里必须设置 Advance
SCSI 1:0。具体为何设置为SCSI 1:0,可以仔细研读配置文件rhel4.vmx,便可知晓。
确定后会 在配置文件rhel4.vmx中体现,另一台节点机同样处理。

注意,添加完共享磁盘后,必须在各自rhel4.vmx文件中添加如 下内容,不可重复添加:

disk.locking = "FALSE"
scsi1.sharedBus = "virtual"
scsi1:0.mode = "persistent"   

 这样两台节点机才可以正常使用共享磁盘。
测试方法,可以在两台节点机上通过fdisk -l查看。以下是已经分好区的示例:

[root@linuxrac9 ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         978     7855753+  83  Linux
/dev/sda2             979        1043      522112+  82  Linux swap

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         522     4192933+  83  Linux

八、最后

本文主要综述RAC环境的基本条件,后续文章会介绍实际操作的示例。安装配置RAC是比较复杂
的,须要有足够的耐心一点一点的克服下去。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11411056/viewspace-733432/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11411056/viewspace-733432/

RAC是一个完整的集群应用环境,它不仅实现了集群的功能,而且提供了运行在集群之上的应用程序,即Oracle数据库。无论与普通的集群相比,还是与普通的oracle数据库相比,RAC都有一些独特之处。 RAC由至少两个节点组成,节点之间通过公共网络和私有网络连接,其中私有网络的功能是实现节点之间的通信,而公共网络的功能是提供用户的访问。在每个节点上分别运行一个Oracle数据库实例和一个监听器,分别监听一个IP地址上的用户请求,这个地址称为VIP(Virtual IP)。用户可以向任何一个VIP所在的数据库服务器发出请求,通过任何一个数据库实例访问数据库。Clusterware负责监视每个节点的状态,如果发现某个节点出现故障,便把这个节点上的数据库实例和它所对应的VIP以及其他资源切换到另外一个节点上,这样可以保证用户仍然可通过这个VIP访问数据库。 在普通的Oracle数据库中,一个数据库实例只能访问一个数据库,而一个数据库只能被一个数据库实例打开。在RAC环境中,多个数据库实例同时访问同一个数据库,每个数据库实例分别在不同的节点上运行,而数据库存放在共享的存储设备上。 通过RAC,不仅可以实现数据库的并发访问,而且可以实现用户访问的负载均衡。用户可以通过任何一个数据库实例访问数据库,实例之间通过内部通信来保证事务的一致性。例如,当用户在一个实例修改数据时,需要对数据加锁。当另一个用户在其他实例中修改同样的数据时,便需要等待锁的释放。当前一个用户提交事务时,后一个用户立即可以得到修改之后的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值