在virtualbox虚拟机里静默安装RAC 11G

点击下载word文档,格式更清晰,可节约您的时间。

一 规划

1.1 IP规划

RAC环境介绍:

1.2 交换内存规划


交换内存至少需要3G。1

检查交换空间大小:

扩容swap示例(这里扩容2G):

dd if=/dev/zero of=/tmp/swap bs=1MB count=2048

mkswap /tmp/swap

swapon /tmp/swap

free -m #检查确认

vi /etc/fstab

添加:

/tmp/swap swap swap defaults 0 0

扩容swap详细请参考这里

1.3 磁盘空间规划

这里仅做实验用,因此分配较小的磁盘空间:

根目录40G,共享存储20G

二 实施步骤

2.1 配置网络

2.1.1 配置网络

两个节点都需要配置两个网卡。

virtualbox虚拟机里可以这样模拟(需要关闭虚拟机进行配置):

第一块网卡桥接模式;

第二块网卡为内部网络:

#设置第二块儿网卡(这里是eth1)ip示例:

执行ip addr查看该网卡的HWADDR信息:

cd /etc/sysconfig/network-scripts

cp ifcfg-eth0 ifcfg-eth1

vi ifcfg-eth1

DEVICE=eth1

HWADDR=上图红框值

IPADDR=10.10.10.1   #节点二的私有IP为10.10.10.2

去除GATEWAY和UUID这一行

#重启网卡服务

service network restart

#测试下能否ping通对方

2.1.2 配置主机名

vi /etc/sysconfig/network

修改hostname的值即可。

节点1改为rac1,节点2改为rac2

该配置需重启服务器生效。

临时配置方式(服务器重启后失效):

hostname 主机名,示例:

hostname rac1

2.1.3 修改/etc/hosts文件

vi /etc/hosts

添加示例:

#rac1

192.168.144.213 rac1

192.168.144.215 rac1_vip

10.10.10.1 rac1_priv


#rac2

192.168.144.214 rac2

192.168.144.216 rac2_vip

10.10.10.2 rac2_priv


#scan-ip

192.168.144.217 scan-vip

2.2 配置共享存储

关闭两台虚拟机。

2.2.1 配置共享磁盘

本实验只创建一块儿共享磁盘。

2.2.1.1 创建共享磁盘

cd C:\Program Files\Oracle\VirtualBox

/*

路径可以通过右击VirtualBox图标-属性查看:

*/

VBoxManage createhd --filename D:\VirtualBoxFile\rac.vdi --size 20480 --format vdi --variant fix

命令执行成功后,会在D:\VirtualBoxFile下生成一个大小为20G的rac.vdi文件。

2.2.1.2 将该磁盘加入rac1虚拟机里,并将其设置为共享磁盘

VBoxManage storageattach rac1 --storagectl "SATA" --port 1 --device 0 --type hdd --medium  D:\VirtualBoxFile\rac.vdi --mtype shareable

/*

备注:

rac1是rac1虚拟机的名称:

SATA是控制器的类型,须和现有磁盘的控制器类型保持一致:

如果现有磁盘的控制器类型是IDE,则storagectl值为IDE。

如果控制器类型写错了,会导致虚拟机无法启动,报错:

fatal:no bootable medium found!system halted

*/

2.2.1.3 将该共享磁盘加入到rac2虚拟机里

注意:两个虚拟机共享磁盘rac.vdi的虚拟磁盘的端口应该保持一致,且不要和现有SATA端口重复。这里都是SATA端口1:

启动两台虚拟机,确保都可以看到新添加的相同的共享磁盘,示例:

2.2.2 创建用户和用户组

在两个节点上执行:

groupadd -g 1000 oinstall   #该组的成员可以访问Oracle Inventory目录

groupadd -g 1001 dba     #该组的成员有SYSDBA权限

groupadd -g 1200 asmadmin

groupadd -g 1201 asmdba

groupadd -g 1202 asmoper

useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,dba  grid #管理Oracle Grid Infrastructure及ASM的用户

useradd -u 1101 -g oinstall -G dba,asmdba oracle

echo 密码 | passwd --stdin grid

echo 密码 | passwd --stdin oracle  

2.2.3 配置udev共享存储

在两个节点上执行:

for i in b c d e f g ;

do

echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""      >> /etc/udev/rules.d/99-oracle-asmdevices.rules

