暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle 12c RAC安装 这一篇就够了

原创 Jeffy 2022-01-15
9212

本文为本人项目实站内容,尽量从原理和实现角度,将Oracle RAC 安装讲解清楚,并能直接用于生产环境搭建。 

本文搭建采用静默安装,操作系统不需要安装图像界面。本人在虚拟机上面安装过程2个小时之内完成。

本文用到的相关shell脚本和数据库配置文件可以通过访问我的GitHub仓库下载

Oracle 12c 两节点RAC部署示意图


基于此图可以清晰了解Oracle RAC的部署要求,特别是网络和共享存储。这是生产环境推荐的部署方式。


下面开始进入实站环节,整个安装分为4大块:

  1. Oracle 安装规划
  2. 服务器准备
  3. 基础环境配置
  4. Oracle安装配置
  5. 附录常用命令


第一部分、Oracle安装规划


集群环境规划

数据库版本:Oracle 12c R2

此部分对于集群安装成功与否至关重要,规划做好了后面配置就简单


1. SWAP规划

RAMSWAP Space
1-2GB1.5 times the size of RAM
2-16GBEqual to the size of RAM
>16GB20GB

2.服务器规划

系统

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_001OCRDISK01OCR
2/dev/sdb20GVirtualizationSTOR3fc_OCR_002OCRDISK02OCR
3/dev/sdc20GVirtualizationSTOR3fc_OCR_003OCRDISK03OCR
闪回区
1/dev/sdd40GVirtualizationSTOR3fc_FRA_001FRADISK01FRA
数据区
1/dev/sde100GVirtualizationSTOR3fc_DATA_001DATADISK001DATA


6.操作系统用户和组

用户名用户ID用户组组ID密码
oracle1000oinstall1000oracle123
dba1001
asmdba1011
oper1002
backupdba1013
dgdba1014
kmdba1015
racdba1016
grid1001oinstall1000grid123
asmadmin1010
asmdba1011
asmoper1012
oper1002

7.Oracle RAC环境变量规划

hostname用户环境变量路径
rac1oracleORACLE_BASE/u01/app/oracle
oracleORACLE_HOME$ORACLE_BASE/product/12.2.0.1/db
oracleORACLE_SIDrac1
gridORACLE_BASE/u01/app/grid
gridORACLE_HOME/u01/app/12.2.0/grid
gridORACLE_SID+ASM1
rac2oracleORACLE_BASE/u01/app/oracle
oracleORACLE_HOME$ORACLE_BASE/product/12.2.0.1/db
oracleORACLE_SIDrac2
gridORACLE_BASE/u01/app/grid
gridORACLE_HOME/u01/app/12.2.0/grid
gridORACLE_SID+ASM2

8.安装路径规划

/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:/tmp

rac2

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.htm
http://www.oracle.com/technetwork/database/clustering/tech-generic-linux-new-086754.html
https://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

最后修改时间:2022-01-15 00:09:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论