首页 > 代码库 > 阿里云上Oracle 11g RAC安装配置手册

阿里云上Oracle 11g RAC安装配置手册

有印象的用户可能发现,阿里云早在2016年深圳云栖大会就官方发布了对Oracle RAC的支持,但是相关产品却一直没能同步推出,相信大家都翘首以盼了许久许久。一个好消息是,近期阿里云将紧密推出两款新产品:共享块存储和ECS多网卡。这两款产品将打通众多关键云下应用上云的最后一公里,为用户提供更多的便利。在我们能正式体验到新产品之前,阿里云技术服务团队也将云上的Oracle RAC安装配置手册放出,希望能给大家提供更多不同的体验和选择。

一、安装说明

         阿里云上Oracle RAC的安装部署,重点需要解决两大基础环境需求:一是共享存储,二是多IP配置。我们目前有两大思路来提供这两个需求的解决方案:

         方案一、阿里云产品。共享存储产品2015年年底完成内测,且成功实现RAC部署,该产品即将上线。HaVIP虽然可以提供多ECS共享多IP,但却无法提供多网卡。多网卡产品也将紧随共享存储之后发布。大家可以共同期待一下;

         方案二、开源产品。经过测试,iSCSI可以完美解决ECS间存储共享问题,而n2n VPN则可以在多个能同时访问某一个公共服务器的ECS之间轻松建立一个自主的多IP网络环境。

         本手册以VPC环境中如何使用开源产品搭建Oracle RAC为例进行编写,事实上,在经典网络环境或者专有云里,该手册一样适用。

二、GRID安装前的系统配置工作

 

以下各安装步骤,若无特殊说明,RAC的每个节点均需执行。

1.RAC对系统的要求

         ECS:2个,CentOS 6.5

         磁盘:共享云盘,至少申请2个,1个大小为10G左右,存储CRS数据。1个存放Oracle数据,大小根据业务而定。两个云盘都先不挂载。

         IP规划:

        

Private IP

Public IP

Virtual IP

SCAN IP

节点1

1个,ECS创建时已具备。

本例中,采用172.18.0.6

1个,与Private IP不同网段,需要用n2n VPN手工添加。

本例中采用192.168.0.11

1个,与Public IP同网段,在配置文件中配置即可。

本例中采用192.168.0.21

1-3个,与Public IP同网段,在配置文件中配置即可。

本例中采用192.168.0.31

节点2

1个,ECS创建时已具备。

本例中,采用

172.18.0.7

1个,与Private IP不同网段,需要用n2n VPN手工添加。

本例中采用192.168.0.12

1个,与Public IP同网段,在配置文件中配置即可。

本例中采用192.168.0.22

         OSS:1个bucket,配置好ossfs,挂载给ECS。

2.安装配置iSCSI

1)选定target和initiator

iSCSI架构包含1个target(服务端)和多个initiator(客户端),最好申请单独的ECS做iSCSI的target,而RAC的节点则自然成为initiator。

target地址:172.18.0.5

initiator地址:172.18.0.6和172.18.0.7

2)挂载云盘

在选定的target使用fdisk格式化成ext4格式,挂载给target ECS使用,文件系统名自定义。

3)获取安装包

在开源网站上可以下载到iscsitarget源码包

wget http://sourceforge.net/projects/iscsitarget/files/latest/download?source=directory

4)安装target

tar zxvf iscsitarget-1.4.20.1.tar.gz

cd iscsitarget-1.4.20.1

make

make install

安装后在/etc下会生成iet目录,iscsitarget的主要配置文件就在该目录下。

5)配置

修改/etc/iet/ietd.conf,涉及到改动的内容有:

Target iqn.2001-04.com.sharestorage:racdb.crs1
Lun 0 Path=/dev/vdb,Type=blockio

Target iqn.2001-04.com.sharestorage:racdb.data1
Lun 0 Path=/dev/vdc,Type=blockio

这里斜体部分请自定义,而粗体部分必须严格匹配系统中云盘的实际地址。

修改/etc/iet/targets.allow,定义允许访问target的地址范围。

ALL 172.18.0.0/20

6)启动iscsi-target

/etc/init.d/iscsi-target start

7)安装iscsi-initiator

两个RAC节点都需要安装iscsi-initiator。iscsi-initiator在centOS自带光盘iso镜像中,挂载好iso,配置好yum源,直接安装:

yum -y install iscsi-initiator-utils-*

8)启动iscsid服务,并配置开机自动重启

service iscsid start

chkconfig iscsid on

chkconfig iscsi on

9)发现target

在两个initiator节点执行:iscsiadm -m discovery -t sendtargets -p 172.18.0.5

10)登录到iscsi-target

在两个initiator节点执行:

iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.data1 -p 172.18.0.5 -l

iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.crs1 -p 172.18.0.5 -l

11)配置initiator节点重启后自动登录target

在两个initiator节点执行:

iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.crs1 -p 172.18.0.5 --op update -n node.startup -v automatic

iscsiadm -m node -T iqn.2001-04.com.sharestorage:racdb.data1 -p 172.18.0.5 --op update -n node.startup -v automatic

12)检查云盘

在initiator节点执行fdisk -l,此时能看到新增了2个磁盘,这是由target共享过来的。

3. 安装配置n2n VPN

1)所有节点都安装倚赖包

yum install subversion gcc-c++ openssl-devel

2)所有节点都需要安装n2n

在线安装可以使用如下命令,也可以离线将二进制文件下载上传到本地进行安装。svn co https://svn.ntop.org/svn/ntop/trunk/n2n

cd n2n/n2n_v2

make

make install

3)超级节点启动服务

supernode -l 5000

4)边缘节点配置IP

节点1:edge -d edge0 -a 192.168.0.11 -c mynetwork -k password -l 172.18.0.5:5000 -m AA:54:64:FC:46:25 -E -r

节点2:edge -d edge0 -a 192.168.0.12 -c mynetwork -k password -l 172.18.0.5:5000 -m 96:95:2C:96:48:01 -E -r

这样,节点1和节点2在192.168.0.0网段的public IP就创建成功了,使用ifconfig能看到一个名为edge0的新端口以及对应的IP。

4.安装缺失的RPM包

Oracle RAC安装时会进行必要系统检查, 其中包括了对一系列必需的RPM的检查,为了防止安装报错,这些RPM包必须要提前装好,而安装RPM最方便的方法是通过yum工具。

以下是配置yum工具的步骤:

1)默认专有云/公有云环境下都会预先配置好yum,如果没有配置好,请自行配置好;

2)install package

yum install -y    binutils-2.*

yum install -y    compat-libstdc++-33*

yum install -y    sysstat-9.*     

yum install -y    glibc-2.*

yum install -y    libgcc-4.*       

yum install -y    libstdc++-4.*

yum install -y   elfutils-libelf-0*         elfutils-libelf-devel-0*

yum install -y   libtool-ltdl*

yum install -y   ncurses*   

yum install -y   readline*    

yum install -y   unixODBC*    

yum install -y  compat-libcap1*

yum install -y compat-libstdc++*

注:一些包可能会因为系统已经有了更高的版本而无法安装,忽略即可,一些包在阿里云提供的yum源中不存在,也可先忽略。

5. 修改系统核心参数

1)将如下内容加入到"/etc/sysctl.conf" 文件中。

fs.aio-max-nr = 1048576

fs.file-max = 6815744

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=1048586

        

运行如下命令使修改即刻生效

#/sbin/sysctl -p

 

2)修改"/etc/security/limits.d/90-nproc.conf"

将如下行:

*          soft    nproc    1024

 

改为:

* - nproc 16384

 

6. 创建用户和组

1)运行如下命令创建用户和组:

创建oinstall组

#groupadd oinstall

创建dba组

#groupadd dba

创建grid用户

#groupadd asmdba

#groupadd asmadmin

#groupadd asmoper

#useradd -g oinstall -G dba grid

设置grid用户密码

创建oracle用户

#useradd -g oinstall -G dba oracle

设置grid和oracle用户密码

#passwd grid

#passwd oracle

#usermod -G dba,asmdba,asmadmin,asmoper grid

#usermod -G dba,asmdba oracle

2) 调整oracle用户的shell限制

--Add the following lines to the "/etc/security/limits.conf" file.

 

oracle              soft    nproc   2047

oracle              hard    nproc   16384

oracle              soft    nofile  4096

oracle              hard    nofile  65536

oracle              soft    stack   10240

 

grid              soft    nproc   2047

grid              hard    nproc   16384