done

#启动udev服务

/sbin/start_udev

#查看生成的asm磁盘

[root@rac1 ~]# ll /dev | grep asm

brw-rw----. 1 grid asmadmin   8,  16 1月  22 16:12 asm-diskb

--也可以使用asmlib方式配置共享磁盘,详细可参考https://blog.csdn.net/yabingshi_tech/article/details/113990123

2.3 配置服务器

在两个节点上执行以下步骤: 

2.3.1 安装软件

#检查哪些软件包未安装

rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl pdksh sysstat unixODBC unixODBC-devel  smartmontools | grep "not installed"

 

#安装未安装的软件包,示例:

yum install compat-libstdc++-33 elfutils-libelf-devel libaio-devel pdksh unixODBC unixODBC-devel smartmontools -y

 

--若提示No package pdksh available,则下载rpm包进行安装:

wget http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm

rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

 

#安装compat-libcap

rpm -ivh compat-libcap1-1.10-1.x86_64.rpm

2.3.2 创建目录

mkdir -p /u01/app/oracle

mkdir -p /u01/app/grid

mkdir -p /u01/app/11.2.0.4/grid

mkdir -p /u01/app/oraInventory

chown -R oracle:oinstall /u01/app/oracle

chown -R grid /u01/app/grid

chown -R grid /u01/app/11.2.0.4/grid

chown -R grid /u01/app/oraInventory

chmod -R 775 /u01/app/oracle/

chmod -R 775 /u01/app/grid

2.3.3 关闭防火墙

service iptables stop

chkconfig iptables off

2.3.4 配置节点互信

在安装期间使用ssh和scp命令在其他集群节点上运行远程命令并将文件复制到其他集群节点。您必须配置SSH,以便这些命令不提示输入密码。

需要配置节点1 grid用户与节点2 grid用户的互信;

需要配置节点1 oracle用户与节点2 oracle用户的互信;

配置两个节点grid及oracle用户与自身的互信;

以下只列举了grid用户互信配置步骤,oracle用户互信配置步骤略。

2.3.5.1 配置节点1免密码登录到节点2

在节点1上执行:

su - grid

ssh-keygen               #生成秘钥

ssh-copy-id rac2  #拷贝秘钥

 

#测试免密登录(第一次会让输入yes,要多ssh几次,确保后续不让输入yes)

ssh rac2 hostname

ssh rac2_priv hostname

2.3.5.2 配置节点2免密码登录到节点1

在节点2上执行:

su - grid

ssh-keygen               #生成秘钥

ssh-copy-id 192.168.1.202  #拷贝秘钥

 

#测试免密登录

ssh rac1 date

ssh rac1_priv date

2.3.5.3 配置节点1免密码登录到节点1

在节点1上执行:

ssh-copy-id 192.168.1.202  #拷贝秘钥

 

#测试免密登录

ssh rac1 date

ssh rac1_priv date

2.3.5.4 配置节点2免密码登录到节点2

在节点2上执行:

ssh-copy-id 192.168.144.204  #拷贝秘钥

 

#测试免密登录

ssh rac2 date

ssh rac2_priv date

2.3.5 配置环境变量

2.3.5.1 修改oracle用户的环境变量

su - oracle

vi .bash_profile

添加:

export EDITOR=vi

export ORACLE_SID=prod1

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X1186/bin

umask 022

 

--注意,需要将节点2上的ORACLE_SID的值改为prod2.

source .bash_profile #使修改生效

2.3.5.2 修改grid用户的环境变量

su - grid

vi .bash_profile

添加:

export ORACLE_BASE=/u01/app/grid

export ORACLE_SID=+ASM1

export ORACLE_HOME=/u01/app/11.2.0.4/grid

export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

--注意,节点2上的ORACLE_SID的值改为+ASM2.

source .bash_profile #使修改生效

2.3.6 配时钟同步

开始安装之前,请确保所有群集节点上的日期和时间设置尽可能设置为相同的日期和时间。集群时间同步机制确保所有集群成员的内部时钟同步。对于Linux上的Oracle RAC,可以使用网络时间协议(NTP)或Oracle Cluster Time Synchronization Service。

这里选择禁用NTP服务,使用oracle rac内部自带的时钟同步CTSS:

service ntpd stop

mv /etc/ntp.conf /etc/ntp.conf_bak

