大话OracleGrid:云时代的RAC(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-21 08:28:28

点击下载

作者:张晓明著

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

大话OracleGrid:云时代的RAC

大话OracleGrid:云时代的RAC试读:

前言

自 2001年首次发布后,Oracle RAC(Real Appliction Clusters,真正应用集群)一直是最畅销的 Oracle 数据库产品之一,也是 Oracle 技术领域中最难掌握的技能之一。

当Oracle产品线进化到11g时代,我们惊奇地发现,数据库家族有了太多的变化。例如,“服务器池”和“服务管理质量”,它们是在整合环境中满足服务级别的关键;Oracle Exadata 改变了云的采购与部署模型,提供了私有云(cloud in a box),从而打开了新的天地。Oracle 11g 还引入了一些关键的性能改进,如混合列压缩、智能闪存和智能扫描。同时,Oracle 11g RAC 也与Oracle 10g RAC 大不同了。

如果要用一个词来描述 Oracle 11g RAC 和 Oracle 10g RAC 的区别,那就是“规模”。Oracle 10g 的 RAC 定位于单库,而 Oracle 11g 的 RAC 定位于数据中心、私有数据云。所以,对于 Oracle 11g 的所有新特性,DBA 必须打破自己以往的思维局限,应该在一个更宏大的背景下来理解 Oracle 11g 的意义,否则就辜负了 Oracle 的一番苦心。

本书就是专为Oracle 11g Grid Infrastructure 而生的。这是Oracle 11g RAC 的时代

根据谷歌趋势的数据,“oracle 10g”和“oracle 11g”这两个关键词的搜索量趋势如图1所示。Oracle 11g 从2007年开始进入人们的视线,一直处于上升通道,而Oracle 10g的关注度从2008年开始下降,但在这个时期Oracle 10g 的市场份额还占大头。到了2012年前后,两个版本打平,各占半壁江山。不过这个平衡没有持续多久,Oracle 11g 开始快速 地占领Oracle 10g 原有的地盘,至此Oracle 10g 日渐式微。图1 “oracle 10g”和“oracle 11g”两个关键词的趋势变化

再来看一下“oracle 10g rac”、“oracle 11g rac”、“oracle 10g grid”、“oracle 11g grid”这4个关键词的关注度趋势,如图2所示,这次的信息量就大了。图2 RAC和Grid的趋势变化

首先,我们只看到了RAC对应的两条线,Grid对应的线基本看不到。这说明大家还是中意RAC的叫法,虽然Oracle一厢情愿的大力推广Grid,但至今还没有打响Grid的名号,任重而道远啊。

其次,与图1 不同的是,“oracle 10g rac”那条线已经触底,完全没有反弹的迹象,看来Oracle 10g RAC 退出市场的信号强烈。

让我们把镜头拉近,把时间跨度缩小到2012年1月至2013年10月,这时,关注度趋势如图3所示,其含义不言自明,这是Oracle 11g RAC 的时代。图3 近两年的情况本书特点

老子说过:“有道无术,术尚可求。有术无道,止于术”。

本书最大的特点是侧重于理论讲述和实战演练,尤其是对理论的剖析有一定的深度,并通过大量完整的案例来论证这些理论。DBA 和开发人员特点不同,对于开发人员来说,从某种角度上,强调创造力决定高度。但是DBA要求的是稳定压倒一切,DBA必须去适应自己所使用的产品,而不能期待产品去适应自己,更没有机会去改变产品,因此了解这个产品的工作原理是非常必要的。

本书对 Grid 进行了系统的介绍,没有跌宕起伏的故事、没有光怪陆离的情节、也没有故作高深的独门秘籍,只是把 Grid 的前世今生向读者娓娓到来。我会告诉你从Oracle RAC 到Oracle Grid 发生了哪些事情,以及为什么会有这些变化。当把这些变化放在一个宏大的历史背景下,我们会发现Oracle Grid 的技术变迁原来是那么自然流畅、水到渠成。

此外,本书并没有覆盖Oracle 11.2 的方方面面,像数据库本身的增强特性(如智能分区表、优化器的增强等),这些内容虽然也值得探索,但不在本书的讨论范围之内,所以也就没有涉及。本书只讨论与Oracle 11.2 RAC 有关的最重要的话题。本书适用读者

云时代的RAC,书如其名,本书是关于RAC的,或者说是关于Oracle数据中心、私有数据云的入门指导,所以这本书适合于初、中级数据库管理员和数据库开发人员。

虽说Grid和RAC是一脉相承,但本书关注的是Grid何以成为Grid,也就是那些区别于RAC的变化,而RAC本身的内容,本书不做涉猎。如果你对RAC有一定基础,并做过类似的DBA 工作,但是由于条件所限,一直没有接触过Oracle 11.2 RAC,那么这本书就非常适合你。

这本书是专为Oracle Grid 11.2 而生的,不适合Oracle Grid 11.1 的读者,这两个版本差异较大。简单地说,11.1版本基本是10.2版本的延续,而11.2版本是全新的(至少在感觉上是这样的)。

本书涵盖了11.2.0.1、11.2.0.2、11.2.0.3这3个版本。如果没有特殊说明,那就是同时适用于这3个版本。对于那些只适用于特定版本的内容,我会明确标出。本书结构与内容

本书分为4个部分,共18章。

第一部分 安装

工欲善其事,必先利其器。学习Grid必须先有环境,所以第1章和第2章作为本书的第一部分,将带领读者从无到有地搭建一个 Grid 集群。本书使用的是真正的物理机环境,而不是使用虚拟机。

如果读者具有一定的 RAC 使用经验,那么就会对安装过程的变化有所感觉。第2章就是在此基础上展开的。掌握这两章的内容,虽然不能说对 Grid 有多熟悉,但应该可以在应聘DBA的面试中多一份自信。

我曾面试过很多 DBA应聘者。我个人比较看重应聘者对基础知识的把握,对应聘者实战经验的要求反而不高。例如,我会关注应聘者对整体架构的把握,比如 Cache Fusion,至于他解决过多少ORA错误,我反而不那么看重。当然这也得感谢Oracle公司,新版本越来越稳定,Metalink上的方法总是比问题多。遗憾的是,虽然我遇到许多DBA应聘者他们的简历上都写着熟练甚至精通RAC,但几个问题下来,就可以发现他们还停留在 RAC 安装的水平上。所以,对于这些读者来说,我建议你们至少坚持读完第2章,这样起码能对Oracle 11.2 的一些变化有一个大致的了解。

第二部分 平台

这一部分包括第3~第8章,介绍的是 Grid Infrastructure(GI),简称 Grid。Grid这个概念在Oracle 10g 就已经出现了(Oracle 10g 中的“g”就是Grid),但生不逢时,不但没有火起来,还被后来的各种“云”赶超。今天回过头来看,出现这种情况并不奇怪,因为Oralce 10g 中的Grid 只是提了个概念,产品层面并没给予有力的支撑,自然难当大任。另外,Oracle 10g 中的“g”是用于数据库的,集群软件叫Clusterware,这也能看出来,Oracle当时对Grid的定位也比较模糊。

随着各种“云”的粉墨登场,业界充分见识到了平台的力量,显然,做一个网格化的平台要比单纯的数据库更富有“钱”景。那一刻Larry 顿悟了,于是Oracle 11g 里,除了DB网格继续发扬光大外,Clusterware也向Grid靠拢了。所以,在云计算的大背景下,借助各种耳熟能详的云产品,我们对Oracle 11g 这个Grid 的理解也就会越来越准确、越来越深刻。

本书的第3章和第4章介绍了Grid的组成。第3章为Grid画了一个素描,介绍了几个解剖工具,为第4章的抽丝剥茧做好了铺垫。这两章相辅相成,采用了“先见林、后见木”的描述方式,带领读者由浅入深地认识每个元素。

第5章和第6章介绍了ASM,用过Oracle 10g RAC 的读者一定对ASM 不陌生。所以,这两章只介绍Oracle 11g 中的变化。Oracle 11g ASM 的变化可以从大小两个层面来分析,小与大的区别如同量变和质变的区别。

先说小变化,也就是一些原有功能的升级或加强,这些内容有些琐碎,这里不一一列举,一并包含在第5章中。

重要的是大变化,ASM 有两大变化:第一,定位变化,在Oracle 10g 中,ASM 是数据库的一个辅助功能,算是一个特供产品;而在 Oracle 11g 中,ASM 被移到了Clusterware 中,并促使了 Clusterware 的改名,这个变化不像功能变化那么简单,而是产品定位的变化,从此ASM从特供转向了平台化。第二,功能平民化,更加接地气。Oracle 10g的ASM只能用于Oracle数据库。而Oracle 11g的ASM提供了ADVM和ACFS两个新功能,使得它可以作为一个通用文件系统。这样一来,文本、图片、电影、Word文档、PDF就都可以放到ASM上去,而且免费提供集群功能。这就是第6章要讨论的内容。

第7章介绍了SCAN,这是一个平台级的监听器。很多能当服务器用的东西都需要有一个入口,例如,Apache、Tomcat、防火墙、交换机都有监听器。自然Oracle数据库也有监听器,这就是我们熟悉的1521端口。既然Grid想做平台,就需要有入口,这个入口就是SCAN,可以把它理解为Oracle数据库的监听器,它也的确是用监听器实现的。但细节上还是有一些差异的,这些问题都会在第7章中说明。

既然 Grid 要作为一个平台,那么理论上它就应该支持各种应用,能为各种程序提供高可用性支持。如果只是一个单实例数据库,而不是RAC,那么该如何借助Grid平台来实现一定程度的高可用性呢?第8章就讨论了这个问题。尤其是我们知道Oracle只有双机互备而没有双机热备功能,所以IBM的HACMP一直很有市场。不过现在情况有些变化了,Grid提供了SIHA,虽然目前SIHA的效果尚未得到可靠的市场验证,但从理论上说,它就是一个双机热备的解决方案。

第三部分 私有云

这一部分包括第9~第13章,是本书的重点和亮点。这几章主要介绍了在Grid环境下的数据库用法的变化。注意我的措辞“用法的变化”,无法同步语音的确是一个遗憾。 “天低吴楚、眼空无物”。在Oracle 11g 中,如果还把眼光停留在数据库、RAC 这个层次,那么你就无法理解这几章中将要讨论的内容。你必须把高度提到“云”上,才能理解这些技术的必要性,也就理解为何现在会有越来越多动辄十数个节点的 RAC 的出现了,从而能理解为什么基于Oracle的“数据中心”很容易规划。

这些技术包括RAC One Node(第9章)、Service(第10章,一个重新焕发活力的老技术)、Server Pool(第11章),这一系列让人眼花缭乱的“组合拳”会让你对Oracle数据库有全新的认识,甚至能对Oracle 12c 中的“c”若有所思、似有所悟(虽然本书未涉及12c的内容)。

第13章是给开发人员准备的,如果你是一个纯粹的管理型DBA,不对开发组提供支持,可以忽略这一章。

第四部分 高可用性

这一部分包括第14~第18章,主要讨论了Grid的高可用性。我曾经把DG作为RAC高可用性的不二之选,因为当时我还不知道GG为何物。随着Oracle近几年的一系列收购动作,尤其是对GG的收购,我们终于走到了要和DG说再见的一天。当然,不是说DG会彻底退出历史舞台,但就我目前所接触到的环境来说,需要DG的场合已然是若有若无了。

第14章介绍了Oracle 11g 中DG 的增强,这些增强功能是否能证明它存在的必要,还是在为生存做最后的奋力一搏,或许要到Oracle 12c 才能盖棺定论。但“老兵不死,只会凋零”,致我们终将逝去的青春。

第15章介绍了Oracle 11g 数据库的特性ADR 以及几个工具,这些内容因为与RAC的管理维护密切相关,所以被收录进来。

第16到第18章介绍了Oracle数据库的“新欢”──GoldenGate(简称GG)。话说回来,这个新欢的确够火爆,别的不说,跨平台、跨版本、跨产品这三级跳,轻松秒杀DG和Stream,也难怪会大受青睐。这3章由浅入深地介绍了GG的各个知识点,着重介绍了RAC集成时的注意事项。GG这个工具不仅好用,也很易于上手,入门门槛低,学习曲线扁平,基本上不会遇到什么拦路虎。

本书最后的附录为读者提供了如何使用文本形式来安装Grid。感谢

本书能够面世,首先要感谢本书的编辑杜洁,从《大话Oracle RAC》开始,我们已经认识了5年,一直合作愉快,我也受益良多。如果不是她的坚持,我几乎没有动力动笔,也就不会有这本书的面世。

另外,感谢各位《大话Oracle RAC》的读者,感谢你们的各种支持和鼓励,让我找到了久违的成就感,也对写作产生了一发不可收的兴趣。虽然我的写作能力有限,但是我还是试图把这些原本枯燥的技术内容写得生动有趣一些,希望读者在阅读本书时能够保持心情愉悦,提高学习效率。本书是我工作多年的经验总结,如果能对各位读者有所帮助,那真是再好不过了。

最后,把这本书送给我最亲爱的家人,你们的支持是我最大的动力。以后我会尽量平衡工作和生活,做到适度工作、多陪家人、保持健康,与大家共勉!张晓明2013年11月第一部分安装第1章破冰之旅

本书是专门为Oracle Grid 11.2(或者11.2 RAC)准备的。

说明:Oracle Grid Infrastructure、Oracle Clusterware 是同一个软件的不同时期的名称,而Oracle RAC是这个软件支撑的解决方案,所以本书中我会混用这三个单词,但都是指的一个东西。另外,Oracle Grid Infrastructure这个名字有点太啰嗦,所以我会把它简化成Grid 或者GI,就是这样。

说实话,Oracle 10.2 RAC还是挺好用的,该有的功能都有了,而且也挺稳定的。像我管理的几个核心系统都是10.2版本的RAC,已经运行了五六年了,有限的几次故障,只有一次是因为修改了NTP服务的配置而造成RAC重启节点(这也是Oracleli 10.2一个已知的Bug),其他的都是由硬件问题引起的。所以,就我所处的环境而言,其实看不出升级到11.2的必要性。

但没办法,历史的轱辘款款前行,整个行业都在吆喝云计算、大数据、移动互联,我们就不能屈居人后,只能摇旗呐喊、迎头赶上,而且嗓门要更大、步子要更快,这才不会被时代的马车给抛下。

所以,我们必须要搞定Oracle Grid 11.2。1.1 原料

要解决Grid,手头得有家伙事儿。就像庖丁解牛,除了庖丁和刀,还得有原材料——上千头牛来让他练手(今臣之刀……所解数千牛矣)。解决Grid当然得有环境了,我们现在关注的是两个软件——集群软件和数据库。

在Oracle 10g、11gR1中,这两个软件的名字叫Oracle Clusterware和Oracle Database。在Oracle 11gR2中,第一个软件的名字变了,变成Oracle Grid Infrastructure。因此,我们得搞到这两个软件:Oracle Grid Infrastructure 11.2.0.*和Oracle Database 11.2.0.*。

目前Oracle 11gR2已有3个版本:11.2.0.1、11.2.0.2和11.2.0.3。[1]Oracle官方网站OTN上提供了11.2.0.1的下载链接。11.2.0.2和11.2.0.3是以补丁集(Patch Set)的方式发布的,在OTN上找不到,得去Metalink或者e-delivery下载。它俩对应的补丁号分别是Patch:10098816(如图1-1所示)和Patch:10404530(如图1-2所示)。这两个补丁集体积堪称巨大,分别有4.8GB和5.1GB之多。图1-1 Oracle 11.2.0.2图1-2 Oracle11.2.0.3

另外,在OTN网站上,Oracle Database 11.2.0.1和Oracle Grid是作为两个软件包分开下载的,下载链接如图1-3所示。而在两个补丁中,它们被打包在一起了,我们把下载的几个ZIP包依次解压后,就会看到有database和grid目录,也就是这两个软件了。图1-3 OTN中两个软件包的链接

说明:关于软件包的版本、升级和补丁,请以Oracle网站发布的内容为准。1.2 升级方式的变化

有过Oracle Database经验的读者都知道,以前Oracle 10g的时候,高版本都是用低版本升级的方式得到的。比如,要装 Database 10.2.0.4,得先装个 Database 10.2.0.1,然后给这个ORACLE_HOME打补丁P6810189,通过升级的方式达到高版本。这也是当时唯一的一种方法。

现在,Oracle把这种升级方式叫做in-place升级。

Oracle 11g R2的补丁包有了很大的变化,现在每一个补丁集都是一个完整的安装包,可以直接用补丁集进行完整的安装。也就是说,如果想安装 Oracle 11.2.0.3,就不再需要采用先安装11.2.0.1然后再打补丁的方式了,而直接安装11.2.0.3。

就算现在我们生产线上跑的是 11.2.0.1,我们也不必对 ORACLE_HOME 升级,我们可以在某个新目录下安装一个全新的11.2.0.3,然后建个空库,通过数据导入/导出的方式把数据从旧库导到新库,用这种“曲线救国”的方式完成到11.2.0.3的升级,这也是现在Oracle推荐的方式,Oracle把它叫做Out-of-place的升级方式。

各个版本的RAC的部署过程都一样,都可以分作4个步骤:环境准备,安装Grid(Oracle 10g和11gR1都是Clusterware),然后安装Database,最后是建库。经过这么4个步骤后,就有了一个可用的RAC数据库。

现在,我们就按照这4个步骤来安装Grid的RAC。

Oracle 11.2 RAC与10.2 RAC一脉相承,所以大部分内容与10.2 RAC类似,我在《大话Oracle RAC》一书中详细解释过这些内容。本书只介绍Oracle 11.2中出现的新内容(包括安装也是如此)。更多关于RAC原理的介绍,可以参考《大话Oracle RAC》一书。1.3 环境准备

RAC的环境准备可以分成4个方面:主机、用户、存储和网络。在准备阶段中,Oracle 11.2和10.2 RAC之间最重要的区别体现在用户这一方面。在Oracle 11.2之前的版本中,只需要创建一个用户oracle 和一个用户组dba。而在Oracle 11.2 中,需要创建两个操作系统用户oracle和grid,以及至少4个操作系统用户组。这么做的原因会在后面的章节中介绍。1.3.1 主机环境

主机环境包括硬件环境、软件环境,硬件中包括内存、磁盘空间等。根据官方文档,硬件的要求如表1-1所示。表1-1 硬件环境要求

需要调整操作系统的内核参数如下:

# vi /etc/sysctl.conf

加入这些内容:

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144

修改以后让参数生效:

# /sbin/sysctl -p

安装用于 Linux 系统的 cvuqdisk 包,这个包位于解压后的 grid/rpm 目录下。如果不安装 cvuqdisk,集群验证程序是无法发现共享磁盘的,我们会收到“Package cvuqdisk not installed”这样的出错消息。

安装这个包需要先设置变量CVUQDISK_GRP,变量的值是cvuqdisk所有者所在的组(本书为oinstall)。

[root@indexserver1 ~]# export CVUQDISK_GRP=oinstall

[root@indexserver1 ~]# cd /u01/install/grid/rpm/

[root@indexserver1 rpm]# ls

cvuqdisk-1.0.9-1.rpm

[root@indexserver1 rpm]# rpm -ivh cvuqdisk-1.0.9-1.rpm

Preparing...   ########################################### [100%]

1:cvuqdisk   ########################################### [100%]

1.用户和用户组

在Oracle 11gR2的RAC环境中,我们需要有6个操作系统用户组以及两个操作系统用户。这6个用户组中有两个是可选的,这两个用户与用户组的名称和关系如表1-2所示。表1-2O racle 11.2 RAC需要的用户和用户组

我们需要在所有的节点机器上创建这些用户和用户组。具体操作步骤是先创建用户组,然后再创建用户。本书中没有创建oper用户组。

#/usr/sbin/groupadd -g 505 oinstall

#/usr/sbin/groupadd -g 502 dba

#/usr/sbin/groupadd -g 504 asmadmin

#/usr/sbin/groupadd -g 506 asmdba

#/usr/sbin/groupadd -g 507 asmoper

#/usr/sbin/useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper grid

#/usr/sbin/useradd -u 502 -g oinstall -G dba,asmdba oracle

最后,还要使用password命令为这两个用户设置密码。

在这一步中我们需要注意以下几点:

保证每个用户组在所有节点上的组ID一样,这就是groupadd使用-G的目的;

要保证每个用户在所有节点上的用户ID一样,这是useradd使用-u的目的;

要确保两个用户的主组是oinstall,这也是useradd使用-g的目的;

保证两个用户在每个节点机上的密码一样,这样做不是必须的,不过可以简化用户等价性的配置过程。

至于为什么会有这么多用户和用户组,可以参考2.1小节中的讨论。

在创建了用户之后,需要设置这两个用户的环境变量,其实就是设置$ORACLE_BASE和$ORACLE_HOME。设置了这两个变量之后,Grid、Database的OUI安装程序就会自动提取这两个变量值,省去了再次手动输入的麻烦。

Grid用户的环境变量如下所示:

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME =/u01/app/11.2.0.2/grid

PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

Oracle用户的环境变量如下所示:

export ORACLE_BASE=/u01/app/database

export ORACLE_HOME=$ORACLE_BASE/11.2.0.2/product

PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

仔细看一下,这两个用户的$ORACLE_BASE和$ORACLE_HOME的关系有什么不同?

提示:Oracle用户的$ORACLE_HOME是$ORACLE_BASE的子目录。而Grid用户的$ORACLE_HOME不是$ORACLE_BASE的子目录,这并不是我们有意为之,而是Oracle规定的,也必须这样。

如果读者读过《大话Oracle RAC》和《Oracle DBA突击》这两本书,可能就会发现我对$ORACLE_HOME 目录规划的看法发生了变化。之前,我一直喜欢的$ORACLE_HOME 规划方式是/oracle/product/10.2.0.1/db这样的目录结构,而这次我采用的是/u01/app/database/11.2.0.2/product 这样的层级结构,这也是 Oracle 的目录结构标准,我之所以不再固执己见,是因为我觉得它要比我自己设计的更合理。

再接下来,就是对Oracle用户使用操作系统资源限制的改变,我们需要在/etc/security/limits.conf中添加这些内容:

Oracle  soft nproc    2047

Oracle  hard nproc    16384

Oracle  soft nofile   65536

Oracle  hard nofile   63536

oracle  soft stack    10240

然后在/etc/pam.d/login文件中添加以下代码:

session required pam_limits.so

2.用户等价性

在Oracle 11.2中,用户等价性要求仍然不变,不过我们这里略过,略过不是省略,而是不再需要像以前那样纯手工的配置方法了,具体的配置步骤后面会有介绍。OUI提供的可视化的配置方法,那是轻松省事多了。

3.调整NTP服务

我们知道,Oracle是事务型数据库,事务操作的先后顺序是靠SCN来记录的,SCN可以看作是时间戳,因此,各个节点机器上的时间一致就是 RAC 发挥价值的重要基石。所以必须通过技术手段来保证节点的时间一致。在Oracle 11.2版本之前,我们只有一种方法就是NTP,在Oracle 11.2版本之后,Oracle自己又多了一种方法,我们会在后面的章节中深入讨论它。1.3.2 使用 NTP 服务

要是坚持使用操作系统自带的 NTP 服务来保证时间一致,当然完全没有问题。只是有个细节需要重视,我们需要修改一个配置。打开NTP服务的参数文件,在其中的OPTIONS中加上个“-x”标志,就像下面这样。这样做的目的是为了避免向前调整时间。这样改好后,保存配置文件、重新启动NTP服务即可。

编辑/etc/sysconfig/ntpd文件:

# Drop root to id 'ntp:ntp' by default.

OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

# Set to 'yes' to sync hw clock after successful ntpdate

SYNC_HWCLOCK=no

# Additional options for ntpdate

NTPDATE_OPTIONS=""

重启NTP服务:

[root@indexserver3 grid_data]# service ntpd status

ntpd (pid 4250) is running...

[root@indexserver3 grid_data]# service ntpd stop

Shutting down ntpd: [ OK ]

[root@indexserver3 grid_data]# service ntpd start

ntpd: Synchronizing with time server: [ OK ]

Starting ntpd: [ OK ]

[root@indexserver3 grid_data]# ps -ef|grep ntpd

ntp 22244 1 0 17:25 ?  00:00:00 ntpd -x -u ntp:ntp -p /var/run/ntpd.pid

root 22250 15074 0 17:25 pts/0 00:00:00 grep ntpd

这是第一种时间配置方法,Oracle 自己也提供了一种方法,叫 CSST,因为这一章只是演示安装过程,而安装选择的是NTP,所以这里不讨论CSST(见第2章)。1.3.3 网络环境

在Grid 11.2中,Oracle引入了一些崭新的技术,包括SCAN、GNS、IP Bonding等。对于网络配置的要求也和之前有所变化,这些要求如下:

127.0.0.1 这个地址只能映射到 localhost 或者 localhost.localdomain,而不应该是其他的,任何网卡都不应该使用这个地址;

所有节点上用于Public网络的网卡名字应该相同,比如都是eth0;

所有节点上用于Private网络的网卡名字也应该相同,比如都是eth1;

所有节点的所有网卡的MTU应该相同,一般不需额外配置就是相同的;

所有的Public、Virtual、SCAN名字都应该由DNS或者GNS解析,如果SCAN放在DNS解析,就不应该出现在本地的hosts文件中;

更多的要求可以参看文档1054902.1。

1.有关多播

Oracle Grid 11.2.0.2 引入了一个新的设计,叫做“Redundant Interconnect Usage”,按照我的理解就是Oracle自己的多网卡绑定技术(读者对这个技术不应该陌生,不同平台的叫法不同,Bonding、Teaming、Etherchannel等)。也就是用多块网卡绑定成一个虚拟的私有网卡,专门用于私有网络的通信。我们都知道私有网络对于RAC稳定的重要性,所以Oracle的这个设计是有意义的。其实在这个设计出来之前,Oracle也会建议用户用OS提供的类似技术实现同样的功能。

不过,Oracle 好像把大部分用户的能力估计过高,它最初版本(指的是 11.2.0.2)选择的底层技术是大多数人都很陌生的技术——多播。

这个多播是干嘛使的呢?每个节点的 Clusterware 栈在启动、加入集群过程中要尝试和集群中的其他节点通信,虽然这时它还不知道有哪些兄弟姐妹存在。这一段的通信使用的就是多播技术,而一旦通信协议道建立起来,也就是它找到了亲人了,它会再转回到用单播模式继续接下来的通信。

因此,如果私有网络不支持多播或者不满足Oracle要求的多播条件,那么集群栈是无法启动的。于是就有可能遇到这种问题:

CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node node1, number 1, and is terminating

An active cluster was found during exclusive startup, restarting to join the cluster

Failed to start Oracle Clusterware stack

Failed to start Cluster Synchorinisation Service in clustered mode at /u01/app/crs/11.2.0.2/crs/install/crsconfig_lib.pm line 1016.

/u01/app/crs/11.2.0.2/perl/bin/perl -I/u01/app/crs/11.2.0.2/perl/lib -I/u01/app/crs/ 11.2.0.2/crs/install /u01/app/crs/11.2.0.2/crs/install/rootcrs.pl execution failed

说实话,解决多播问题已经超过大部分DBA的能力了,包括对我。大概Oracle自己也觉得强人所难,于是在Oracle 11.2.0.3时,对这个设计进行了加强──同时支持多播和广播,广播我们就都能理解了。如果私有网络支持多播,就优先使用多播技术,如果不支持多播,就使用广播技术。这样,前面这个问题就少多了。

这里谈论的多播、广播仅限于节点的 Clusterware 栈启动、加入集群、节点间建立连接的这个bootstrap阶段,一旦这一篇翻过去了,之后的通信就都是单播了。

因此,如果你固执地选择Grid 11.2.0.2,那看看note 1212703.1或许有些帮助。如果使用的是Grid 11.2.0.3,就不用再考虑这个问题了。

2.域名和IP

首先,要规划一个域名,在 Oracle 的术语中叫 SCAN 地址。用于未来用户找到这个数据库,这里是indexgrid.wxxr.com.cn。

其次,这个SCAN地址要通过DNS解析成IP地址,而且要解析成3个IP地址。

看看我们需要多少个IP地址?像我们这个4个节点的集群,一共需要4×3+3=15个IP地址。加号(+)后面的3就代表SCAN的3个IP地址。

如何配置DNS服务器这里就不演示了,这不在本书的讨论范围之内。而且,不同DNS服务器的配置方法也不尽相同,不过最终的效果应该是一样的。在任何一台机器上用nslookup命令看到的解析结果应该是这样的:

[root@indexserver4 ~]# nslookup indexgrid.wxxr.com.cn

Server:  192.168.123.5

Address:  192.168.123.5#53

Name: indexgrid.wxxr.com.cn

Address: 192.168.123.214

Name: indexgrid.wxxr.com.cn

Address: 192.168.123.215

Name: indexgrid.wxxr.com.cn

Address: 192.168.123.216

而剩下来的4×3=12个IP地址,和之前版本配置方式一样,可以放在/etc/hosts中,比如:

192.168.1.70   indexserver1

192.168.1.71   indexserver2

192.168.1.72   indexserver3

192.168.1.73   indexserver4

10.0.0.70    indexserver1-priv

10.0.0.71    indexserver2-priv

10.0.0.72    indexserver3-priv

10.0.0.73    indexserver4-priv

192.168.1.80   indexserver1-vip

192.168.1.81   indexserver2-vip

192.168.1.82   indexserver3-vip

192.168.1.83   indexserver4-vip

前面说过,Public和Virtual地址也可以交给DNS解析。

3.主机名中不要有下划线(_)

这是一个常见的错误,也是个常识性错误,也是笔者早期常犯的错误,现在列在这里给读者以提醒。

这个规定并不是Oracle的规定,而是Internet 的协议标准(RFC)中约定的:主机名中只能使用字母、数字和横线(-)。而不能有其他的符号,比如下划线(_)。

如果主机名有下划线,比如叫 beijing_db,那么数据库会经常出现些莫名其妙的问题,典型的问题就是在建库过程中EMCA的配置会失败,会遇到类似如图1-4所示的提醒。图1-4 主机名中不能有下划线(_)1.3.4 配置存储

存储配置包括两个步骤:基础配置和ASM配置。

在基础配置阶段,我们要做的是配好盘柜、光纤交换机,划分Lun并能在主机上看到Lun,再安装 PowerPath,以实现多路径。这部分工作一般都是存储厂商的工程师完成的,不在本书讨论的范围之内,下面要讨论的是ASM配置。

1.ASM配置

配置 ASM 第一步是安装 ASM 驱动。下载驱动包时要注意根据操作系统内核版本号选择对应的包。查看OS内核版本号:

[oracle@indexserver1 ~]$ uname -a

Linux indexserver1 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64GNU/Linux

装好了驱动后,接下来就是配置ASM模块。

在 Oracle 11.2 中,Grid 和 Database 一般是用不同的操作系统用户安装的,因此在配置ASMLib时就要小心点了。因为Grid是用grid用户安装的,而grid的主组是oinstall,次要组是asmowner和asmdba,于是asmlib需要这样配置:

[root@london1 grid]# /etc/init.d/oracleasm configure

Configuring the Oracle ASM library driver.

Default user to own the driver interface []: grid

Default group to own the driver interface []: asmdba

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]: y

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver:    [ OK ]