grid              soft    nofile  4096

grid              hard    nofile  65536

 

--Add the following lines to the "/etc/pam.d/login" file, if it does not already exist.

 

session    required     pam_limits.so

将Oracle grid的安装介质上传至服务器上,并解压缩, 安装其中的cvuqdisk包。

--Install the following package from the Oracle grid media after you‘ve defined groups.

 

#cd $your_path_to_grid/rpm

#rpm -Uvh cvuqdisk*

7. 网络设置

1)编辑/etc/hosts文件, 将各节点的public IP, Private IP, Virtual IP, Scan IP填入其中:

#Public

140.205.148.102 testOracle1Z.com      testOracle1Z

140.205.148.103 testOracle3Z.com      testOracle3Z

 

#Private

10.218.1.78     testOracle1Z-PRI.com    testOracle1Z-PRI

10.218.1.108    testOracle3Z-PRI.com    testOracle3Z-PRI

 

#Virtual

140.205.148.104 testOracle1Z-VIP.com  testOracle1Z-VIP

140.205.148.105 testOracle3Z-VIP.com  testOracle3Z-VIP

 

#SCAN

140.205.148.111 ORASCAN.com        ORASCAN

2)修改 /etc/resolv.conf,使nameserver指向本机

nameserver localhost

3)重启dnsmasq服务,并使其随系统启动

可能要安装一下dnsmasq服务先

#/etc/init.d/dnsmasq restart

#chkconfig dnsmasq on

 

8. 关闭SELINUX以及iptables

编辑 "/etc/selinux/config", 将其改为:

SELINUX=disabled

关闭iptables

# service iptables stop

# service ip6tables stop

 

# chkconfig iptables off

# chkconfig ip6tables off

 

9. 关闭NTP服务

Oracle官方是推荐关闭NTP服务,阿里云ECS有统一的可信赖NTP服务,也可以不关闭。

Either configure NTP, or make sure it is not configured so the Oracle Cluster Time Synchronization Service (ctssd) can synchronize the times of the RAC nodes. If you want to deconfigure NTP do the following.

 

# service ntpd stop

Shutting down ntpd:                                        [  OK  ]

# chkconfig ntpd off

# mv /etc/ntp.conf /etc/ntp.conf.orig

# rm /var/run/ntpd.pid

10. 创建Oracle软件的安装目录

Create the directories in which the Oracle software will be installed.

#mkdir -p /u01/grid

#mkdir -p /u01/oracle/11.2.0

#chown -R grid:oinstall /u01/grid

#chmod -R 775 /u01/grid

#chown -R oracle:oinstall /u01/oracle

#chmod -R 775 /u01/oracle

#mkdir -p /u01/crs/11.2.0

#chown -R grid:oinstall /u01/crs

#chmod -R 775 /u01/crs

9. 配置用户的环境变量

修改grid的配置文件:/home/grid/.bash_profile

ORACLE_HOSTNAME=testOracle1Z.com; export ORACLE_HOSTNAME

ORACLE_BASE=/u01/grid; export ORACLE_BASE

ORACLE_HOME=/u01/crs/11.2.0; export ORACLE_HOME

ORACLE_SID=+ASM1; export ORACLE_SID

PATH=$ORACLE_HOME/bin:$PATH; export PATH

 

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;

export CLASSPATH

修改oracle的配置文件:/home/oracle/.bash_profile

ORACLE_HOSTNAME=testOracle1Z.com; export ORACLE_HOSTNAME

ORACLE_BASE=/u01/oracle; export ORACLE_BASE

ORACLE_HOME=/u01/oracle/11.2.0; export ORACLE_HOME

ORACLE_SID=orarac1; export ORACLE_SID

PATH=$ORACLE_HOME/bin:$PATH; export PATH

 

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;

export CLASSPATH

以上是节点1的配置, 若在节点2上面配置, 请将对应的ORACLE_SID和HOSTNAME改为对应的值。

 

11. 启用心跳网卡eth0的ARP协议

  eth0网卡作为RAC内部通讯的网卡, 其ARP协议必须开通, 以下是网卡配置文件示例,注意其中的“ARP=yes”和OPTIONS="layer2=1"两项设置。

# more /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=10.218.1.78

NETMASK=255.255.255.0

ARP=yes

OPTIONS="layer2=1"

12. 配置共享磁盘

