VMware下RedHat安装Oracle9iRAC全攻略

VMware下RedHat安装Oracle9iRAC全攻略,第1张

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

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

RAC简介

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

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

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

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

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

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

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

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

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

准备工作

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

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

安装虚拟节点

创建虚拟节点

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

安装linux

创建完两个虚拟节点以后 我们要开始安装linux了 在窗口的左边的Inventory框里 右键节点linux 选择virtual machine settings… 在d出的框中 我们选中CD ROM 然后选择Use ISO Image 并输入相应的linux安装介质的第一个ISO文件的位置 如下图所示 选择ok以后 点击Power >Power On 相当于为节点   

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

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

安装共享磁盘

创建共享磁盘

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

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

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

添加共享磁盘

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

   

所示 并点击next 输入我们刚才创建的共享磁盘名 D:\virtualos\sharedisk pln 然后不要点击finish 要点击advanced 选择磁盘为SCSI : 如下图三所示 最后点击finish 这样 我们就为linux 节点添加了共享存储 随后 我们用同样的方法为linux 节点也添加该共享存储    

配置共享磁盘

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

disk locking = FALSE    scsi sharedBus = virtual     scsi : mode = persistent

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

Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目录存储结构,以及数据的同步(其实也不是实时同步的),这两套系统之间只要网络是通的就可以了,是一种异地容灾的解决方案。而对于RAC,则是本地的高可用集群,每个节点用来分担不用或相同的应用,以解决运算效率低下,单节点故障这样的问题,它是几台硬件相同或不相同的服务器,加一个SAN(共享的存储区域)来构成的。

Data Guard由两个多两个以上的独立的数据库构成,他们各自有各自的存储,Oracle负责他们之间的切换和数据同步

双机热备由两台计算机和一个共享存储设备构成,通过第三方软件(HA Rose等)实现切换,不需要做数据同步

建议应用RAC+Dataguard ,RAC保证可用性,Dataguard在RAC组独立磁盘上和另外一台主机上,保证可靠性。

双机就是人们所说的双机热备,数据库放在共享设备上,同一时刻只能有一台主机接管,另一台待用,这种方式只能保护实例,不能保护db,而且备机长期处于闲置,对资源是一种极大的浪费!

如果原本是双机,建议转换为RAC

规划好应用,DML *** 作从一个节点跑,查询 *** 作从另一个节点跑,通常不需要太多调优就可以利用闲置的另外一台机器了

RAC服务器共用一套存储,同时提供服务,没有主备之分.宕一个其它的可以继续服务.

双机热备,共用一套存储,一个提供服务一个备份,主机宕了切换到备份服务器提供服务.

data guard 完全两套系统,存储是单独的,用日志同步.

RAC: 实例层冗余

DG :数据库层冗余

热备:仅仅只是数据冗余

个人理解:

RAC :实例冗余,而且还可以做到数据库的loadbalance。

DG :多份数据,所以能做到数据冗余,但是只有主节点提供服务。

热备:与RAC最大的差异可能就是RAC有多个实例,一个数据库。而热备只是一个实例,一个数据库。所以做不了并发和loadbalance。

Oracle RAC只是做Oracle的应用,rose,legato还可以做其它的

HA:是High Availability 的首字母组合,翻译过来,可以叫做高可用,或高可用性,高可用(环境)。我觉得应该说HA是一个观念而不是一项或一系列具体技术,就象网格一样。作过系统方案就知道了,评价系统的性能当中就有一项高可用。广义的高可用涉及到系统的各个方面,简单来说,让系统不会中断 运行,就是高可用。包括软件的高可用,硬件的高可用,网络的高可用等等。具体实现的方案包括 *** 作系统的集群,数据库的集群,硬件的冗余,网络的冗余等等。做HA方面的软件,有IBM的HACMP(很多常用AIX的人,常说的HA就指HACMP,乱啊)、SUN的Sun Cluster、HP的MC/SG等。

在2000年以前,大家谈HA,大部分时候说的是 *** 作系统一级的双机热备,主流产品当时有IBM HACMP4.1,HP的MC/SG啥版本忘了,sun的系统很多人不用VCS,用的是一个叫dataware的东西。现在很多人眼中的HA也还是这样。时至今日,HA包括的东西可就多了,先不说其他方面,单就数据库,单就Oracle,与HA相关的产品先后有:高级复制(AdvanceRepication)、OPS/RAC(Real Application Cluster)、数据卫士(Data Guard)、oracle流(Oracle Streams)、分区(Oracle Partition)这样数款产品。照这么说,RAC只是HA这个概念下的一个具体产品而已!目前为止,只有RAC和分区是Oracle要收取licence的,其他的,只要给经验丰富的第三方实施方付一定的规划/设计及部署费用就可以了;当然,也可以自己照着文档依葫芦画瓢,但是这样弄出的环境是否能达到高可用就难说了。事实上,大部分人所说的HA,还是狭义上的HA,也就是OS一级的双机热备。

RAC:是real application cluster的简称,它是在多个主机上运行一个数据库的技术,即是一个db多个instance。它的好处是 可以由多个性能较差的机器构建出一个整体性能很好的集群,并且实现了负载均衡,那么当一个节点出现故障时,其上的服务会自动转到另外的节点去执行,用户甚 至感觉不到什么。

双机热备(HA)和RAC有啥区别呢?

1、对于硬件来说,基本上一样,共享存储、光纤线(也有还用SCSI线的)、多台小型机(可以做多节点的相互热备,也可以做多节点的RAC)、光纤交换机(如果是用光纤卡的话);但做RAC,在主机之间,最好使用高带宽网络交换机(虽然不用也可以做成);因此硬件成本相差不大。

2、软件呢,差别可不小。如果是双机热备,必须买 *** 作系统级的双机管理软件;如果是RAC,目前还是建议购买双机管理软件(尽管10g的crs+asm可以摆脱双机软件了,但ASM目前实在太难伺候了),当然还得买RAC license。

3、日常维护。RAC要求的技术含量更高,也应该更勤快。最关键的是得买oracle服务,否则遇到有些问题(bug),你就比单机还不高可用了。

4、优缺点。这个,看看RAC的官方论述吧。如果能用好,确实是很有好处的。目前我们的40多个客户的使用情况来看,RAC确实大大降低了他们的downtime,另一方面可以说就是提高了生产力咯。

Dataguard:一般是出于容灾的目的。是主数据库的备用库(standby 库)通过自动传送和接受archivelog,并且在dataguard库自动apply 这些log,从而达到和主数据库同步的目的,可能dataguard 库是建立的异地的,当主库所在的区域出现了致命性的灾难时(火灾、地震等),主库没法修复时,这时可以切换dataguard 为主库的模式,对外提供服务,而它的数据基本是当前最新的。目前可能大家对于 dataguard 库的使用已经拓展出了其他更多的用途,比如备份,跑报表等等。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8547772.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存