VMware下RedHat安装Oracle 9i RAC全攻略

系统 3241 0

    摘要:大家都知道, oracle 9i RAC(以下简称RAC)是oracle里相对比较复杂的部分,很大一部分原因是由于RAC的环境搭建相对不如单实例方便。通常典型的 配置 是两台主机加一台存储,但是平常我们个人如果想在家研究测试RAC的话,很少会去购买这么多设备来做测试的。幸好,我们有 VMware  GSX Server (以下简称VMware),通过使用这款非常好的 虚拟机 模拟工具,我们可以在一台PC电脑上模拟出多台主机加存储的这样一个RAC环境。

    本文首先简要介绍了RAC的原理,随后着重详细叙述了如何在一台PC电脑上,使用VMware构建两台 RedHat Linux  AS3(以下简称AS3),并虚拟一个共享存储,创建裸设备,最后在实现RAC的搭建。

    1.RAC简介

    简单来说,RAC就是位于多个主机(通常都称为节点)上的多个oracle实例同时管理一个 数据库 。数据库必须放在共享存储设备上,包括数据文件、控制文件、联机日志以及spfile都必须放在共享存储上,这样每个节点才能同时访问存储设备。每个节点之间通过高速光纤互相连接,并同步内存数据。oracle在管理不同实例里的内存里的 数据结构 ,同时要最大程度的降低I/O,引入了全局缓冲服务(GCS:Global Cache Service),同时还引入了全局锁定服务(GES:Global Enqueue Service)用来在不同节点之间通讯时进行同步管理。这些服务都是通过一组特殊的后台 进程 完成的,这些后台进程主要包括:

    (1)global cache service processes(LMSn):n从0到9,具体由信息传输的数量决定。用来控制信息到其他实例的流向,同时还管理对全局数据块的访问。LMSn进程同 样在不同实例的数据块缓存(buffer cache)里传递数据库镜像(block image)。该进程是Cache Fusion特性的一部分。

 (2)global enqueue service monitor(LMON):监控全局锁定(global enqueues)及其资源,并提供global enqueues资源的恢复操作。enqueues是用来进行串行化行更新的共享的内存结构。

    (3)global enqueue service daemon(LMD):管理对全局锁定(global enqueues)以及全局资源的访问。在每个实例中,LMD进程对传入当前实例的对其他资源的访问请求进行管理。

    (4)lock process(LCK)管理non-Cache Fusion资源的请求,比如library cache或row cache的请求。

    (5)diagnosability daemon(DIAG):获得实例中有关进程失败的诊断信息。该daemon的操作是自动的,并且它会更新alert<SID>.log文件,以记录它所做的动作。

    注意:cache fusion表示一种在RAC里的非磁盘交互方式的内存同步机制。该机制使得获得block的实例能够将block直接从内存转移到需要该block的实 例的SGA里去。这样,由于减少了磁盘交互,所以将block从一个实例转移到另一个实例的性能提高很多。而且管理也更加简便。

    RAC能够对客户端的连接请求进行 负载均衡 , 把所有客户的连接尽可能的平均分布在不同的实例上。同时,RAC还提供failover的功能,也就是说如果其中一个节点发生意外,只要这个时候连在该损 坏节点上的session没有正在进行事务运行,则该session不需要退出后重新登录,oracle会自动将该session连接到一个可用的节点 上,从而保证了7×24应用的安全性和稳定性。

    不过,RAC不提供容灾的功能,也就是说如果共享存储损坏,仍然会导致整个应用崩溃。所以,需要采用其他容灾方案结合使用,比如RAC+DataGuard等。

    2.准备工作

    VMware GSX Server:笔者测试所使用的是3.2版本,建议使用3.2及以上的版本。
    Linux:笔者使用的是RedHat Linux AS3。请使用AS2.1以上版本的linux。因为AS2.1以下的版本如果要
    支持RAC需要进行很多额外的配置,比如watchdog之类的,到了AS2.1以后缺省都不使用了,而是使用hangcheck,如果要使用watchdog,需要进行很多不必要的配置。安装介质可以是光盘,也可以是ISO文件。笔者使用的是ISO文件。
    Oracle:笔者使用的是oracle 9204 for linux,可以直接从oracle的官方网站上下载。笔者是从oracle官方网站上下载下来的三个压缩包。

    主要的准备工作就是这些,当然安装过程中可能还会需要其他的一些软件,比如plainmaker等。在需要的时候,笔者也会说明如何使用这些软件的。

 

  3.安装虚拟节点

    3.1 创建虚拟节点

    VMware 安装好以后,进入主界面,我们就可以创建两个虚拟节点。点击File->New Virtual Machine…,在打开的窗口中,在选择所安装的 操作系统 时,我们选择 RedHat Enterprise Linux 3,其他都选择缺省值,点击next,一直到让你输入disk size时,缺省事4G,我们改成8G,最后点击finish。这样就创建好了一个虚拟节点,取名为linux1。同样的方法,我们创建第二个虚拟节点,取名为linux2。

    3.2安装linux

    创建完两个虚拟节点以后,我们要开始安装linux了。在窗口的左边的Inventory框里,右键节点linux1,选择virtual machine settings…,在弹出的框中,我们选中CD-ROM,然后选择Use ISO Image,并输入相应的linux安装介质的第一个ISO文件的位置,如下图所示。选择ok以后,点击Power->Power On,相当于为节点
   
