LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1320|回复: 0

用VMWARE GSX SERVER实现ORACLE 9i的RAC环境

[复制链接]
发表于 2004-2-13 18:24:58 | 显示全部楼层 |阅读模式
写到中途本不想写了,但想到它可能可以给一些朋友一点帮助,就坚持写下来了


用VMWARE GSX SERVER 实现Oracle9i的RAC

一、        软件和硬件环境要求:
1.        硬件环境:

      CPU: 应该没什么限制,可MHZ太小的话,可能会很慢的,不要骂我呀:)。(俺的为P4 1.6MHZ)
      内存:至少512M内存,想当初我在没有升级内存(256M)之前好象不能启动两个内存为128M的虚拟机。(俺现在的内存为768M)
      硬盘: 这个值的要求随个人的需求而定,但最少要有6G的空间给两个Oracle软件使用。(谈一下我的配置:俺把RHEL AS3(全选)和ORACLE 9i(全选)的软件是安装在两个硬盘的实际分区上的,总体上共使用了30G的空间(两个硬盘总容量分别为80G和60G)。如果你使用VMWARE的vmdk文件,可以设置你的VMDK文件最大的容量为8G)

2.软件环境:
      操作系统:HOSTOS: WinXP+SP1    GUESTOS: RHEL AS3
      ORACLE补丁: Oracle Path Set 3(即Oracle9i 9.2.0.4),可以在互联网上下载,我们LinuxSir论坛上原来有的提供。
      VMWARE GSX SERVER 2.5.1:在GOOGLE里查找(vmware gsx server 下载)不包括括号:),相信不会让你失望.我用的是FOR WINDOWS版本的.
      Oracle OCFS支持: Oracle公司的一个开源项目,FOR RHEL 3可以到这里下载:http://oss.oracle.com/projects/ocfs/files/RedHat/RHEL3/i386/

