Loading
2

Oracle 11gR2 RAC静默安装+手动建库

前言
    我相信大多数的dba们都是习惯使用图形界面来进行安装,或许有的DBA都不知道可以静默安装,或者知道但不知从何下手,的确使用图形界面点点就可以了,有方便的方法安装干嘛还要用复杂的方法,但是由于现在很多重要的行业、重要的系统中,比如银行、电信等,为了安全的考虑,在网络环境里都是禁止一切不必要的端口开放,在系统层面一方面为了减少不必要的服务对操作系统产生的负担以及尽量减少不必要的端口的开放以增加安全性,所以很多生产环境都是将系统的图形界面关闭不允许使用的,而其很多这种企业各部门分工很细,各部门之间都有自己的立场,若要申请特例开图形界面可能要牵涉到2、3个部门,一个流程走下来可能得等半个月都不一定,如果没了图形界面就不知如何是好了,本文的目的就是解决在无图形界面的情况下使用应答文件和手动建库来安装ORACLE RAC,从此不再受图形界面的限制。
1.环境规划
操作系统版本:Oracle Enterprise Linux 6.3 - 64bit
Clusterware版本:Oracle Grid Infrastructure 11.2.0.3 - 64bit
Database版本:Oracle Database Enterprise Edition 11.2.0.3 - 64bit
节点数:2个节点
GNS:不使用,使用hosts进行解析
存储:采用ASM
网络:使用4块网卡,俩俩绑定做failover
2.安装Oracle Enterprise Linux 6.3操作系统
针对用来安装ORACLE数据库的OEL,只需要安装base中的组建即可,如果需要用到图形界面可安装desktop和X window
2.1添加共享磁盘
安装RAC必须使用共享存储,RAC可支持共享文件系统、ASM、裸设备,裸设备从11G开始已不推荐使用,从图形界面安装时已不做支持
但手动建库是可以使用裸设备的,ASM是ORACLE要大力推行的,在这里我们使用ASM作为存储
VMWARE添加共享存储方法如下:
1)创建两块分别为6G和9G的磁盘
进入vmware安装目录执行如下操作:
存放路径可根据自身情况设置
2)在虚拟机关闭的状态下分别编辑两台虚拟机安装目录下的xxx.vmx文件
在文件的最后添加如下内容:
3)关掉vmware标签栏上的两台虚拟机的标签,重新使用File->open->xxx.vmx打开两台虚拟机并启动系统
4)对共享磁盘进行分区
在两个节点分别使用fdisk -l,可看到新加的共享磁盘
在任意一个节点使用fdisk /dev/sdx 分别将新加的两个磁盘平分3个区,新加的磁盘/dev/sdx设备号视自身情况而定
分区完后在另一个节点执行partprobe 使其识别分区
3.配置操作系统相关内核参数
从OEL6.3开始,OEL提供了一个包oracle-rdbms-server-11gR2-preinstall
使用yum安装该包会将安装ORACLE 11GR2数据库所需要安装的依赖包都安装上去
并且会创建oinstall、dba组和oracle账户,而且会修改安装数据库所需要的内核参数
要注意的是该创建的oracle账户是没有密码的,请及时修改密码
3.1 在各节点配置光驱为yum源
备份原yum源配置

修改yum源配置为以下内容:

其中baseurl=file:///media/Server和baseurl=file:///media/UEK2为光盘中相应的路径,光盘根目录为/media
可根据自己实际情况设置文件路径
3.2 安装install oracle-rdbms-server-11gR2-preinstall
配置完成后使用yum list 如果有相应得源列出则说明配置正确
分别在各节点执行如下命令安装数据库所需依赖包以及配置相关内核参数 
3.3创建oper、asmadmin、asmdba、asmoper组以及grid账户
由于从11GR2开始ORACLE建议将数据库和ASM/CLUSTERWARE的管理账户进行分离,所以我们需要创建grid账户
注意:RAC要求各节点的oracle账户、grid账户以及相应的组的id是必须相同的
可以查看/etc/passwd和/etc/group得知系统为我们自动创建的oinstall、dba组的gid分别为54321何54322,oracle账户的uid为54321
从/etc/group得知gid 54323被系统自动创建的xguest组使用,所以我们可以从54323沿用下去创建相关组,在两个节点分别执行以下操作:
从/etc/passwd得知uid 54322被系统自动创建的xguest帐户使用,所以我们可以从54322沿用下去创建grid帐户,在两节点分别执行以下操作:
3.4修改oracle帐户使其加入oper,asmadmin,asmdba,asmoper组
在两节分别执行以下操作:
3.5修改/etc/security/limits.conf添加grid帐户的相关使用限制
由于安装RAC使用grid帐户进行管理,而安装oracle-rdbms-server-11gR2-preinstall包只会修改对应oracle帐户的内核参数限制
所以我们必须手动修改/etc/security/limits.conf文件添加grid帐户的相关限制
分别修改两个节点的/etc/security/limits.conf文件添加以下内容:
4.修改各节点oracle帐户和grid帐户家目录下的.bash_profile文件以及root帐户的环境变量文件/etc/profile,.bash_profile添加如下内容设置环境变量
node 1--grid帐户的.bash_profile文件添加如下内容:
node 1--oracle帐户的.bash_profile文件添加如下内容:
node2上的grid和oracle帐户的内容只需将ORACLE_SID的1改成2即可,其余同node 1一致
node1和node2上分别修改/etc/profile,添加如下内容
5.创建相应安装目录及设置相应权限
分别在各节点使用root用户执行以下操作:
6.分别在各节点修改/etc/hosts文件,添加相关ip与hostname的对应关系,/etc/hosts添加内容如下:
7.分别在各节点设置双网卡聚合,实现网卡之间failover
以node1为例,node2修改相应ip即可
7.1创建用作public网卡bond0接口,在接口配置文件的路径下/etc/sysconfig/network-scripts/

 

添加如下内容

7.2修改要加入bond0的两个物理接口eth0和eth1的配置文件如下(以eth0为例,eth1只需将DEVICE="eth0"改成eth1,其他不变):

将原有内容删除,添加以下内容

7.3创建用作private网卡bond1接口,在接口配置文件的路径下/etc/sysconfig/network-scripts/

添加如下内容

注:用于private网卡的接口bond1不用设置GATAWAY
7.4修改要加入bond1的两个物理接口eth2和eth3的配置文件如下(以eth2为例,eth3只需将DEVICE="eth2"改成eth3,其他不变):

将原有内容删除,添加以下内容

7.5关闭NetworkManager服务
7.6重启服务器测试网卡聚合绑定是否成功
重启完后查看以下文件
若出现以下内容则表示成功
可ping网关然后拔掉网线,vmware则断开网卡测试是否会故障转移
8.使用udev将分过区的共享磁盘绑定裸设备
分别在两个节点使用vi编辑/etc/udev/rules.d/60-raw.rules,添加如下内容:
然后分别在两个节点执行如下命令:
执行完后查看裸设备是否绑定以及权限是否正确:
若为以上内容说明绑定正确
9.关闭ntp服务
在11GR2之前RAC是需要做操作系统的时间同步设置的,但从11GR2开始,RAC自带节点间时间同步,故不再需要设置NTP服务
并且如果有NTP服务存在但是没有设置正确,在安装的预校验过程中会报相关NTP错误
分别在两个节点执行如下操作:
10.关于hangcheck-timer模块
引用MOS上的文档ID 726833.1

Hangcheck_timer module is required to run a supported configuration in Oracle Real Application Clusters environments on Linux, with Oracle releases 9i, 10g, or 11gR1 RAC.  This note identifies and outlines the requirements needed to configure hangcheck-timer in an Oracle Enterprise Linux, Red Hat Linux, or SUSE Linux environment.

Note : Hangheck timer is not required starting with Oracle Clusterware 11gR2