VMware下RedHat安装Oracle 9i RAC全攻略(图一) 点击查看大图

 加电,剩下的工作与在单PC机器上安装linux过程一样。这里提一点,就是在给 磁盘分区 时, 如果不使用LVM,那么在分区时,/boot给120M,/swap给256M,/给2900M,然后再创建一个/oracle,把剩下的空间都给 /oracle。在安装过程中,当提示需要换另外一张盘时,你只要再次进入图一所示界面,更改ISO文件并确定以后,再进入 虚拟机 ,选择提示中的ok即可。同样的方法,我们可以安装好另外一台虚拟机上的linux。

    RAC里每个节点都需要两块网卡并使用固定ip,一块作为两个节点互相内部 通信 用, 另外一块作为外部连接用。我们同样的,选择linux1,进入图一界面,选择add按钮,然后选择Ethernet Adapter,然后都选择缺省值并点击next直到结束。这样就为linux1添加了第二块网卡。同样的方法为linux2添加第二块网卡。分别启动两 个节点以后,我们在linux为网卡配置 ip地址 。笔者的配置是linux1的内部通信ip为:134.251.0.140,外部通信ip为:134.251.114.141。而linux2的内部通信ip为:134.251.0.141,外部通信ip为:134.251.114.140。

    4.安装共享磁盘

    4.1 创建共享磁盘

 在VMware里,共享磁盘需要使用plainmaker.exe这个工具来创建。可以到VMware GSX Server 的安装目录下找该工具是否存在。如果不存在,则可以到 google 上搜索。很多站点提供该工具的下载。进入命令提示符,输入下面的命令来创建共享磁盘。

    C:\>plainmaker D:\virtualos\sharedisk.pln 2048m

    该命令运行以后,就会在D:\virtualos目录下创建一个名位sharedisk.pln的共享磁盘,大小为2G。

    4.2 添加共享磁盘

    共享磁盘安装好以后,我们需要把它加入到前面安装好的两台linux虚拟机里。选择linux1,仍然进入到图一所示的界面里,选择左边的add按钮,在弹出的框中,选择Hard Disk,并点击next,选择方式如下面图二

VMware下RedHat安装Oracle 9i RAC全攻略(图二)    

    所示,并点击next,输入我们刚才创建的共享磁盘名:D:\virtualos\sharedisk.pln,然后不要点击finish,要点击 advanced,选择磁盘为SCSI 1:0。如下图三所示。最后点击finish。这样,我们就为linux1节点添加了共享存储。随后,我们用同样的方法为linux2节点也添加该共享存 储。
   