二、        安装GUEST OS:
1.        不要忘记先安装HOST OS啊。。。。。。。。。。
2.        安装GUEST OS:
(1)、VPC的配置:
     先读一下GSX VMWARE2.5.1的手册和帮助文档(下载:http://www.vmware.com/pdf/gsx251 ... 完成RAC的安装
(2)、新建一个VMWARE的VPC我就不讲了,可以参考VMWARE的帮助,在此提醒一点:VPC的内存请设为至少128M内存,你的VMDK文件所在的分区要有足够的空间来安装Oracle9i和RHEL AS3。在完成上述操作之后,为VPC再增加一个网卡后,之后我们关闭VMWARE GSX SERVER软件,手工对VPC的配置应该如下:

config.version = "6"
virtualHW.version = 2
localConsole = TRUE
displayName = "Linux"
guestOS = "linux"
ide1:0.present = "true"
ide1:0.deviceType = "atapi-cdrom"
ide1:0.fileName = "auto detect"
scsi0:0.present = "true"
scsi0:0.fileName = "Linux.vmdk"
scsi0.present = "true"
memsize = "128"
ethernet0.present = "true"
ethernet0.connectionType = "bridged"
ethernet0.address="00:50:56:20:61:c6"

draw = "gdi"
ethernet1.present = "true"
ethernet1.connectionType = "bridged"
ethernet1.address="00:50:56:20:61:c7"

uuid.location = "56 4d f0 a8 49 2d e9 6c-00 b2 ed fc ee 8f d4 7f"


另一个VPC的配置如下:

config.version = "6"
virtualHW.version = 2
localConsole = TRUE
displayName = "Linux"
guestOS = "linux"
ide1:0.present = "true"
ide1:0.deviceType = "atapi-cdrom"
ide1:0.fileName = "auto detect"
scsi0:0.present = "true"
scsi0:0.fileName = "Linux.vmdk"
scsi0.present = "true"
memsize = "128"
ethernet0.present = "true"
ethernet0.connectionType = "bridged"
ethernet0.address="00:50:56:20:61:c8"

draw = "gdi"
ethernet1.present = "true"
ethernet1.connectionType = "bridged"
ethernet1.address="00:50:56:20:61:c9"

uuid.location = "56 4d 1b 13 f7 28 7d 8d-37 5b ea 52 0d e6 71 b4"

注:红色部分为我们所增加的内容。在此指定的虚拟网卡的MAC地址和连接类型.紫色部分为UUID,你的应该和我的不相同,没什么关系.

       (3)、安装RHEL AS3
启动一个VPC安装RHEL AS3,和你在真实环境下安装RHEL AS3没什么两样,不要忘记在两个VPC都要选择安装Developmete Tools包,和一个X图形环境(GNOME、KDE选一个就行了,如果不介意硬盘空间你也可以两个都选择),另外友情提醒下,两个VPC有一个装X图形环境就可以了,当然硬盘大的话另当别论了。
在安装过程中,会要求你输入两个网卡的IP配置信息,我们在此指定NIC 1的IP配置如下:
IP Address: 192.168.1.138
NET MASK: 255.255.255.0
DEFAULT GETWAY:可以为空

指定NIC-2的IP配置如下:
IP Address: 172.16.1.138
NET MASK: 255.255.255.0
DEFAULT GETWAY:可以为空

节点名: rachost1
           之后按照RHEL AS3安装程序的提示,完成第一个VPC的安装,我们为了更快完成另一个VPC的安装,先关闭此VPC。

           启动另外一个VPC安装RHEL AS3,指定两个NIC的配置信息如下:
IP Address: 192.168.1.139
NET MASK: 255.255.255.0
DEFAULT GETWAY:可以为空

指定NIC-2的IP配置如下:
IP Address: 172.16.1.139
NET MASK: 255.255.255.0
DEFAULT GETWAY:可以为空

节点名: rachost2
           之后按照RHEL AS3安装程序的提示,完成VPC的安装,先关闭此VPC。

      (4). 为了测试两个VPC的安装是否正确完成,现在我们启动两个VPC,用root帐号LOGIN到系统里,试通两台VPC的配置是否正确,在节点rachost1上运行两个命令: ping 192.168.1.139和ping 172.16.1.139,以测试两台VPC的网络是否互通;在节点rachost2上上运行两个命令: ping 192.168.1.138和ping 172.16.1.138,以测试两台VPC的网络是否互通, 上述命令都应该运行成功,如果命令返回错误,则请检查你的VPC配置。
      
      (5)、配置实现两台VPC所需要的共享磁盘:
       关闭两台正在运行的VPC,在节点名为(rachost1)的VPC上增加一个磁盘,在增加磁盘过程出现如下对话框时请做修改如下参数,如下两图所示:


我们把此处的设置修改为如下图所示:


我们把磁盘设置为大小为0.8G,此磁盘将是我们的共享磁盘,我们将在些磁盘上创建Oracle 9i RAC数据库,单击next,进行下一步


在此单击Advanced按钮,如下图示,设置成如下所示:


在此单击Funish按钮完成节点rachost1共享磁盘的增加.

在rachost2上增加rachost1所创建的共享磁盘,此过程可以参考VMWARE的资料。在完成对两台VPC增加共享磁盘后,把两台VPC关闭,手动把两台VPC的配置文件修改成如下(如果不关闭VPC可能会使手动所做的修改没有保存):

节点名为rachost1的配置文件如下:

config.version = "6"
virtualHW.version = 2
localConsole = TRUE
displayName = "Linux"
guestOS = "linux"
ide1:0.present = "true"
ide1:0.deviceType = "atapi-cdrom"
ide1:0.fileName = "auto detect"
scsi0:0.present = "true"
scsi0:0.fileName = "Linux.vmdk"
scsi0.present = "true"
memsize = "128"
ethernet0.present = "true"
ethernet0.connectionType = "bridged"
ethernet0.address="00:50:56:20:61:c6"

draw = "gdi"
ethernet1.present = "true"
ethernet1.connectionType = "bridged"
ethernet1.address="00:50:56:20:61:c7"

uuid.location = "56 4d f0 a8 49 2d e9 6c-00 b2 ed fc ee 8f d4 7f"

scsi1:0.present = TRUE
scsi1:0.deviceType = "plainDisk"
scsi1:0.fileName = "D:\VirtualMachines\plndisk\sharedisk1.pln"
scsi1.present = TRUE
disk.locking = FALSE
scsi1.sharedBus = "virtual"


另一个VPC的配置如下:

config.version = "6"
virtualHW.version = 2
localConsole = TRUE
displayName = "Linux"
guestOS = "linux"
ide1:0.present = "true"
ide1:0.deviceType = "atapi-cdrom"
ide1:0.fileName = "auto detect"
scsi0:0.present = "true"
scsi0:0.fileName = "Linux.vmdk"
scsi0.present = "true"
memsize = "128"
ethernet0.present = "true"
ethernet0.connectionType = "bridged"
ethernet0.address="00:50:56:20:61:c8"

draw = "gdi"
ethernet1.present = "true"
ethernet1.connectionType = "bridged"
ethernet1.address="00:50:56:20:61:c9"

uuid.location = "56 4d 1b 13 f7 28 7d 8d-37 5b ea 52 0d e6 71 b4"

scsi1:0.present = TRUE
scsi1:0.deviceType = "plainDisk"
scsi1:0.fileName = "D:\VirtualMachines\plndisk\sharedisk1.pln"
scsi1.present = TRUE
disk.locking = FALSE
scsi1.sharedBus = "virtual"

注:红色部分为我们所增加的内容.

      (6)、验证共享磁盘是否已经正确增加, 现在同时启动两台VPC,用root进入系统运行一下命令: fdisk –l /dev/sdb,应该会显示正确的磁盘容量信息。我们稍后会在这个设备上用OCFS文件系统来创建ORACLE数据库。



三、        安装Oracle数据库软件
在安装ORACLE 9i数据库之前,感谢互联网给我们带来的便利和无限的知识海洋………………..
首先,您可以在下面的网址找到ORACLE安装过程的文章,网址如下:
<<oracle rac安装过程详解>>
http://www.chinaunix.net/jh/19/211138.html


<<在RedHat EL AS 3上安装Oracle9.2.0>>
http://www.itpub.net/showthread.php?threadid=171693
<<Werner's Linux Page>>
   http://www.puschitz.com/

(1)、启动安装有X环境的VPC(节点名为rachost1),在这上面我们将安装ORACLE9i数据软件,在互联网有很多介绍在LINUX上安装ORACLE数据库的文章,我们按照《oracle rac安装过程详解》这篇文章在rachost1完成Oracle9iRAC单节点数据库软件的安装,请注意我们不要在完成数据软件后,创建数据库,因为我们建的数据库将是多节点的。
(2)、现在把我们装好的rachost1的$ORACLE_BASE目录用FTP的方式传送到rachost2相同的目录下。



四、        配置Oracle 9i数据库软件:
(1)、首先我们要对我们的两个VPC进行配置:
      1、修改rachost1、rachost2的文件/etc/hosts,完成后内容如下:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain   localhost
192.168.1.138   rachost1   rachost1.rac.com
192.168.1.139   rachost2   rachost2.rac.com
172.16.1.138    rachost1prv        rachost1prv.rac.com
172.16.1.139    rachost2prv        rachost1prv.rac.com
  2、修改rachost1、rachost2的文件/etc/hosts.equiv,完成后内容如下:
rachost1      oracle
rachost2      oracle
rachost1prv   oracle
rachost2prv   oracle
            3、修改rachost1、rachost2的文件/etc/sysctl.conf,在文件尾增加如下内容:
# for  oracle
# IPC memory and filesystem settings
fs.aio-max-size =1048576
fs.file-max = 327680
fs.aio-max-nr = 1048576
vm.pagecache = 10 20 30
net.core.rmem_max=262144
net.core.wmem_max=262144
net.core.rmem_default=262144
net.core.wmem_default=262144
# Shared memory and Semaphore memory settings
kernel.shmmax = 47483648
kernel.shmmin = 1
kernel.shmmni = 1024
kernel.shmseg = 10
kernel.sem = 100 32000 32 128
            4、在rachost1、rachost2上,安装ocfs安装包:
                  # rpm –ivh ocfs-2.4.21-EL-1.0.9-12.i686.rpm
                  # rpm –ivh ocfs-support-1.0.9-12.i686.rpm
                  # rpm –ivh ocfs-tools-1.0.9-12.i686.rpm
            5、在rachost1、rachost2上,运行以下命令:
                  #chkconfig ocfs on
                  #chkconfig rsh
            6、在rachost1上对共享磁盘进行分区,其过程如下:
#fdisk /dev/sdb
Command (m for help): p

Disk /dev/sdb: 643 MB, 643825664 bytes
64 heads, 32 sectors/track, 614 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot    Start       End    Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-614, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-614, default 614):
Using default value 614