Scanning the system for Oracle ASMLib disks:   [ OK ]

说明:关于这几个用户和用户组的作用,可以参考第2章中的详细介绍。

配置好后,ASMLib驱动会随着系统启动自动加载,接下来就要创建磁盘。

2.创建ASM磁盘

Oracle 11.2已经放弃了对于裸设备的支持(当然还会保持兼容),只能使用ASM磁盘,所以先要创建磁盘,创建磁盘是个有一定危险的动作,因为如果磁盘上有数据,这些数据就会被破坏。因此,我们必须先确保它没有被用。因此,作为一个谨慎的管理员,我们得先检查一下这个磁盘的使用情况,看它是不是已经属于其他的ASM组了。

使用oracleasm querydisk 命令,可以检查某个磁盘是否已经是 ASM 磁盘,以及属于哪个磁盘组,这个命令有两个可选参数-p和-d,其中-d用来查看设备号,-p查看的是设备路径名。

例如,要想知道/dev/emcpowera1这个分区是否已经是ASM磁盘以及它的名字是什么,可以这么做:

[root@searchdb2 ~]# oracleasm querydisk -v -p /dev/emcpowera1

Device "/dev/emcpowera1" is marked an ASM disk with the label "OCR"

反过来,要想知道哪个磁盘是被命名为OCR的磁盘,可以这么做:

[root@searchdb2 ~]# oracleasm qu erydisk -v -p OCR

Disk "OCR" is a valid ASM disk

/dev/emcpowera1: LABEL="OCR" TYPE="oracleasm"

/dev/sde1: LABEL="OCR" TYPE="oracleasm"

/dev/sdg1: LABEL="OCR" TYPE="oracleasm"

如果用-d,能看到的是设备号,要对应到真正的设备,还需要绕个弯,关于设备号和设备名的对应关系,可以参考其他的资料和文档。

如果不是ASM磁盘,看起来输出是这样的:

[root@searchdb2 ~]# oracleasm querydisk -v -d /dev/emcpowerb7

Device "/dev/emcpowerb7" is not marked as an ASM disk

确认磁盘可用之后,就要创建ASM磁盘了。

[root@searchdb2 ~]# oracleasm createdisk WXXRINDEX1 /dev/emcpowerb7

Writing disk header: done

Instantiating disk: done

创建磁盘就相当于格式化,给这个磁盘盘头写上ASM元数据,这个命令只需要在一台机器上执行就可以了。

其他机器要做的是扫描磁盘,把这个磁盘认出来,当然靠的也是盘头的ASM元数据。在每个机器上都进行如下所示的操作:

[root@searchdb2 ~]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

然后再这么做:

[root@searchdb1 ~]# oracleasm listdisks

OCR

WXXRDATA1

WXXRDATA2

WXXRDATA3

WXXRDATA4

WXXRDATA5

WXXRINDEX1

确保每个节点上都能看到相同的列表。也就是说,所有节点都能识别出这些ASM磁盘。1.4 安装

环境准备好后,就可以动手安装了。顺序是先装Grid、再装Database。这两个软件都支持图形化安装和Silent的静默安装。就个人体会而言,Oracle 11.2的各种安装卸载功能都比以前好了许多,基本都能做到了一次通过。所以,Silent 方式也是个不错的体验,我放在后面的附录中。1.4.1 安装 Grid

以grid用户登录系统,在shelll下执行./runInstaller,启动安装程序。(1)Metalink账号的设置,如图1-5所示。

Oracle 11.2的Database和Grid与Oracle服务体系(Metalink)结合得更紧密,比如,我们可以在安装过程中让 OUI 帮着去 Metalink 查看更新的补丁包,然后下载补丁并安装它。基本上类似于 Windows 中的各种自动更新。当然你需要先购买 Oracle 的服务、拥有 MOS 的账号才行。

这里先跳过这一步,保持安装过程的简洁。图1-5 Metalink账号设置(2)选择安装类型,如图1-6所示。这一步没什么可说的,我们就选第一项【Install and Configure Oracle Grid Infrastructure for a Cluster(安装并配置集群下的Grid)】。图1-6 选择安装类型(3)选择安装方式,如图1-7所示。这里我们要选第二项【Advanced Installation(高级安装)】,其实就是自定义安装。之所以不选第一项【Typical Installation(典型安装)】,是因为我想给这个集群起个牛气烘烘的名字(也叫SCAN名字),而不使用典型安装提供的缺省名字。图1-7 选择安装方式(4)选择安装语言,如图1-8所示。如果在上一步中选择了【Advanced Installation(高级安装)】,就会进入到这个界面,如果选择【Typical Installation(典型安装)】,会直接跳到步骤(6)。这里选择【English】,Oracle软件还是在英文环境下感觉最流畅自然。图1-8 选择语言(5)定义集群的名字、SCAN名字及监听端口和GNS,如图1-9所示。如果步骤(3)中选择了【Typical Installation】,那么我们是不会看到这个界面的。