VMware下RedHat安装Oracle 9i RAC全攻略(图三)

 

   4.3 配置 共享磁盘

 把共享存储添加到两个节点以后,还不算完,必须修改两个 虚拟机 配置文件 。在每个节点所在目录下都存在一个后缀名为vmx的文件,这就是虚拟机的配置文件了,用notepad打开,把下面三行记录添加进去。注意,这三行中的每一行都不能重复,所以仔细检查一下vmx文件,确保这三行记录唯一。每个节点的配置文件都必须添加这三行记录。

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

    到这里,我们才算是为两个节点都配置好了共享存储。分别启动两个 linux 节点以后,进入linux,我们可以使用如下命令来确定两个节点是否都能够找到该存储了。如果提示出有设备,则表示能够识别共享存储。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) fdisk –l /dev/sdb

    5.设置两个节点的互相信任机制

    由于RAC的节点之间需要完全无障碍的访问,因此需要设定主机名互相访问以及互相信任机制。注意:以下所有步骤都必须在两台节点上各自完成。

    5.1 设置主机名

    首先,RAC之间互相不能通过ip来访问,而必须使用主机名来访问,因此需要设定hosts内容。笔者设定的是节点linux1的内部访问主机名为 linux1-prv,而外部访问节点名为linux1;节点linux2的内部访问主机名为linux2-prv,而外部访问节点名为linux2。需 要将这些信息添加到/etc/hosts文件里去,如下所示。注意,要将127.0.0.1原来所对应的linux1改名为localhost。

    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    127.0.0.1localhostlocalhost.localdomainlocalhost
    134.251.114.140 linux1
    134.251.114.141 linux2
    134.251.0.140linux1-prv
    134.251.0.141linux2-prv

    同样的,修改linux2的/etc/hosts文件,也要将127.0.0.1原来所对应的linux2改名为localhost。其他设置与 linux1节点一样。设置好以后,在linux1上ping linux2,在linux2上也ping linux1,如果都通的话,说明设置无误。

    5.2 设置 telnet 访问

    (1)通常缺省都会安装telnet-client。主要确定是否安装了telnet-server软件。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root@linux1 root]# rpm –qa | grep telnet

    (2)如果没有安装,则从AS3安装介质上找到该rpm包,并进行安装。

 (3)安装好以后,需要启动telnet服务。输入以下命令,并从弹出的框中选中telnet后确认。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root@linux1 root]# ntsysv

    (4)激活telnet服务

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root@linux1 root]# service xinetd restart

    (5)设置允许root进行telnet登录

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# vi /etc/pam.d/login

    将authrequiredpam_securetty.so这一行开头添加#,从而注释该行。

 

    5.3 设置rlogin、rsh

    由于在第一个节点上安装 oracle 软件时,oracle会自动将第一个节点上安装完毕的文件拷贝到第二个节点上,因此需要配置rlogin和rsh以及rcp等。

    (1)确定是否安装了rsh-server软件。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四)