Command (m for help): p

Disk /dev/sdb: 643 MB, 643825664 bytes
64 heads, 32 sectors/track, 614 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sdb1             1       614    628720   83  Linux

Command (m for help): w
            7、在rachost1上,创建文件/etc/ocfs.conf,其内容如下:
#
# ocfs config
# Ensure this file exists in /etc
#

        node_name = rachost1prv.rac.com
        node_number =
        ip_address = 172.16.1.138
        ip_port = 7000
        comm_voting = 1
        guid = 5D82E010E4913BE255E30050562061C7

在rachost2上,创建文件/etc/ocfs.conf,其内容如下:
#
# ocfs config
# Ensure this file exists in /etc
#

        node_name = rachost2prv.rac.com
        node_number =
        ip_address = 172.16.1.139
        ip_port = 7000
        comm_voting = 1
        guid = 5D82E010E4913BE255E30050562061C9

注:红色部分为guid,应该和我的内容不同

            8、重新启动两个VPC,以使我们的修改得以生效。

五、        创建ORACLE数据库
在此之前请确保两台VPC上oracle贴的GID UID值是相同的
在此之前请确保两台VPC上oracle贴的GID UID值是相同的

(1)、现在我们可以在设备上/dev/sdb1上创建OCFS文件系统,以准备建RAC数据库的空间:

在rachost1节点上执行以下命令:
#su - root
mkfs.ocfs -F -b 128 -L /home/oradata/ -m /home/oradata \
          -u `id -u oracle` -g `id -g oracle` -p 0775 /dev/sdb1
Cleared volume header sectors
Cleared node config sectors
Cleared publish sectors
Cleared vote sectors
Cleared bitmap sectors
Cleared data block
Wrote volume header
#
#mount –t ocfs /dev/sdb1 /home/oradata

在rachost2节点上执行以下命令:
#su – root
#mount –t ocfs /dev/sdb1 /home/oradata

(2)、配置启动OCM 9.2.0.4:
在节点rachost1上,修改$ORACLE_HOME/oracm/admin/cmcfg.ora的内容如下:

HeartBeat=15000
ClusterName=Oracle Cluster Manager, version 9i
PollInterval=1000
MissCount=210
PrivateNodeNames=rachost1prv  rachost2prv
PublicNodeNames=rachost1 rachost2
ServicePort=9998
HostName=rachost1
CmDiskFile=/home/oradata/cmdiskfile
KernelModuleName=hangcheck-timer

在节点rachost2上,修改$ORACLE_HOME/oracm/admin/cmcfg.ora的内容如下:

HeartBeat=15000
ClusterName=Oracle Cluster Manager, version 9i
PollInterval=1000
MissCount=210
PrivateNodeNames=rachost1prv  rachost2prv
PublicNodeNames=rachost1 rachost2
ServicePort=9998
HostName=rachost2
CmDiskFile=/home/oradata/cmdiskfile
KernelModuleName=hangcheck-timer

在启动ocm之前,在节点rachost1、rachost2上,运行以下命令:
#su – root
#echo ‘srvconfig_loc=/home/oradata/srvconffile’ > /var/opt/oracle/srvConfig.loc
#chown oracle:dba /var/opt/oracle/srvConfig.loc



在节点rachost1上,运行以下命令:
#su – oracle
# dd if=/dev/zero of=/home/oradata/cmdiskfile bs=1024 count=4096
#dd if=/dev/zero of=/home/oradata/srvconffile bs=1024 count=1024

在节点rachost1上,运行以下命令,启动OCM:
#export ORACLE_HOME=”your oracle home dir”
#cd $ORACLE_HOME/oracm/bin
#./ocmstart.sh
#ps
  PID TTY          TIME CMD
  927 pts/0    00:00:00 su
  929 pts/0    00:00:02 bash
1083 pts/0    00:00:00 oracm
1089 pts/0    00:00:00 ps

红色标记出来的进程为OCM的进程.

在节点rachost2上启动OCM,过程同上。

启动Oracle Global Services服务,在节点rachost1上,运行以下命令:
#su – oracle
#srvconfig –init
#gsdctl start

在节点rachost2上,
#su – oracle
#gsdctl start

现在,我们就可以创建数据库了,我是使用dbca保存数据创建脚本后,在命令行下使用脚本建的数据库。

#dbca -datafileDestination /home/oradata

六、        验证数据库
(1)、修改客户端的$ORACLE_HOME/network/admin/tnsnames.ora的内容如下:
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rachost1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = rachost2)(PORT = 1521))
      (LOAD_BALANCE = on)
      (FAILOVER = on)
    )
    (CONNECT_DATA =
      (SERVICE_NAME = racdb)
      (FAILOVER_MODE =
        (TYPE = session)
        (METHOD = basic)
      )
    )
)

在客户端运行以下命令:
#su - oracle
#sqlplus system/manager@racdb
#
以验证数据库,是否运行正常。

在节点rachost1或rachost2上,运行以下命令
#su - oracle
$ srvctl status database -d racdb
Instance racdb1 is running on node rachost1
Instance racdb2 is running on node rachost2

可以证明数据库在RAC环境下运行正常。



后记
    如果我就此贴有什么地方可以帮你的,可以到LinuxSir论坛得到帮助(网址: http://www.linuxsir.cn ),我将尽力帮助您!
祝你生活愉快!!!
                    2004-2-13
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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