如果只关闭了ntp服务,没删除配置文件的话,后面安装grid会报如下错误:

INFO: Error Message:PRVF-5507 : NTP 守护程序或服务未在任何节点上运行, 但以下节点上存在 NTP 配置文件

2.3.7 配置内核参数

在两个节点服务器上执行:

vi /etc/sysctl.conf

修改以下各参数,最小设置如下(如果参数值比下面的大,则保持不变即可):

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 1036870912

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

--注意,这里kernel.shmmax 仅设置的1G,请根据实际情况调大些(初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于共享内存,所以该参数值需要大于MEMORY_TARGET)。

运行sysctl -p应用以上参数:

/sbin/sysctl -p

2.3.8 配置资源限制

vi /etc/security/limits.conf

新增如下内容:

oracle soft nofile 65536

oracle hard nofile 65536

oracle soft nproc 16384

oracle hard nproc 16384

oracle stack nproc 16384

oracle stack nproc 16384

grid soft nofile 65536

grid hard nofile 65536

grid soft nproc 16384

grid hard nproc 16384

grid stack nproc 16384

grid stack nproc 16384

2.3.9 开启巨页

确保/sys/kernel/mm/transparent_hugepage/enabled值为alwarys

若不是,则这样设置:

sh -c 'echo "alwarys" >  /sys/kernel/mm/transparent_hugepage/enabled'

2.4 安装RAC

2.4.1 下载安装包

下载地址:

https://updates.oracle.com/download/13390677.html

选择Platform,然后下载以下三个安装包:

其中,p13390677_112040_Linux-x86-64_3of7.zip是GI的安装包(View Readme里有介绍):

1/2 of 7.zip是数据库安装包。

其他版本的下载页面:

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

2.4.2 在节点一上静默安装GRID

用grid用户进行安装。

unzip p13390677_112040_Linux-x86-64_3of7.zip

cd grid

2.4.2.1 预检查

在节点一上检查:

./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose > runcluvfy.log

检查下日志文件runcluvfy.log是否有报错(查询‘失败’关键字)

/*

假如报错:

结果:子网 "192.168.144.0" 的 TCP 连接性检查失败

则需要检查下两台服务器的防火墙是否未关闭,需要关闭防火墙。

 

假如报错:

PRVF-5636 : 在以下节点上, 无法访问的节点的 DNS 响应时间超过 "15000" 毫秒: rac2,rac1

则修改/etc/resolv.conf

添加DNS配置,格式:

nameserver 你的DNS服务器地址

--DNS服务器地址查看:

*/

2.4.2.2 建响应文件

点击下载grid.rsp。

将该响应文件上传至/home/grid下

需要注意修改grid.rsp以下几处:

oracle.install.crs.config.clusterNodes=rac1:rac1_vip,rac2:rac2_vip

oracle.install.crs.config.networkInterfaceList=eth1:192.168.144.0:1,eth2:10.10.10.0:2 #表示公网和私网网段,注意修改网卡名称为自己服务器的网卡名称。

oracle.install.asm.diskGroup.disks=/dev/asm-diskb

oracle.install.asm.diskGroup.diskDiscoveryString=/dev/

/*

若使用的asmlib方式配置的共享磁盘,则需要注意修改:

oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/DATA 

oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/disks/*

假如oracle.install.asm.diskGroup.diskDiscoveryString配置有误,则在后面执行/u01/app/11.2.0.4/grid/root.sh脚本时,日志里会报错:

ORA-15018: diskgroup cannot be created

ORA-15031: disk specification '/dev/oracleasm/disks/DATA' matches no disks

ORA-15014: path '/dev/oracleasm/disks/DATA' is not in the discovery set

需要修正oracle.install.asm.diskGroup.diskDiscoveryString值,并删除相关目录(/u01/app/oraInventory, /u01/app/grid, /u01/app/11.2.0.4/grid),重新安装GRID

*/

2.4.2.3 在两个节点上安装cvuqdisk

#用root用户安装cvuqdisk包

#节点一

cd /home/grid/grid/rpm

rpm -ivh cvuqdisk-1.0.9-1.rpm

#节点二

将节点一上的安装包拷贝至节点二,再进行安装。

2.4.2.4 安装GRID

用grid用户安装:

cd /home/grid/grid