<script type="text/javascript"><!--mce:0--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"><!--mce:1--></script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"><!--mce:2--></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"><!--mce:3--></script><script><!--mce:4--></script>
[root@linux1 root]# rpm –qa | grep rsh

    (2)如果没有安装,则从AS3安装介质上找到该rpm包,并进行安装。

 (3)安装好以后,需要启动rsh、rlogin、rexec服务。输入以下命令,并从弹出的框中选中rsh、rlogin、rexec后确认。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root@linux1 root]# ntsysv

    (4)激活rsh、rlongin服务

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root@linux1 root]# service xinetd restart

    (5)修改/etc/securetty

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root@linux1 root]# echo "rexec" >> /etc/securetty;echo "rlogin" VMware下RedHat安装Oracle 9i RAC全攻略(图四) >> /etc/securetty;echo "rsh" >> /etc/securetty

    (6)设置允许root进行rsh、rlogin

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# vi /etc/pam.d/rlogin

    将authrequiredpam_securetty.so这一行开头添加#,从而注释该行。

    (7)在/etc目录下建立hosts.equiv文件,表示两台linux节点互相信任。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# vi /etc/hosts.equiv

    在该文件里添加如下内容:

    linux1
    linux2
    linux1-prv
    linux2-prv

    (8)在root的$HOME目录下,建立.rhosts文件。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# vi .rhosts

    在该文件里添加如下内容。这样,root用户就可以直接rlogin、rsh而不用输入密码。

    linux1 root
    linux2 root
    linux1-prv root
    linux2-prv root

    (9)配置完以后,我们可以测试一下是否成功。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# rlogin linux2 VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# rsh –l root linux2 cat /etc/hosts VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# rcp /tmp/testlinux2:/tmp

   6.修改 linux内核 参数以及其他相应配置

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# vi /etc/sysctl.conf

    在该文件末尾添加如下内容:
    kernel.shmmax = 2147483648
    kernel.shmmni = 4096
    kernel.shmall = 2097152
    kernel.sem = 250 32000 100 128
    fs.file-max = 65536
    这里,对每个参数值做个简要的解释和说明。

    (1)shmmax:该参数定义了 共享内存 段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。
    (2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
    (3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。
    (4)sem:该参数表示设置的信号量。
    (5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在 linux系统 中可以打开的文件数量。

    修改好内核以后,执行下面的命令使新的配置生效。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# /sbin/sysctl -p

    通常,出于性能上的考虑,还需要进行如下的设定,以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大 进程 数量)。方法如下:

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# vi /etc/security/limits.conf

    在该文件里添加如下内容:

    oracle soft nofile 65536
    oracle hard nofile 65536
    oracle soft nproc 16384
    oracle hard nproc 16384

   7.配置 hangcheck-timer 内核模块

    Oracle9202以前,都是使用watchdog来检查系统是否挂起。从9202以后,oracle使用hangcheck-timer模块。 hangcheck-timer模块被加载到内核中,能够定时检查系统是否挂起。有个可配置的参数用来表示多少时间以后系统没响应就认为是挂起。该模块在 AS3中是自带的。

    使用如下命令检查该模块是否存在:

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# find /lib/modules -name "hangcheck-timer.o"

    使用相应的参数加载该模块:

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# /sbin/insmod hangcheck-timer hangcheck_tick=30 VMware下RedHat安装Oracle 9i RAC全攻略(图四) hangcheck_margin=180

    这里解释一下两个参数的含义:

    hangcheck_tick:该参数定义了模块启动的间隔时段。其默认值为 60 秒。 Oracle建议将其设置为 30 秒。
    hangcheck_margin:该参数定义了多少时间以后系统没响应就认为是挂起。以秒为单位。其默认值为 180秒。Oracle 建议将其设置为 180 秒。

    检查该模块是否被成功加载:

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# grep Hangcheck /var/log/messages

    为了在linux重启以后,自动加载该模块,可以将加载模块的命令添加到/etc/modules.conf中

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# echo "options hangcheck-timer hangcheck_tick=30 VMware下RedHat安装Oracle 9i RAC全攻略(图四) hangcheck_margin=180" >> /etc/modules.conf VMware下RedHat安装Oracle 9i RAC全攻略(图四) VMware下RedHat安装Oracle 9i RAC全攻略(图四)

   8.创建oracle用户和dba组

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# groupadd dba VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# useradd –g dba oracle VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# passwd oracle

    创建安装oracle所需要的目录。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# mkdir –p /oracle/ora9/product/9.2 VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# chown –R oracle.dba /oracle/ora9

     为oracle用户配置.bashrc文件。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# su – oracle VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ vi .bashrc

    将以下内容添加到.bashrc文件里。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) export LD_ASSUME_KERNEL=2.4.1 VMware下RedHat安装Oracle 9i RAC全攻略(图四) export ORACLE_BASE=/oracle/ora9 VMware下RedHat安装Oracle 9i RAC全攻略(图四) export ORACLE_HOME=/oracle/ora9/product/9.2 VMware下RedHat安装Oracle 9i RAC全攻略(图四) export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH VMware下RedHat安装Oracle 9i RAC全攻略(图四) export ORACLE_OWNER=oracle VMware下RedHat安装Oracle 9i RAC全攻略(图四) export ORACLE_SID = rac9i1 VMware下RedHat安装Oracle 9i RAC全攻略(图四) export ORACLE_TERM=vt100 VMware下RedHat安装Oracle 9i RAC全攻略(图四) export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib: VMware下RedHat安装Oracle 9i RAC全攻略(图四) /usr/local/lib:$LD_LIBRARY_PATH VMware下RedHat安装Oracle 9i RAC全攻略(图四) VMware下RedHat安装Oracle 9i RAC全攻略(图四)

    以上步骤必须在两个节点上分别完成。

    注意: 红色部分,在节点linux1上ORACLE_SID=rac9i1,而在节点linux2上则为ORACLE_SID=rac9i2。而蓝色部分,很多 资料上只是说LD_LIBRARY_PATH=$ORACLE_HOME/lib即可。但是经过笔者测试,只写这些是不够的,在下面srvconfig –init时会报错。必须按照上面蓝色部分的内容进行配置。

 

    9.为共享设备划分裸设备

    通常,对于RAC,我们都会使用裸设备来存放数据文件等需要共享的 数据库 文件。这就需要我们对共享存储划分出若干的裸设备,每个裸设备对应一个文件。

    9.1 磁盘分区

    我们要对共享存储进行分区,该步骤只需要在其中一个节点上完成即可。笔者划分了3个主分区(primary)和一个包含11个分区的扩展分区(extend)。注意, linux 上最多只能划分15个分区。超过的部分,linux是无法识别的。对每个分区的规划如下所示:

    分区名尺寸存放的文件
    /dev/sdb110M用于存放 Cluster Manager Quorum文件
    /dev/sdb2350M回滚段表空间1:Undotbs1
    /dev/sdb3350M回滚段表空间1:Undotbs2
    /dev/sdb5500M系统表空间:system
    /dev/sdb610MSpfile
    /dev/sdb7300M临时表空间:temp
    /dev/sdb8300M用户表空间:user和indx,也可以不设置该分区
    /dev/sdb910M控制文件:control file
    /dev/sdb1010M控制文件:control file
    /dev/sdb1120M第一个节点的第一组联机日志文件
    /dev/sdb1220M第一个节点的第二组联机日志文件
    /dev/sdb1320M第二个节点的第一组联机日志文件
    /dev/sdb1420M第二个节点的第二组联机日志文件
    /dev/sdb15100MSrvconfig模块所需要的Shared Configuration文件

    规划好以后,我们可以开始实际创建这些分区了。进入linux,执行如下命令进入分区界面。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# fdisk /dev/sdb

    首先输入n,然后输入p,再输入1,回车接受缺省值,再输入+10M,这样我们就创建了/dev/sdb1。同样的方法,我们可以创建sdb2和 sdb3。再次输入n,然后输入e,回车接受缺省值,再回车接受缺省值,这样,我们就创建了扩展分区sdb4,同时把剩下的空间全都给了sdb4。接下 来,我们输入n,然后回车接受缺省值,再输入+500M,这样,我们就创建了sdb5。同样的方法,我们可以把剩下的所有分区都创建出来。

 创建完毕以后,输入p,显示我们刚才所创建的所有分区,确认无误以后,输入w,从而保存我们所创建的分区,并更新分区表。

    9.2 挂载裸设备

    该步骤需要在两个节点分别进行。对裸设备的规划如下:

    裸设备文件名挂载的分区存放的文件
    /dev/raw/raw1/dev/sdb1Cluster Manager Quorum
    /dev/raw/raw2/dev/sdb2Undotbs1
    /dev/raw/raw3/dev/sdb3Undotbs2
    /dev/raw/raw4/dev/sdb5system
    /dev/raw/raw5/dev/sdb6Spfile
    /dev/raw/raw6/dev/sdb7temp
    /dev/raw/raw7/dev/sdb8user和indx
    /dev/raw/raw8/dev/sdb9control file
    /dev/raw/raw9/dev/sdb10control file
    /dev/raw/raw10/dev/sdb11Log1-thread1
    /dev/raw/raw11/dev/sdb12Log2-thread1
    /dev/raw/raw12/dev/sdb13Log3-thread2
    /dev/raw/raw13/dev/sdb14Log4-thread2
    /dev/raw/raw14/dev/sdb15Shared Configuration

    确定了裸设备的规划以后,将以下内容添加到/etc/rc.local文件。
    raw /dev/raw/raw1 /dev/sdb1# Cluster Manager Quorum
    raw /dev/raw/raw2 /dev/sdb2#undotbs1
    raw /dev/raw/raw3 /dev/sdb3#undotbs2
    raw /dev/raw/raw4 /dev/sdb5#sys01
    raw /dev/raw/raw5 /dev/sdb6#spfile
    raw /dev/raw/raw6 /dev/sdb7#temp01
    raw /dev/raw/raw7 /dev/sdb8#user01&indx01
    raw /dev/raw/raw8 /dev/sdb9#ctl1
    raw /dev/raw/raw9 /dev/sdb10#ctl2
    raw /dev/raw/raw10 /dev/sdb11#log1-thread1
    raw /dev/raw/raw11 /dev/sdb12#log2-thread1
    raw /dev/raw/raw12 /dev/sdb13#log3-thread2
    raw /dev/raw/raw13 /dev/sdb14#log4-thread2
    raw /dev/raw/raw14 /dev/sdb15#share configuration file

    检查无误后,修改/dev/raw1、/dev/raw/raw2一直到/dev/raw/raw15这15个裸设备文件的宿主为oracle。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# chown oracle.dba /dev/raw/raw1 VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# chown oracle.dba /dev/raw/raw2 VMware下RedHat安装Oracle 9i RAC全攻略(图四) 。。。。。。。 VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# chown oracle.dba /dev/raw/raw15

    分别重新启动两个节点。启动完毕以后,运行如下命令确定裸设备的 配置 情况。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# raw -aq

    10.检查安装oracle所需要的linux模块以及补丁

    在两个节点上分别确定以下这些rpm包是否都存在。

    make-3.79
    binutils-2.11
    openmotif-2.2.2-16
    setarch-1.3-1 compat-gcc-c++-7.3-2.96.122
    compat-libstdc++-7.3-2.96.122
    compat-gcc-7.3-2.96.122
    compat-db-4.0.14-5
    compat-libstdc++-devel-7.3-2.96.122

    如果没有,则从AS3的安装介质上找到这些包并加以安装。安装好上面这些模块以后,需要打补丁,补丁号为:3006854。可以到oracle官方网站下载该补丁,发送到两个节点上以后,执行:
    [root @linux1 /root]# sh rhel3_pre_install.sh

 

    11.安装 Oracle Cluster Manager

    11.1 生成OCM管理文件

 该OCM管理文件必须位于共享存储上,按照我们的规划,应该放在/dev/raw/raw1上。该步骤只需要在其中一个节点上执行即可。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# su - oracle VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=1024

    11.2 安装OCM

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ su - root VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# mv /usr/bin/gcc /usr/bin/gcc323 VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# ln -s /usr/bin/gcc296 /usr/bin/gcc VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# mv /usr/bin/g++ /usr/bin/g++323 VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# ln -s /usr/bin/g++296 /usr/bin/g++

    检验一下gcc和g++的版本。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root@linux1 root]# gcc -v VMware下RedHat安装Oracle 9i RAC全攻略(图四) Reading specs from /usr/lib/gcc-lib/i386-redhat-linux7/2.96/specs VMware下RedHat安装Oracle 9i RAC全攻略(图四) gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-122) VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root@linux1 root]# g++ -v VMware下RedHat安装Oracle 9i RAC全攻略(图四) Reading specs from /usr/lib/gcc-lib/i386-redhat-linux7/2.96/specs VMware下RedHat安装Oracle 9i RAC全攻略(图四)