在这里输入集群的名字、SCAN、SCAN端口号。在这个例子中不使用GNS,所以应取消【Configure GNS】复选框。图1-9 配置GPNP(6)定义集群的节点列表(如图1-10所示)以及身份等价。如果步骤(3)中选择【Typical Installation】,那么就会直接跳到这个界面。这里需要把集群中的4个节点都加进去,提供每个节点的节点名和VIP名。图1-10 定义集群节点

4个节点都加好后,就要配置SSH等价了。这一步配置的是grid用户的等价性。单击【SSH Connectivity..】按钮,页面上就会多出一些内容,输入grid用户的密码,单击【Setup】按钮,然后就开始配置SSH等价(如图1-11所示),最后弹出如图1-12所示的配置成功通知。图1-11 SSH自动配置大大减少了工作量图1-12 SSH用户等价配置成功

配置成功!

之前在做环境准备时,我们有意在用户等价性一节只留个标题,原因就在这里。SSH等价本身并不属于Oracle内容,但它是做RAC配置必需的。Grid、Database在本机安装好后,会通过SSH把本地的这些文件目录复制到其他节点上去,这本身也是一个登录其他节点的过程,因此需要某种身份验证的机制。最简单的就是输入用户名、密码,但安装过程就会不断地被打断,输入每个节点的用户名和密码后才能继续,非常麻烦。SSH等价可以通过证书、密钥等方式去掉了手工输入密码的麻烦,使得后台的文件复制得以悄悄地进行。

