本文为本人项目实站内容,尽量从原理和实现角度,将Oracle RAC 安装讲解清楚,并能直接用于生产环境搭建。
本文搭建采用静默安装,操作系统不需要安装图像界面。本人在虚拟机上面安装过程2个小时之内完成。
本文用到的相关shell脚本和数据库配置文件可以通过访问我的GitHub仓库下载
Oracle 12c 两节点RAC部署示意图
基于此图可以清晰了解Oracle RAC的部署要求,特别是网络和共享存储。这是生产环境推荐的部署方式。
下面开始进入实站环节,整个安装分为4大块:
Oracle 安装规划服务器准备基础环境配置Oracle安装配置附录常用命令
第一部分、Oracle安装规划
集群环境规划数据库版本:Oracle 12c R2
此部分对于集群安装成功与否至关重要,规划做好了后面配置就简单
1. SWAP规划RAMSWAP Space1-2GB1.5 times the size of RAM2-16GBEqual to the size of RAM>16GB20GB2.服务器规划系统
IP
hostname
内存
swap
/dev/shm
磁盘
Centos7.4
10.30.53.57
rac1.minjustica.lab
8G
8G
16G
100G
Centos7.4
10.30.53.58
rac2.minjustica.lab
8G
8G
16G
100G
3.网卡IP地址规划PUBLIC_IP
10.30.53.57
10.30.53.58
PUBLIC_IP_hostname
rac1.minjustica.lab
rac2.minjustica.lab
PRIVATE_IP
10.30.41.3
10.30.41.4
PRIVATE_IP_hostname
pri-rac1
pri-rac2
VIP
10.30.53.114
10.30.53.115
VIP_hostname
rac1-vip
rac2-vip
SCAN_IP
10.30.53.116
SCAN_IP_hostname
rac-scan
4.内存规划建议SGA+PGA占整个节点物理内存的65%,其中, SGA大小容量为PGA的3倍。
若计算节点实际配置内存容量大小为512 GB,则建议规划的SGA和PGA分别如下:
SGA大小: 512 GB * 65% * 75% = 249.6 GB(向下十位取整为240GB)PGA大小: 512 GB * 65% * 25% = 83.2 GB(向下十位取整为80GB)
5.共享卷规划数据库编号磁盘盘符共享卷大小存储池名称逻辑卷名磁盘绑定名称磁盘组名称OCR/Votedisk区1/dev/sda20GVirtualizationSTOR3fc_OCR_001OCRDISK01OCR2/dev/sdb20GVirtualizationSTOR3fc_OCR_002OCRDISK02OCR3/dev/sdc20GVirtualizationSTOR3fc_OCR_003OCRDISK03OCR闪回区1/dev/sdd40GVirtualizationSTOR3fc_FRA_001FRADISK01FRA数据区1/dev/sde100GVirtualizationSTOR3fc_DATA_001DATADISK001DATA
6.操作系统用户和组用户名用户ID用户组组ID密码oracle1000oinstall1000oracle123dba1001asmdba1011oper1002backupdba1013dgdba1014kmdba1015racdba1016grid1001oinstall1000grid123asmadmin1010asmdba1011asmoper1012oper10027.Oracle RAC环境变量规划hostname用户环境变量路径rac1oracleORACLE_BASE/u01/app/oracleoracleORACLE_HOME$ORACLE_BASE/product/12.2.0.1/dboracleORACLE_SIDrac1gridORACLE_BASE/u01/app/gridgridORACLE_HOME/u01/app/12.2.0/gridgridORACLE_SID+ASM1rac2oracleORACLE_BASE/u01/app/oracleoracleORACLE_HOME$ORACLE_BASE/product/12.2.0.1/dboracleORACLE_SIDrac2gridORACLE_BASE/u01/app/gridgridORACLE_HOME/u01/app/12.2.0/gridgridORACLE_SID+ASM28.安装路径规划/u01
第二部分、服务器准备以下为华为虚拟化平台FusionCompute准备虚拟机和磁盘网络配置
创建服务器
创建磁盘卷
分别在两个服务器上添加磁盘注意磁盘添加选择Bus Type为SCSI,否则虚拟机中无法获取磁盘的UUID。 如果在SCSI Command
为每台机器添加私有IP网卡
通过Security Group设置私有网卡IP只能内部访问
第三部分、环境基础设置
机器RAC1修改机器名称
shell> hostnamectl set-hostname rac1.minjustica.lab配置网卡
网卡1
shell> vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=6fa31c09-8966-4e41-8cec-dafc793f07d0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.30.53.57
NETMASK=255.255.255.0
GATEWAY=10.30.53.254网卡2
shell> vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=10.30.41.3
NETMASK=255.255.255.0重启网络服务
shell> service network restart配置Yum源
注意,YUM我此处为数据中心内部自己搭建,基于实际情况自己配置
shell> curl --output /etc/yum.repos.d/CentOS-Base.repo http://10.30.53.30/CentOS-Base.repo
shell> yum clean all免密配置
shell> ssh-keygen -t rsa -b 2048
shell> ssh-copy-id root@rac2配置hosts
shell> vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.30.53.57 rac1.minjustica.lab rac1
10.30.41.3 pri-rac1
10.30.53.114 rac1-vip
10.30.53.58 rac2.minjustica.lab rac2
10.30.41.4 pri-rac2
10.30.53.115 rac2-vip
10.30.53.116 rac-scan
shell> scp /etc/hosts root@rac2:/etc/hosts
机器RAC2修改机器名
shell> hostnamectl set-hostname rac2.minjustica.lab配置网卡
shell> vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=6fa31c09-8966-4e41-8cec-dafc793f07d0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.30.53.58
NETMASK=255.255.255.0
GATEWAY=10.30.53.254
shell> vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=10.30.41.4
NETMASK=255.255.255.0重启网络服务
shell> service network restart配置Yum源
shell> curl --output /etc/yum.repos.d/CentOS-Base.repo http://10.30.53.30/CentOS-Base.repo
shell> yum clean all
第四部分、Oracle安装配置此部分为了简化安装,将相关安装配置封装为shell脚本
环境初始化在RAC1和RAC2上面执行以下配置
进行用户和目录创建,安装相关依赖,配置环境变量等
注意:user-setup.sh和ENV-setup.sh 请基于实际情况进行修改,包括IP地址,用户密码等
shell> yum install wget
shell> cd ~
shell> wget http://10.30.53.30/oracle/packages/user-setup.sh
shell> bash user-setup.sh
shell> wget http://10.30.53.30/oracle/packages/ENV-setup.sh
shell> bash ENV-setup.sh >ENV-setup.log 2>&1配置ASM磁盘建议采用Linux 内核工具udev进行ASM磁盘的配置,以下命令在两个服务器上面都需要执行
注意:请基于实际磁盘和ASM diskgroup的关系修改脚本udev-setup_1.0.sh映射关系
shell> cd ~
shell> wget http://10.30.53.30/oracle/packages/udev-setup_1.0.sh
shell> bash udev-setup_1.0.sh
shell> ll /dev/asmdisk/
下载软件安装包在rac1节点下载安装包,并解压
注意:安装的安装包和补丁包请自行下载
shell> cd /tmp
shell> wget http://10.30.53.30/oracle/packages/linuxx64_12201_grid_home.zip
shell> wget http://10.30.53.30/oracle/packages/linuxx64_12201_database.zip
shell> wget http://10.30.53.30/oracle/packages/p26247490_12201180417ACFSApr2018RU_Linux-x86-64.zip
shell> unzip /tmp/linuxx64_12201_grid_home.zip -d /u01/app/12.2.0.1/grid/
shell> unzip /tmp/linuxx64_12201_database.zip -d /home/oracle/
# 安装数据库补丁包
shell> unzip /tmp/p26247490_12201180417ACFSApr2018RU_Linux-x86-64.zip -d /u01/app/12.2.0.1/grid/
shell> chown -R grid:oinstall /u01/app/12.2.0.1/grid/
shell> chown -R oracle:oinstall /home/oracle/database/安装cvuqdisk在rac1和rac2两个节点安装cvuqdisk软件包,此包位于/u01/app/12.2.0.1/grid/cv/rpm/下面
rac1
shell> cd /u01/app/12.2.0.1/grid/cv/rpm/
shell> rpm -ivh cvuqdisk-1.0.10-1.rpm
shell> scp cvuqdisk-1.0.10-1.rpm root@rac2:/tmprac2
shell> cd /tmp
shell> rpm -ivh cvuqdisk-1.0.10-1.rpm
检查免密配置开始安装,检测免密登录配置
shell> cd /home/oracle/database/sshsetup
shell> ./sshUserSetup.sh -user oracle -hosts "rac1 rac2" -exverify -confirm -noPromptPassphrase
shell> ./sshUserSetup.sh -user grid -hosts "rac1 rac2" -exverify -confirm -noPromptPassphrase
集群环境检查检测系统配置是否符合集群需求
在rac1执行
shell> su - grid
shell> cd /u01/app/12.2.0.1/grid
shell> ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose检查如果出现如下提示,则代表检查成功,否则需要基于错误进行修改
Pre-check for cluster services setup was successful.
CVU operation performed: stage -pre crsinst
Date: Feb 16, 2021 1:24:40 PM
CVU home: /u01/app/12.2.0.1/grid/
User: grid安装GI下载应答文件,修改相关配置,执行安装,此操作一grid用户操作
shell> cd ~
shell> wget http://10.30.53.30/oracle/packages/.gridsetup.rsp
shell> cd /u01/app/12.2.0.1/grid
shell> ./gridSetup.sh -silent -responseFile ~/.gridsetup.rsp -skipPrereqs
shell> 看到如下提示代表此步骤成功
You can find the log of this install session at:
/tmp/GridSetupActions2021-02-16_03-10-27PM/gridSetupActions2021-02-16_03-10-27PM.log
As a root user, execute the following script(s):
1. /u01/app/grid/oraInventory/orainstRoot.sh
2. /u01/app/12.2.0.1/grid/root.sh
Execute /u01/app/grid/oraInventory/orainstRoot.sh on the following nodes:
[rac1, rac2]
Execute /u01/app/12.2.0.1/grid/root.sh on the following nodes:
[rac1, rac2]
Run the script on the local node first. After successful completion, you can start the script in parallel on all other nodes.
Successfully Setup Software.
As install user, execute the following command to complete the configuration.
/u01/app/12.2.0.1/grid/gridSetup.sh -executeConfigTools -responseFile /home/grid/.gridsetup.rsp [-silent]
Moved the install session logs to:
/u01/app/grid/oraInventory/logs/GridSetupActions2021-02-16_03-10-27PM
使用root用户分别在两个节点执行
shell> bash /u01/app/grid/oraInventory/orainstRoot.sh在RAC1节点执行
shell> /u01/app/12.2.0.1/grid/gridSetup.sh -executeConfigTools -responseFile /home/grid/.gridsetup.rsp -silent使用root用户分别在两个节点执行
shell> bash /u01/app/12.2.0.1/grid/root.sh日志显示如下信息代表执行成功
2021/02/16 16:59:55 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2021/02/16 17:00:30 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded创建ASM磁盘组创建DATADG和FRADG asm diskgroup
shell> asmca -silent -sysAsmPassword password -createDiskGroup -diskString /dev/asmdisk/ -diskGroupName DATADG -disk /dev/asmdisk/DATADISK001 -redundancy EXTERNAL
shell> asmca -silent -sysAsmPassword password -createDiskGroup -diskString /dev/asmdisk/ -diskGroupName FRADG -disk /dev/asmdisk/FRADISK01 -redundancy EXTERNAL
安装数据库软件切换到Oracle用户
在RAC1节点
shell> su - oracle
shell> wget http://10.30.53.30/oracle/packages/.db.rsp
shell> cd /home/oracle/database/
shell> ./runInstaller -silent -ignorePrereqFailure -responseFile ~/.db.rsp
创建数据库实例在RAC1节点
shell> su - oracle
shell> wget http://10.30.53.30/oracle/packages/.dbca.rsp
shell> dbca -silent -ignorePreReqs -ignorePrereqFailure -createDatabase -responseFile ~/.dbca.rsp看到如下日志代表成功
Creating Pluggable Databases
61% complete
78% complete
Executing Post Configuration Actions
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/rac/rac4.log" for further details.至此,正常安装完成,可以进行安装之后的检查确认
检查RAC集群状态grid用户任意节点执行如下命令,集群各服务都为online代表正常
[grid@rac1 ~]$ 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
**************************************************************
使用sqlplus登录查询数据库状态
shell> su - oracle
shell> sqlplus / as sysdbaSQL> alter pluggable database racpdb save state;
Pluggable database altered.
SQL> set lines 168 pages 999
SQL> col CON_NAME for a18
SQL> col INSTANCE_NAME for a18
SQL> col RESTRICTED for a12
SQL> select con_id,CON_NAME,INSTANCE_NAME,STATE,RESTRICTED from dba_pdb_saved_states;
CON_ID CON_NAME INSTANCE_NAME STATE RESTRICTED
---------- ------------------ ------------------ -------------- ------------
3 ORCLPDB orcl2 OPEN NO
3 ORCLPDB orcl1 OPEN NO可以看到两个节点实例都正常。
附录、常用操作命令RAC数据库正常是全自动的,当操作系统启动时,ASM设备会自动挂载,数据库也会随之自动启动。但是,平时对于DBA也少不了维护操作,对于刚入门的人来讲,这些命令是最常用的。
启动、停止oracle数据库实例监听:
[root@RAC01 ~]$ srvctl start listener --启动监听
[root@RAC01 ~]$ srvctl stop listener --停止监听
数据库
[root@RAC01 ~]$ srvctl start database -d rac --启动数据库
[root@RAC01 ~]$ srvctl stop database -d rac --停止数据库
或者
[root@RAC01 ~]$ srvctl stop database -d rac -o immediate --停止数据库
[root@RAC01 ~]$ srvctl start database -d rac -o open/mount/'read only' --启动到打开、挂载、只读模式
启停Oracle RAC集群这个操作会停止数据库,并停止rac其他所有的集群服务(如asm实例、vip、监听以及rac高可用环境):
[root@rac01 ~]$ crsctl start cluster -all --启动
[root@rac01 ~]$ crsctl stop cluster -all --停止增加swap分区大小[root@rac02 grid]# free -m
total used free shared buff/cache available
Mem: 11757 136 5078 8 6542 11539
Swap: 6015 0 6015
[root@rac02 grid]# mkdir /swap
[root@rac02 grid]# dd if=/dev/zero of=/swap/swap bs=1024 count=6291456 #一个block是1k,6291456就是6G
6291456+0 records in
6291456+0 records out
6442450944 bytes (6.4 GB) copied, 8.93982 s, 721 MB/s
[root@rac02 grid]# /sbin/mkswap /swap/swap
Setting up swapspace version 1, size = 6291452 KiB
no label, UUID=35c98431-eb56-4ad7-99cd-d3414cce75ca
[root@rac02 grid]# /sbin/swapon /swap/swap
swapon: /swap/swap: insecure permissions 0644, 0600 suggested.
[root@rac02 grid]# free -m
total used free shared buff/cache available
Mem: 11757 141 5074 8 6542 11534
Swap: 12159 0 12159
本文用到的相关shell脚本和数据库配置文件可以通过访问我的GitHub仓库下载。
参考资料:
https://docs.oracle.com/database/121/RILIN/toc.htmhttp://www.oracle.com/technetwork/database/clustering/tech-generic-linux-new-086754.htmlhttps://www.fatihacar.com/blog/oracle-12c-r2-12-2-0-1-rac-installation-steps-on-oracle-linux-7-3/http://blog.51cto.com/ld0381/1923207