<script type="text/javascript"><!--mce:5--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"><!--mce:6--></script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"><!--mce:7--></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"><!--mce:8--></script><script><!--mce:9--></script>
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-122)

    将下载下来的 oracle安装 介质(笔者下载的是ship_9204_linux_disk1.cpio.gz、ship_9204_linux_disk2.cpio.gz和ship_9204_linux_disk3.cpio.gz)拷贝到其中一个节点上。可以通过 ftp 拷贝也可以通过 samba 服务来拷贝。笔者个人倾向samba,很方便。拷贝完毕以后,使用如下命令解压。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# gunzip ship_9204_linux_disk1.cpio.gz VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# gunzip ship_9204_linux_disk2.cpio.gz VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# gunzip ship_9204_linux_disk3.cpio.gz VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# cpio -idmv < ship_9204_linux_disk1.cpio VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# rm –f ship_9204_linux_disk1.cpio VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# cpio -idmv < ship_9204_linux_disk2.cpio VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# rm –f ship_9204_linux_disk2.cpio VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# cpio -idmv < ship_9204_linux_disk3.cpio VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# rm –f ship_9204_linux_disk3.cpio

    解压完毕,在当前目录下有三个目录:Disk1、Disk2、Disk3。修改宿主信息。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# chown –R oracle.dba Disk1 VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# chown –R oracle.dba Disk2 VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# chown –R oracle.dba Disk3

     设置xhost +

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# xhost +

    开始安装OCM

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /setup]# su - oracle VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ /oracle/setup/Disk1/runInstall.sh

    在界面上,选择安装oracle cluster manager。点击next,会要求你输入public node,这时你分两行输入linux1和linux2。点击next,会要求你输入private node,这时你分两行输入linux1-prv和linux2-prv。点击next,会要求输入Quorum文件,这时输入/dev/raw /raw1。点击next开始安装cluster manager软件。这个软件很小,安装很快就会结束。

    11.3 配置OCM

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ cd $ORACLE_HOME/oracm/admin VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 admin]$ cp cmcfg.ora.tmp cmcfg.ora VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 admin]$ vi cmcfg.ora

    将该文件内容修改为如下内容:

    HeartBeat=15000
    ClusterName=Oracle Cluster Manager, version 9i
    PollInterval=1000
    MissCount=20
    PrivateNodeNames=linux1-prv linux2-prv
    PublicNodeNames=linux1 linux2
    ServicePort=9998
    HostName=linux1
    CmDiskFile=/dev/raw/raw1

    11.4 启动OCM

      