SSH等价虽然简单,但配置繁琐,尤其当节点多的时候,于是Oracle干脆替我们全部搞定。对于安装人员来说确实是简单了,不过生生地把新人知晓 SSH 等价的机会给剥夺了,不知道算是好事还是坏事。(7)配置网卡,如图1-13所示。这个界面用来定义共有网络和私有网络,不再细说。图1-13 定义公共、私有网卡(8)定义 OCR 保存位置,如图1-14所示。这里有两个选项,这里选择第一个【Oracle Automatic Storage Management(Oracle ASM)】。

Oracle 11.2 已经放弃对裸设备的支持,从这一步就看出来了。以前在 Oracle 10g、Oracle 11gR1时,这里是能够支持裸设备的。图1-14 定义OCR存放的位置(9)配置ASM,如图1-15所示。到这一步,Grid会扫描系统,把所有可用的ASM磁盘都列在这里,我们需要创建个磁盘组来保存 OCR 文件。创建磁盘组必不可少的选项有:冗余方式和ASM磁盘。图1-15 配置ASM存储(10)指定ASM管理员密码,如图1-16所示。图1-16 定义ASM管理员的密码(11)是否要使用 IPMI,如图1-17所示。选择第二项【Do not use Intelligent Platform Management Interface(IPMI)】,一般情况都不需要使用IPMI。关于IPMI的更多内容可以参见第2章。图1-17 不需要使用IPMI(12)指定ASM用户组,如图1-18所示。之前在准备主机环境时,我们已经在操作系统中创建了这3个用户组,确保你的选择与我一致。这些用户组的含义见2.1小节。图1-18 保持这3个用户组不变(13)指定安装位置,如图1-19所示。grid用户的环境里已经定义好了ORACLE_BASE和ORACLE_HOME两个环境变量,OUI会读出参数值自动填在这里。图1-19 指定软件安装位置(14)指定产品清单位置,如图1-20所示。我们会在第2章中详细介绍产品清单,这里就不多说了。保证这个目录的属组是【oinstall】,如图1-20所示。图1-20 oraInventory目录的位置

到此,所有安装前的设置就结束了,已经可以开始安装了,不过为了确保一次过,O UI还要做一次完整的检查以确保能够安装成功。其实我们也可以自己做这样的检查,检查工具是cluvfy,OUI检查用的也是这个工具。(15)系统检查,如图1-21所示。检查的内容包括操作系统内核参数、必需的包。如果有哪一项检查无法通过,解决之,然后再检查,尽量让所有的检查都通过。图1-21 操作系统检查

有可能检查结果总是抱怨ASM磁盘检查失败,无法发现磁盘,如图1-22所示。图1-22 bug引起的检查失败

这是因为遇到了bug 10310848,在我做这次安装时未发布补丁,可以直接跳过。具体可以参考文档1267569.1。(16)开始安装Oracle 11g,如图1-23所示。安装过程很快,最后会看到执行配置脚本的提示界面,如图1-23所示。图1-23 执行脚本提示

打开新窗口,以root身份执行要求的第一个脚本orainstRoot.sh:

root@indexserver4 oraInventory]# ./orainstRoot.sh

Changing permissions of /u01/app/oraInventory.

Adding read,write permissions for group.

Removing read,write,execute permissions for world.

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载