./runInstaller -silent -responseFile /home/grid/grid.rsp

按提示用root用户在两个节点上先后执行脚本:

sh /u01/app/oraInventory/orainstRoot.sh

sh /u01/app/11.2.0.4/grid/root.sh

root.sh会创建ASM实例及磁盘组,启动RAC集群:

执行root.sh脚本后,需要检查下日志是否报错。

 

按提示用grid用户在节点一上执行脚本:

cd /u01/app/11.2.0.4/grid/cfgtoollogs/

touch cfgrsp.properties

./configToolAllCommands RESPONSE_FILE=cfgrsp.properties

该脚本会启动监听。

执行完后记得检查下日志是否有报错。

2.4.2.5 检查集群启动状态

[grid@rac1 cfgtoollogs]$ crsctl check cluster -all

**************************************************************

rac1:

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

**************************************************************

rac2:

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

2.4.2.6 检查磁盘组

登录rac1,rac2可以看到磁盘组:

su - grid

sqlplus / as sysasm

set lines 200

col path for a40

select group_number,header_status,state,name,path,redundancy from v$asm_disk;

SQL> select group_number,name,state from v$asm_diskgroup;

2.4.2.7 检查监听状态

2.4.2.8 修改目录所有者

在两个节点上执行:

chown -R grid:oinstall /u01/app/11.2.0.4/grid

2.4.3 在节点一上静默安装Database

2.4.3.1 解压

su - oracle

unzip p13390677_112040_Linux-x86-64_1of7.zip

unzip p13390677_112040_Linux-x86-64_2of7.zip

解压完成后,会将文件合并到database文件夹。

2.4.3.2 创建响应文件

点击下载db.rsp

注意修改oracle.install.db.CLUSTER_NODES:

oracle.install.db.CLUSTER_NODES=rac1,rac2

2.4.3.3 安装数据库

cd database

./runInstaller -silent -responseFile /home/oracle/db.rsp -ignorePrereq -ignoreSysPreReqs -ignoreDiskWarning

该命令会自动在两个节点上安装数据库软件。

按照提示用root用户在两个节点上执行脚本:

sh /u01/app/oracle/product/11.2.0/db_1/root.sh

检查日志是否有报错。

2.4.4 在节点一静默建库

2.4.4.1 建响应文件

su - oracle

点击下载dbca.rsp

注意修改以下几项:

GDBNAME = "prod"

SID = "prod"

NODELIST=rac1,rac2

STORAGETYPE=ASM

DISKGROUPNAME=DATA

CHARACTERSET = "ZHS16GBK"

NATIONALCHARACTERSET= "UTF8"

 

#注意事项

  • NODELIST是改第一处(集群)的NODELIST,不是改INSTANCE的NODELIST,否则两个数据库实例起不来。

② NODELIST的值是rac1,rac2,不是prod1,prod2.

2.4.4.2 静默安装

dbca -silent -responseFile dbca.rsp

/*

假如执行dbca无任何返回结果就直接退出了,则需要检查dbca.rsp文件是否配置有误。

*/

可以在两个节点上都能看到数据库实例了:

2.4.4.3 检查集群状态

SQL> SELECT value FROM v$parameter where name = 'cluster_database';

VALUE

--------------------------------------------------------------------------------

TRUE

值为true说明是rac集群。

2.4.4.4 检查监听

2.5 验证负载均衡

创建一个数据库连接:

使用该连接多次连接scan-vip,获取服务器主机名和ip地址(),看是否能查看到两个节点的主机名及ip:

sql: SELECT UTL_INADDR.GET_HOST_NAME,UTL_INADDR.GET_HOST_ADDRESS FROM dual;

2.6 验证数据库实例高可用

rac安装完成后,节点的ip是这样的:

#节点一

#节点二

2.6.1 模拟节点一数据库宕机

SQL> shutdown abort;

ORACLE instance shut down.

通过连接scan-vip,读写的sql仍然能正常执行,观察了几分钟发现浮动ip没有漂移。

2.6.2 模拟节点一服务器宕机

通过连接scan-vip,读写的sql仍然能正常执行,节点一的浮动ip漂移到节点二上了:

本篇文章主要参考了:https://blogs.oracle.com/database4cn/11gr2-rac

 

 

 

猜你喜欢

转载自blog.csdn.net/yabignshi/article/details/113034756