[oracle@linux1 oracle]$ rm $ORACLE_HOME/oracm/log/*.ts [oracle@linux1 oracle]$ cd $ORACLE_HOME/oracm/bin [oracle@linux1 bin]$ ./ocmstart.sh [oracle@linux1 bin]$ ps –ef|grep oracm

     如果没有发现oracm进程,则检查$ORACLE_HOME/oracm/log/下的cm.log文件,查看错误消息。

    12.安装 Oracle 软件

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四)
<script type="text/javascript"><!--mce:10--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"><!--mce:11--></script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"><!--mce:12--></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"><!--mce:13--></script><script><!--mce:14--></script>
[oracle@linux1 oracle]$ /oracle/setup/Disk1/runInstall.sh

    安装过程比较简单,也没有出现任何错误。注意选择只安装oracle软件,不要安装 数据库

    13.初始化Shared Configuration文件

    Oracle软件安装完毕以后,开始设置Shared Configuration文件。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ su - root VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# mkdir -p /var/opt/oracle VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# touch /var/opt/oracle/srvConfig.loc VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# chown oracle:dba /var/opt/oracle/srvConfig.loc VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# chmod 755 /var/opt/oracle/srvConfig.loc

 在srvConfig.loc文件中添加Shared Configuration文件所在的路径。而笔者的Shared Configuration文件位于共享存储上,对应/dev/raw/raw14。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# echo “srvconfig_loc=/dev/raw/raw14” >> /var/opt/oracle/srvConfig.loc

    创建该Shared Configuration文件。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [root @linux1 /root]# su - oracle VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ dd if=/dev/zero of=/dev/raw/raw14 bs=1024 count=102400 VMware下RedHat安装Oracle 9i RAC全攻略(图四)

     初始化该Shared Configuration文件

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ srvconfig -init

    笔者一开始执行报错,结果把环境变量$LD_LIBRARY_PATH在.bashrc中设置为如下值后,再启动就不会报错了:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH。

    14.创建数据库

    使用dbca创建数据库还是很简单的。不过,笔者还是走了些弯路。主要是undotbs1不能太小,笔者一开始设置为240M,结果建库时总是报错。后来加大到350M后,成功建库。启动dbca前,要先在两个节点上分别启动gsd进程。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ $ORACLE_HOME/bin/gsdctl start

    然后启动dbca。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) [oracle@linux1 oracle]$ dbca

    选择创建 cluster database,点击next,把所有可以不选的组件都不选,点击next后,在初始化参数设置的地方,修改spfile的路径为:/dev/raw /raw5。然后点击next,直到最后界面,笔者把表空间indx、users、tools都删除了,为了建库干净。然后按照前面的规划,分别把裸设备 文件名填写到对应的文件上去。注意,每个文件都不要设定autoextend on。最后选择生成脚本,点击finish。

    当脚本生成完毕时,先别急着点ok。进入脚本所在目录,检查一下init.ora.xxxxxxxxxxxxx文件(这里xxxxxxxxxxxxx为随 即序列号)。着重检查最后几行,不知为何,自动生成的init.ora文件会有点问题。比如,笔者这里生成的 init.ora.7232006164055内容为:

    rac9i1.instance_name=rac9i
    rac9i2.instance_name=rac9i2
    rac9i1.instance_number=1
    rac9i2.instance_number=2
    rac9i2.local_listener=LISTENER_RAC9I
    rac9i1.local_listener=LISTENER_RAC9I1
    rac9i2.thread=2
    rac9i1.thread=1
    rac9i2.undo_tablespace=UNDOTBS2
    rac9i1.undo_tablespace=UNDOTBS1

    笔者用红色标示出来的地方是有问题的,按照这样的初始化参数建立起来的RAC数据库,第二个节点没有办法通过 负载均衡 来访问。同时,最好把local_listener和remote_listener修改掉。最后修改后的这块内容为:

    rac9i1.instance_name=rac9i1
    rac9i2.instance_name=rac9i2
    rac9i1.instance_number=1
    rac9i2.instance_number=2
    rac9i2.local_listener='(address=(protocol=tcp)(host=linux2)(port=1521))'
    rac9i2.remote_listener='(address=(protocol=tcp)(host=linux1)(port=1521))'
    rac9i1.local_listener='(address=(protocol=tcp)(host=linux1)(port=1521))'
    rac9i1.remote_listener='(address=(protocol=tcp)(host=linux2)(port=1521))'
    rac9i2.thread=2
    rac9i1.thread=1
    rac9i2.undo_tablespace=UNDOTBS2
    rac9i1.undo_tablespace=UNDOTBS1
   
    修改完这些内容以后,回到原来的dbca界面,点击ok,就开始数据库的正式安装了。当然,也可以在dbca创建好数据库以后再修改这些内容也是可以的。创建完数据库以后,第二个节点的实例也会自动启动。这时,整个RAC数据库环境就已经搭建完毕了。

 

    15.验证并测试RAC数据库

    在 服务器端 ,执行如下语句。观察是否有两个实例在运行。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四)  SQL> select INSTANCE_NUMBER, STATUS,HOST_NAME from gv$instance; VMware下RedHat安装Oracle 9i RAC全攻略(图四) INSTANCE_NUMBER STATUSHOST_NAME VMware下RedHat安装Oracle 9i RAC全攻略(图四) --------------- ------------ ------------------ VMware下RedHat安装Oracle 9i RAC全攻略(图四) 1OPENlinux1 VMware下RedHat安装Oracle 9i RAC全攻略(图四)
<script type="text/javascript"><!--mce:15--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"><!--mce:16--></script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"><!--mce:17--></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"><!--mce:18--></script><script><!--mce:19--></script>
2OPENlinux2

    15.1 测试负载均衡

    在客户端上修改tnsnames.ora文件,添加如下内容:
    rac =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = linux2)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = linux1)(PORT = 1521))
    )
    (CONNECT_DATA =
    (service_name = rac9i)
    (failover_mode=(type=select)(method=basic))
    )
    (LOAD_BALANCE=ON)
    (FAILOVER=ON)
    )

    然后,为了能识别主机名linux1和linux2,笔者还修改了C:\WINDOWS\system32\drivers\etc目录下的hosts文件,添加如下内容:

    134.251.114.140linux1
    134.251.114.141linux2

    最后,在命令窗口执行tnsping rac来检验是否能够连通。检测无误以后,开始测试。分两种方法,第一种方法是开两个命令行窗口,在一个窗口中分别输入如下的命令,然后再在另外一个窗口也输入如下的命令。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) D:\>sqlplus /nolog VMware下RedHat安装Oracle 9i RAC全攻略(图四) SQL> connect sys/hanson@rac as sysdba VMware下RedHat安装Oracle 9i RAC全攻略(图四) SQL> select instance_name from v$instance; VMware下RedHat安装Oracle 9i RAC全攻略(图四) SQL> exit

 但是,从结果看起来,并没有实现负载均衡。两个窗口出现的都是rac9i1。而不是笔者想象中的一个窗口是rac9i1,另一个窗口是rac9i2。笔者又开了一个命令行窗口,再次重复执行上面的命令,仍然显示rac9i1。

    换第二种测试方法,建立一个test.sql文件,内容如下:

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) connect test/test@rac; VMware下RedHat安装Oracle 9i RAC全攻略(图四) select instance_name from v$instance; VMware下RedHat安装Oracle 9i RAC全攻略(图四) exit

    然后,打开一个命令行窗口,反复执行如下命令:

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) D:\>sqlplus /nolog @c:\test.sql

    这时,显示出来的实例名确实是负载均衡了,rac9i1和rac9i2交替出现。笔者认为,这样的负载均衡意义似乎不是很大。

    15.2 测试failover

    实现failover,需要在客户端的tnsnames.ora文件的CONNECT_DATA节点里添加如下行:

    (failover_mode=(type=select)(method=basic))

    进入命令行窗口。

      
VMware下RedHat安装Oracle 9i RAC全攻略(图四) D:\>sqlplus /nolog VMware下RedHat安装Oracle 9i RAC全攻略(图四) SQL> connect sys/hanson@rac as sysdba VMware下RedHat安装Oracle 9i RAC全攻略(图四) SQL> select instance_name from v$instance; VMware下RedHat安装Oracle 9i RAC全攻略(图四) INSTANCE_NAME VMware
分享到:
评论

VMware下RedHat安装Oracle 9i RAC全攻略


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论