文档上说明在版本9i,10g,11gR1的RAC环境是要求操作系统配置hangcheck_timer模块的,在11gR2上已不再要求,所以我们可以不用配置这个模块,但如果有人需要配置这个模块,RHEL6开始modprobe发生了变化,本文提供以下方法配置hangcheck_timer模块:

在各节点上以root用户

在文件最后添加如下内容:

使用vi 在/etc/rc.local文件最后添加如下内容:
该模块会在系统启动时加载,可重启系统使用lsmod验证hangcheck-timer是否存在,不重启可直接运行modprobe -v hangcheck-timer加载模块
11.设置linux大页内存以使数据库启动时可以将内存锁住
在数据库还没启动时刻用以下公式估算需要的hugepages的个数 
查看大页内存大小
比如SGA为1G,Oracle的process为500,那么hugepages大约为517
在数据库启动后可以用以下脚本计算hugepages的建议值,该脚本引用自http://www.oracle-base.com/articles/linux/configuring-huge-pages-for-oracle-on-linux-64.php 
执行该脚本后会给出建议值,在sysctl.conf中添加参数vm.nr_hugepages=xxx
修改/etc/security/limits.conf
添加oracle - memlock unlimited
执行

使设置生效,但最好能重启系统使之生效,有的内存已被使用就无法分配出来。

12.设置节点间oracle和grid帐户信任
1)分别在两个节点执行以下操作:
2)在node 1以grid帐户执行以下操作:
scp时会提示是否将ora2加入到信任列表,输入yes即可 然后输入ora2上的grid帐户密码
3)验证两个节点间SSH通信是否还需要密码
在node 1上以grid帐户执行如下内容:
在node 2上以grid帐户执行同样内容,在第一次通信时会提示是否将该节点加入到信任列表,输入yes即可
两节点互相使用SSH通信无需密码即表示成功
4)切换到oracle帐户执行grid用户同样的操作,使两节点互相使用SSH通信无需密码即表示成功
13.在各节点上安装cvuqdisk-1.0.9-1.rpm包
该程序包是ORACLE GRID提供的,使节点间都能识别共享存储,不安装该包会报错,其在grid程序的安装介质的rpm目录下
进入安装介质目录执行 
14.开始安装Oracle Grid Infrastructure 11.2.0.3
ORACLE 从11.2.0.3开始是不需要像之前那样必须先安装基础版本再进行版本升级,11.2.0.3的补丁可以直接作为完整的安装包使用
11.2.0.3的PSU分为7个包,我们只需要前三个就可以了,第一和第二个包是DB,第三个包是GRID
由于是静默安装,所以在安装时安装程序需要找应答文件,根据应答文件里的内容来进行安装
应答文件可以通过一次图形界面安装的配置来生成,那种方式需要至少有过一次图形界面的安装
另一种方式可以直接使用ORACLE安装介质中提供的标准的应答文件来进行相应修改,该应答文件在安装介质的response目录下名叫grid_install.rsp
在此我们在node 1上切换到grid用户进入到安装介质目录使用本文附件中提供的grid_install.rsp执行以下操作:
下载 grid_install.rsp 访问密码 3e4e参数含义