所有共享磁盘都在此配置别名、属主、属组以及权限。

vi /etc/udev/rules.d/12-asm-permissions.rules文件, 加入如下内容:

KERNEL=="vdc", NAME="crs01",OWNER:="grid",GROUP:="oinstall",MODE:="660"

KERNEL=="vdd", NAME="crs02",OWNER:="grid",GROUP:="oinstall",MODE:="660"

KERNEL=="vde", NAME="crs03",OWNER:="grid",GROUP:="oinstall",MODE:="660"

KERNEL=="vdf", NAME="crsdata01",OWNER:="grid",GROUP:="oinstall",MODE:="660"

KERNEL=="vdg", NAME="crsdata02",OWNER:="grid",GROUP:="oinstall",MODE:="660"

KERNEL=="vdh", NAME="crsdata03",OWNER:="grid",GROUP:="oinstall",MODE:="660"

KERNEL=="vdi", NAME="crsdata04",OWNER:="grid",GROUP:="oinstall",MODE:="660"

KERNEL=="vdj", NAME="crsdata05",OWNER:="grid",GROUP:="oinstall",MODE:="660"

两个节点都改完之后重启系统

#shutdown –r now

13. 建立节点间的信任关系

     1)两节点分别执行(直接回车确认)

       su - grid

       mkdir ~/.ssh

       ssh-keygen -t rsa

       ssh-keygen -t dsa

            su - oracle

       mkdir ~/.ssh

       ssh-keygen -t rsa

       ssh-keygen -t dsa

     2)主节点执行

       su - grid

       cat ~/.ssh/id_rsa.pub>>./.ssh/authorized_keys  --公钥存在authorized_keys文件中,写到本机

       cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys

       ssh testOracle3Z-PRI cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  --第二个节点的公钥写到本机

       ssh testOracle3Z-PRI cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

       scp ~/.ssh/authorized_keys testOracle3Z-PRI:~/.ssh/authorized_keys

 

            su - oracle

       cat ~/.ssh/id_rsa.pub>>./.ssh/authorized_keys  --公钥存在authorized_keys文件中,写到本机

       cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys

       ssh testOracle3Z-PRI cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  --第二个节点的公钥写到本机

       ssh testOracle3Z-PRI cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

       scp ~/.ssh/authorized_keys testOracle3Z-PRI:~/.ssh/authorized_keys

     3)两个节点分别验证

       ssh testOracle1Z date   (public网卡)

       ssh testOracle3Z date

       ssh testOracle1Z-PRI date  (private网卡)

       ssh testOracle3Z-PRI date

     

三、安装Oracle GRID软件

1 检查grid CRS组件的安装先决条件是否满足。

在节点1上执行如下命令检查系统是否符合grid的安装先决条件,检查结果应该都是pass。

#su - grid

$cd grid的软件目录

$./runcluvfy.sh stage -pre crsinst -n testOracle1Z,testOracle3Z -verbose

报这个错:

/bin/rm: cannot remove `/tmp/bootstrap‘: Operation not permitted

./runcluvfy.sh: line 99: /tmp/bootstrap/ouibootstrap.log: Permission denied

将/tmp/bootstrap的权限改成777,属主属组改成grid:oinstall

会报NTP的错误,可以忽略,其他的报错,请按照提示进行修复。

2 配置

         编辑crs_install_test.rsp,文件目录:/u01/soft/oracle/grid/response/。两边同时编辑,以下只收录要修改或重视的内容,以节点1为例:

ORACLE_HOSTNAME=testOracle1Z.com

INVENTORY_LOCATION=/u01/grid/oraInventory

oracle.install.option=CRS_CONFIG

ORACLE_BASE=/u01/grid

ORACLE_HOME=/u01/crs/11.2.0

oracle.install.asm.OSDBA=asmdba

oracle.install.asm.OSOPER=asmoper

oracle.install.asm.OSASM=asmadmin

oracle.install.crs.config.gpnp.scanPort=1521

oracle.install.crs.config.clusterName=rac-test

oracle.install.crs.config.clusterNodes=testOracle1Z:testOracle1Z-VIP,testOracle3Z:testOracle3Z-VIP

oracle.install.crs.config.privateInterconnects=eth0:10.218.1.0:2,eth1:140.205.148.0:1   //1代表public,2代表private,3代表在群集中不使用该网卡

oracle.install.crs.config.storageOption=ASM_STORAGE

oracle.install.asm.SYSASMPassword=system

oracle.install.asm.diskGroup.name=OCR

oracle.install.asm.diskGroup.redundancy=EXTERNAL

oracle.install.asm.diskGroup.disks=/dev/crs01,/dev/crs02,/dev/crs03

oracle.install.asm.diskGroup.name=OCR

oracle.install.asm.diskGroup.redundancy=EXTERNAL

oracle.install.asm.diskGroup.disks=/dev/crs01,/dev/crs02,/dev/crs03

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

oracle.install.asm.monitorPassword=system

 

3 运行runInstaller

在节点1的CRS软件目录执行:

$./runcluvfy.sh stage -pre crsinst -n testOracle1Z,testOracle3Z -verbos

./runInstaller -silent -responseFile /u01/soft/oracle/grid/response/crs_install_test.rsp -ignoreSysPrereqs -ignorePrereq

等待一段时间后,会提示在两个节点分别用root用户执行:

/u01/grid/oraInventory/orainstRoot.sh

/u01/crs/11.2.0/root.sh

请注意以下内容,这是Oracle的安装bug导致需要进行的特殊workaroud:

在执行root.sh脚本时出现Adding daemon to inittab的时候,使用root立即执行命令: 

/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/nullbs=1024 count=1

 vi /etc/init/oracle-ohasd.conf

# Oracle OHASD startup

start on runlevel [35]

stop on runlevel [!35]

respawn

exec /etc/init.d/init.ohasd run >/dev/null 2>&1 </dev/null

4 增加磁盘组

asmca -silent -createDiskGroup -sysAsmPassword system -diskString ‘/dev/crs*‘ -diskGroupName DATA -diskList ‘/dev/crsdata01‘ -redundancy EXTERNAL -compatible.asm 11.2 -compatible.rdbms 11.2

asmca -silent -addDisk -sysAsmPassword system -diskGroupName DATA -diskList ‘/dev/crsdata02,/dev/crsdata03,/dev/crsdata04,/dev/crsdata05‘

vi cfgrsp.properties

技术分享

chmod 660 cfgrsp.properties

./configToolAllCommands RESPONSE_FILE=./cfgrsp.properties

三、安装Oracle DB软件

在节点1执行:

vi /u01/grid/oraInventory/ContentsXML/inventory.xml

加入

技术分享

准备好responsefile,位置:/u01/soft/oracle/database/response/db_install_test.rsp。以节点1为例,该文件需要修改和注意的内容有:

oracle.install.option=INSTALL_DB_SWONLY

ORACLE_HOSTNAME=testOracle1Z.com

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/u01/oracle/oraInventory

SELECTED_LANGUAGES=en

ORACLE_HOME=/u01/oracle/11.2.0

ORACLE_BASE=/u01/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.isCustomInstall=false

oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=oinstall

oracle.install.db.CLUSTER_NODES=testoracle1z,testoracle3z

DECLINE_SECURITY_UPDATES=true

 

依次执行:

/u01/crs/11.2.0/bin/cluvfy stage -pre dbinst -n testOracle1Z,testOracle3Z -verbose

./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /u01/soft/oracle/database/response/db_install_test.rsp

/u01/grid/oraInventory/orainstRoot.sh

/u01/oracle/11.2.0/root.sh

四、创建数据库

准备好response文件,文件位置:/u01/soft/oracle/database/response/dbca_test.rsp。

以节点1为例,该文件需要修改和注意的内容有:

GDBNAME = "orarac"

SID = "orarac"

NODELIST=testoracle1z,testoracle3z

SYSPASSWORD = "system"

SYSTEMPASSWORD = "system"

STORAGETYPE=ASM

DISKGROUPNAME=DATA

RECOVERYGROUPNAME=DATA

CHARACTERSET = "ZHS16GBK"

 

在节点1执行:

dbca -silent -responseFile /u01/soft/oracle/database/response/dbca_test.rsp

技术分享

 

五、IO校准测试

         以下三个截图是三次IO校准测试的结果,IOPS(随机IO,每次1024KB)最大值大约在3390,吞吐量大约在900MBps。

技术分享

 

技术分享

 

技术分享

 

阿里云上Oracle 11g RAC安装配置手册