《大话Oracle Grid:云时代的RAC》——1.3 环境准备

1.3 环境准备

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

1.3.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.rpm
[root@indexserver1 rpm]# rpm -ivh cvuqdisk--1.rpm
Preparing...            ########################################### [100%]
1:cvuqdisk              ########################################### [100%]

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

我们需要在所有的节点机器上创建这些用户和用户组。具体操作步骤是先创建用户组,然后再创建用户。本书中没有创建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/.2/grid
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

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

export ORACLE_BASE=/u01/app/database
export ORACLE_HOME=$ORACLE_BASE/.2/product
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin

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

提示:

Oracle用户的$ORACLEHOME是$ORACLE_BASE的子目录。而Grid用户的$ORACLE
HOME不是$ORACLE_BASE的子目录,这并不是我们有意为之,而是Oracle规定的,也必须这样。
如果读者读过《大话Oracle RAC》和《Oracle DBA突击》这两本书,可能就会发现我对$ORACLE_HOME目录规划的看法发生了变化。之前,我一直喜欢的$ORACLE_HOME规划方式是/oracle/product/.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:/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 .2引入了一个新的设计,叫做“Redundant Interconnect Usage”,按照我的理解就是Oracle自己的多网卡绑定技术(读者对这个技术不应该陌生,不同平台的叫法不同,Bonding、Teaming、Etherchannel等)。也就是用多块网卡绑定成一个虚拟的私有网卡,专门用于私有网络的通信。我们都知道私有网络对于RAC稳定的重要性,所以Oracle的这个设计是有意义的。其实在这个设计出来之前,Oracle也会建议用户用OS提供的类似技术实现同样的功能。