-showProgress 显示安装进度
-ignorePrereq 忽略预检测,由于我们没有使用DNS来解析SCAN所以会报一个SCAN的错误,因为使用udev绑定裸设备而没有使用ASMLIB来使用ASM,所以会报一个ASM的错误,这两个错误都是可以忽略的,但静默安装在检测到错误后就会停止安装,不能像图形界面那样点一下忽略跳过,所以我们使用这个参数来绕过预检
-silent 静默安装
-responseFile 后面跟应答文件路径
注:本文提供的应答文件可根据各自需要进行相应修改,主要需要修改的是一些NAME和IP等内容
在安装的过程中会要求分别在各node上以root帐户执行 
另开会话分别在各节点上依次执行这两个脚本,执行完后会要求在运行安装程序的节点上以root帐户执行 
按要求执行完即可
分别在两个节点上以grid用户执行crs_stat -t查看各RAC资源情况,除了3个gsd资源不在线以外其他均在线则表示正常
GSD资源是用来对ORACLE 9i的相关命令做支持的,11G后已不再使用,所以不必在线。
使用root用户检查OCR,执行ocrcheck出现以下内容则表示正常: 
使用root用户执行crsctl query css votedisk 检查voting disk,出现以下内容则表示正常 
15.创建PRODDATA磁盘组
查看全局磁盘组情况
在添加了磁盘组后在另一个节点是处于unmount的状态,所以到另一个节点将磁盘组mount
在另一个节点执行如下操作:
再查看全局磁盘组情况,各节点均为mount即可
16.安装DB SOFT
在node 1使用oracle帐户进入DB的安装介质,同样用本文附件提供的应答文件db_install.rsp以静默的方式进行数据库软件的安装,相应配置可根据自己实际情况进行修改
下载db_install.rsp访问密码f951
在安装过程最后会要求分别在两个节点上以root用户执行 
至此ORACLE数据库软件安装完毕
17.手动建库
在node1进行如下操作:
1)创建pifle, 

内容如下:

相关参数可根据自己需要修改
若有*.audit_file_dest='/u01/app/oracle/admin/prod/adump'  *.audit_trail='db'参数则根据需要分别在两个节点创建相应目录
将数据库启动到nomount状态
2)创建建库脚本 

脚本内容如下,可根据自己需要进行修改:

在sqlplus中运行该建库脚本
建库脚本执行完后创建相应视图和对象
切换到system用户运行以下脚本
3)创建SPFILE
分别在两个节点的$ORACLE_HOME/dbs下创建initprod1.ora和initprod2.ora内容为
在node1使用默认路径$ORACLE_HOME/dbs下的pfile文件initprod1.ora重启数据库
4)创建数据库默认表空间users
5)创建节点2的undo表空间undotbs2
6)创建thread 2的3组redo日志组并启用thread 2
7)修改参数cluster_database开启群集 

8)开启归档和flashback

在node1上将数据库重启到mount状态,然后开启归档和flashback

9)node2使用默认路径$ORACLE_HOME/dbs下的pfile文件initprod2.ora启动数据库
10)将数据库资源添加到CRS管理
在任意节点上以oracle用户执行以下命令
11)将两个节点的实例资源添加到CRS管理
在任意节点上以ORACLE用户执行以下命令
12)使用sqlplus关闭两节点实例,使用crs启动数据库
从11GR2开始,instance资源在crs_stat -t中是看不到的,只能看到DB的资源
可以使用 

来检查数据库实例的运行状况

关闭两个节点后,在任意节点以oracle或root帐户使用以下命令启动数据库
或者
至此手动建库结束!
18.添加TAF服务
众所周知,RAC的两大优势就是Load balance和failover
ORACLE的Load balance分为服务端和客户端,客户端需要每个都要配置,服务端是通过remote listener参数和各节点的tnsnames.ora里的配置,通过交叉注册监听的方式来处理负载均衡
虽然负载均衡很重要也很有必要,但是在实际的工作和生产环境中大多不采用这种方式实现load balance,因为这种方式反而可能会造成大量的GC资源的争用使性能下降
一般更佳的实现load balance的方式是通过程序的合理设计,通过指定相应程序模块所访问的instance主动的进行负载均衡。
TAF分为客户端和服务端,同样的客户端方式需要每台客户端都进行设置,而服务端只要在服务端设置TAF的服务即可
在任意节点以oracle用户执行以下命令添加TAF服务
各种参数说明可通过 

进行查看

此处设置的为实例prod1和prod2为优先服务,服务策略为basic,failover类型为SELECT,方法为basic,5秒延迟,180次重试,开启通知
至此,静默安装RAC手动建库完毕。

请尊重我们的辛苦付出,未经允许,请不要转载 Ask600 的文章!