不过,Oracle好像把大部分用户的能力估计过高,它最初版本(指的是.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/
.2/crs/install/crsconfig_lib.pm line 1016.
/u01/app/crs/.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 .3时,对这个设计进行了加强──同时支持多播和广播,广播我们就都能理解了。如果私有网络支持多播,就优先使用多播技术,如果不支持多播,就使用广播技术。这样,前面这个问题就少多了。

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

因此,如果你固执地选择Grid .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.3.4 配置存储

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

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

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

[oracle@indexserver1 ~]$ uname -a
Linux indexserver1 -238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/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磁盘。

时间: 2024-10-03 22:56:45

《大话Oracle Grid:云时代的RAC》——1.3 环境准备的相关文章

《大话Oracle Grid:云时代的RAC》——1.2 升级方式的变化

1.2 升级方式的变化 大话Oracle Grid:云时代的RAC 有过Oracle Database经验的读者都知道,以前Oracle 的时候,高版本都是用低版本升级的方式得到的.比如,要装Database .4,得先装个Database 10.2.0.1,然后给这个ORACLE_HOME打补丁P6810189,通过升级的方式达到高版本.这也是当时唯一的一种方法. 现在,Oracle把这种升级方式叫做in-place升级. Oracle R2的补丁包有了很大的变化,现在每一个补丁集都是一个完整

《大话Oracle Grid:云时代的RAC》一一1.5 小结

1.5 小结 大话Oracle Grid:云时代的RAC 我一直觉得能从Oracle 8i开始接触Oracle的DBA是幸福的,因为那个时候天还是蓝的.水还是绿的,Oracle还就是个库,花哨的功能很少,所以对于有兴趣.有精力.喜欢刨根问底的读者,能刨的就剩下Oracle内部机制了,所以那时ODI一度风靡于网络. 从Oracle 9开始,由于数据库核心已经稳定了,所以Oracle开始在外延发力,各种工具.扩展.行业延伸让人眼花缭乱.当今的Oracle说它是数据库也行,说是应用服务器也不错,说是行

《大话Oracle Grid:云时代的RAC》——第1章 破冰之旅

第1章 破冰之旅 大话Oracle Grid:云时代的RAC 本书是专门为Oracle Grid 11.2(或者11.2 RAC)准备的. 说明: Oracle Grid Infrastructure.Oracle Clusterware是同一个软件的不同时期的名称,而Oracle RAC是这个软件支撑的解决方案,所以本书中我会混用这三个单词,但都是指的一个东西.另外,Oracle Grid Infrastructure这个名字有点太口 罗 嗦,所以我会把它简化成Grid或者GI,就是这样. 说

《大话Oracle Grid:云时代的RAC》导读

前言 大话Oracle Grid:云时代的RAC 自2001年首次发布后,Oracle RAC(Real Appliction Clusters,真正应用集群)一直是最畅销的Oracle数据库产品之一,也是Oracle技术领域中最难掌握的技能 之一. 当Oracle产品线进化到11g时代,我们惊奇地发现,数据库家族有了太多的变化.例如,"服务器池"和"服务管理质量",它们是在整合环境中满足服务级别的关键:Oracle Exadata改变了云的采购与部署模型,提供了私

《大话Oracle Grid:云时代的RAC》——1.1 原料

1.1 原料 大话Oracle Grid:云时代的RAC要解决Grid,手头得有家伙事儿.就像庖丁解牛,除了庖丁和刀,还得有原材料--上千头牛来让他练手(今臣之刀--所解数千牛矣).解决Grid当然得有环境了,我们现在关注的是两个软件--集群软件和数据库. 在Oracle .11gR1中,这两个软件的名字叫Oracle Clusterware和Oracle Database.在Oracle 11gR2中,第一个软件的名字变了,变成Oracle Grid Infrastructure.因此,我们得

《大话Oracle Grid:云时代的RAC》一一1.4 安装

1.4 安装 大话Oracle Grid:云时代的RAC环境准备好后,就可以动手安装了.顺序是先装Grid.再装Database.这两个软件都支持图形化安装和Silent的静默安装.就个人体会而言,Oracle 11.2的各种安装卸载功能都比以前好了许多,基本都能做到了一次通过.所以,Silent方式也是个不错的体验,我放在后面的附录中. 1.4.1 安装Grid 以grid用户登录系统,在shelll下执行./runInstaller,启动安装程序. (1)Metalink账号的设置,如图1-

DBA不失业:云时代的数据库性能优化全攻略

性能问题是数据库中最重要也是最迫切要解决的问题之一,随着业务的发展和数据的不断加增,用户对于系统的响应速度的要求越来越高.而归根结底就是要提高数据库系统的性能.对于大部分的DBA来说,性能优化并不是一件容易的事情,造成性能问题的原因多种多样,在现实中,优化过程也会受到重重阻碍,随着云时代的到来以及自动化智能化运维的发展,那么云时代的DBA该如何优化数据库的性能呢? 在今年的数据技术嘉年华上,我们邀请了来自国内外各大企业的性能优化专家,从不同的角度分析云时代数据库性能优化的技术与技巧. 重点嘉宾与

MySQL智能运维与实践,看关系型数据库如何优雅应对云时代

随着互联网场景的导入,非结构化的海量数据给传统数据库的处理能力带来了极大的挑战,作为最受欢迎的开源关系型数据库,MySQL一步步地占领了原有商业数据库市场.如今Google.Facebook.网易.淘宝等大公司都在使用MySQL数据库.而MySQL的发展也从1.0到如今的8.0版本,其功能的完善和稳定性也得到了很好的保证. 本文包含以下三部分: MySQL8.0 的新特性 云时代MySQL的运维实践 金融行业最佳应用场景 今年8.0版本将会带来哪些惊喜呢? MySQL 8.0 新特性一览 1.I

EasyDB for Oracle,云上Oracle一站式解决方案

云计算已经成为新的IT架构首选方案,企业上云是顺应大的趋势,每个CIO/CTO都需要考虑基于云的Oracle技术方案,Oracle能不能上云?阿里云ECS是否能满足Oracle性能需求?云上可以搭建Oracle RAC吗?云上Oracle是否类似RDS可做到免运维吗? EasyDB for Oracle是袋鼠云基于云推出的产品和整体解决方案,为企业Oracle上云提供一站式服务. EasyDB for Oracle沉淀了原淘宝 DBA 团队过去十年的数据库运维管理经验,基于阿里云的ECS(虚拟服