超详细的centos7安装oracle19c RAC

oracle vm virtualbox centos7 安装oracle 19c RAC

来公司几个星期了,因为之前在学校学的是开发,所以运维对于我来说上手比较难,在安装oracle19c时,与之前安装数据库完全不是一个概念,之前安装一个软件步骤特别简单,然而现在每一步都涉及到很多知识,在此过程中遇到了各种各样的错误,N次百度,N次请求导师帮助,下面是我在本次安装的步骤及遇到的错误。 希望能让大家在安装过程中少犯错误。

一、环境准备

网上都有下载链接,很简单。

  1. oracle vm virtualbox
  2. centos7镜像下载 阿里云免费镜像下载地址https://developer.aliyun.com/
  3. 创建两台虚拟机节点 注意:在安装节点的时候把GUI图像化选上,后面就不需要安装了。
  4. 配置3个网卡:仅主机host-only网络 内部网络 网络转换地址nat
  5. xshell 终端模拟软件/putty 自由选择

二、检查安装环境

1、检查centos7版本信息

在安装完oracle vm virtualbox 并且创建节点以后,我们进入centos7 core 查看环境是否搭建好。

[root@rac19c1 ~]#  cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

2、配置静态ip

因为后面我们需要使用到xshell,所以我们可以先配置静态ip,后面的操作在xshell上完成会比较方便。

1.更改ifcfg-enp0s3名为ifcfg-eth0

[root@rac19c1 ~]#cd /etc/sysconfig/network-scripts/

[root@rac19c1 ~]# mv   ifcfg-enp0s3 ifcfg-eth0

注意: 尽量修改为ifcfg-eth0,规范规范规范。

2.开始配置静态Ip

用vim或者vi 打开eth0的文件 修改内容如下

vim /etc/sysconfig/network-scripts/
    
BOOTPROTO=static #启用静态IP地址

IPADDR=192.168.197.138 #设置IP地址

NETMASK=255.255.255.0 #设置子网掩码

ONBOOT="yes" #设置网卡自启动

超详细的centos7安装oracle19c RAC_第1张图片

3、禁用自动命名网卡

编辑/etc/default/grub

在变量GRUB_CMDLINE_LINUX后面加入“net.ifnames=0 biosdevname=0 ”来实现的。参数间以空格来间隔

在这里插入图片描述

4、重启

重启之前运行命令grub2-mkconfig -o /boot/grub2/grub.cfg 来重新生成GRUB配置并更新内核参数。

5、终端xshell连接虚拟机节点 一(上面配置的静态ip)

打开xshell 通过ssh + 你配置的Ip连接。

三、配置网卡信息

1、配置网卡一(host-only网卡)的静态ip

修改一下信息。

超详细的centos7安装oracle19c RAC_第2张图片

2、配置网卡二心跳Ip

心跳ip的配置是我的网卡2(内部网络)上配置的

[root@rac19c1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

超详细的centos7安装oracle19c RAC_第3张图片

注意1:心跳ip一定要在安装grid之前配置完成,可以Ping 连接上,不然会出错。

如图:

超详细的centos7安装oracle19c RAC_第4张图片

注意2:配置完两个节点的public IP 和心跳ip以后 ,需要能够在节点一 通过ssh +节点二的ip 输入密码后切换到节点二(节点二也一样)

如 :

ssh rac19c2

3、配置hosts文件

[root@rac19c1 ~]# vim  /etc/hosts

进入配置文件以后,需要配置public IP 、 private IP 、vip 、 scan IP 两个节点都需要配置。

#public
192.168.56.103 rac19c1
192.168.56.105 rac19c2
#vip
192.168.56.106 rac19c1-vip
192.168.56.107 rac19c2-vip
#private ip 
10.0.3.10  rac19c1-prv
10.0.3.11  rac19c2-prv
#scan ip 
192.168.56.100  scan

4、配置主机名

通过 hostnamectl set-hostname 新名字

5、禁用Transparent HugePages(oracle官方要求)

Transparent HugePages是在运行时动态分配内存的,而标准的HugePages是在系统启动时预先分配内存,并在系统运行时不再改变。

因为Transparent HugePages是在运行时动态分配内存的,所以会带来在运行时内存分配延误。所以ORACLE是建议不使用Transparent HugePages功能的,如果需要大页内存管理功能来加强性能,建议使用标准的大页内存管理。

root@rac19c1 network-scripts# cat /sys/kernel/mm/transparent_hugepage/defrag

[always] madvise never

root@rac19c1 network-scripts# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

这个状态就说明都是启用的。

 

编辑rc.local文件:

root@rac19c1 ~# *vi /etc/rc.d/rc.local*

增加下列内容:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

 echo never > /sys/kernel/mm/transparent_hugepage/enabled

 fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

 echo never > /sys/kernel/mm/transparent_hugepage/defrag

 fi

修改权限

root@rac19c1 rc.d# chmod 775 rc.local

四、服务器的基本配置

4.1、检查物理内存

尽量大一些用于Oracle Grid Infrastructure安装的至少8 GB RAM。

[root@rac19c1 ~]# grep MemTotal /proc/meminfo
MemTotal: 6109652 kB

4.2、检查swap空间

在4G到16G之间,可以oracle vm virtualbox 创建节点的时候把swap空间分配了。

[root@rac19c1 ~]# grep SwapTotal /proc/meminfo
SwapTotal:      12582908 kB

也可以通过命令的方式创建swap空间

1.查看swap空间的大小

free -m

在这里插入图片描述

2.创建swap文件,并生效
dd if=/dev/zero of=/swapfile bs=2M count=2048
bs × count=你需要扩大的空间
/dev/zero of  路径
3.设置交换分区文件
mkswap /swapfile
4.启用交换分区文件
swapon /swapfile

注意:这个命令可能会提示*swapon: /swapfile: insecure permissions 0644, 0600 suggested.”*意思是建议把swap设置成644或600权限。

5.在 /etc/fstab中添加如下一行,使之永久生效
/swapfile swap swap defaults 0 0
6.修改swapiness 参数

在 Linux 系统中,可以通过查看 /proc/sys/vm/swappiness 内容的值来确定系统对 SWAP 分区的使用原则。当 swappiness 内容的值为 0 时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用 SWAP 分区。当 swappiness 内容的值为 100 时,表示积极地使用 SWAP 分区,并且把内存中的数据及时地置换到 SWAP 分区。
查看修改前为 0,需要在物理内存使用完毕后才会使用 SWAP 分区。
可以使用下述方法临时修改此参数,假设我们配置为空闲内存少于 10% 时才使用 SWAP 分区:

echo 10 >/proc/sys/vm/swappiness

若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf 文件,并增加以下内容:

vm.swappiness=10

关闭SWAP

当系统出现内存不足的时候,一致开启SWAP可能会因频繁换页操作,导致IO性能下降,如果要关闭SWAP,可以采用如下方法

1、free -m 查询SWAP分区设置

2、使用命令swapoff关闭SWAP,比如:

swapoff /mnt/swap

3、修改 /etc/fstab 文件,删除或注释相关配置,取消 SWAP 的自动挂载:

4、 通过 free -m 确认 SWAP 已经关闭。

5、 swappiness 参数调整:
可以使用下述方法临时修改此参数,这里配置为 0%:
echo 0 >/proc/sys/vm/swappiness
若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf文件,并增加以下内容:
vm.swappiness=0

4.3、检查临时磁盘空间(/tmp)大小

临时空间/tmp 可以在创建节点的时候进行分配 建议60G左右

df -h /tmp

[root@rac19c1 ~]# df -h /tmp
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   60G   21G   40G  35% /

4.4、检查共享内存段(/dev/shm/)

共享内存段:在配置节点的时候对/boot 进行空间分配 建议2G

df -h /dev/shm/

[root@rac19c1 ~]# df -h /dev/shm/
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           2.0G  897M  1.2G  44% /dev/shm

如果需要永久修改/dev/shm的值,需要修改/etc/fstab

tmpfs /dev/shm tmpfs defaults,size=2G 0 0

[root@raca /]# mount -o remount /dev/shm

4.5、关闭防火墙

禁用开机自启防火墙

[root@rac19c1 /]# systemctl disable firewalld

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

[root@raca /]# systemctl is-enabled firewalld

Disabled

停止防火墙

[root@rac19c1 /]# systemctl stop firewalld

[root@rac19c1 /]# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon

  Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

  Active: inactive (dead)

   Docs: man:firewalld(1)

 

926 17:14:59 raca systemd[1]: Starting firewalld - dynamic firewall daemon...

926 17:14:59 raca systemd[1]: Started firewalld - dynamic firewall daemon.

926 17:55:32 raca systemd[1]: Stopping firewalld - dynamic firewall daemon...

926 17:55:35 raca systemd[1]: Stopped firewalld - dynamic firewall daemon.

4.6、关闭selinux

在后面创建ASM共享磁盘的时候也需要关闭selinux 所以现在关闭。

1.编辑 /etc/selinux/config 文件把SELINUX=enforcing改成disabled

2.或者直接使用命令

[root@rac19c1 ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

查看当前selinux状态

[root@rac19c1 ~]# getenforce

Enforcing

4.7 配置网络yum 或者网络yum(可不做,centos有默认官方源)

4.7.1、挂载本地yum

1、创建iso挂载路径

[root@rac19c1 ~]# mkdir /mnt/cdrom

2、挂载iso

[root@rac19c1 ~]# mount  /root/ CentOS-7-x86_64-DVD-2009.iso  /mnt/cdrom

3、创建server.repo

[root@rac19c1 cdrom]# cd /etc/yum.repos.d/ 

[root@rac19c1 yum.repos.d]# vi server.repo

[server]

name=Red Hat Enterprise Linux

baseurl=file:///mnt/cdrom

enabled=1

gpgcheck=0
4.7.2、挂载网络yum
vi /etc/yum.repos.d/CentOS-Base.repo

修改为以下内容 

[base]

name= yum repo

baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/

enabled=1

gpgcheck=0

注意: 清理yum 可以使用yum clean命令。

注意:上传本地文件到虚拟机中有几种方法

第一种:rz 命令

1.安装rz和sz

yum install -y lrzsz

2.使用rz进行文件上传

敲入rz命令就会出现上传的窗口选择需要上传的文件即可
超详细的centos7安装oracle19c RAC_第5张图片

3.下载命令sz

sz + 文件名

第二种

直接在xshell 软件找到新建文件传输进行上传 相比来说第二种要快一些。

在这里插入图片描述

第三种

在虚拟机上创建共享文件夹即可共享本地文件夹
超详细的centos7安装oracle19c RAC_第6张图片

超详细的centos7安装oracle19c RAC_第7张图片

4.8、临时解决中文乱码

如果安装中文,由于oracle安装向导无法识别中文字体,终端临时设置语言环境变量

export LANG=en_US

export LC_ALL=en_US

4.9、安装图形化桌面

安装X窗口系统

[root@rac19c1 ~]# yum groupinstall "X Window System"

检查一下我们已经安装的软件以及可以安装的软件

[root@rac19c1 ~]# yum grouplist

安装图形界面软件 GNOME

[root@rac19c1 ~]# yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

如果想要使系统启动即为图形化窗口,需要执行下面的命令

[root@rac19c1 ~]# ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

重启

注意: 建议在用oracle vm virtualbox 安装节点的时候选择GUI安装,因为一般不会出现错误。

五、配置ASM共享磁盘

1.打开虚拟机, 找到虚拟介质管理

超详细的centos7安装oracle19c RAC_第8张图片

2.创建新的vdi

超详细的centos7安装oracle19c RAC_第9张图片

超详细的centos7安装oracle19c RAC_第10张图片

3.选择固定大小,点击下一步。

超详细的centos7安装oracle19c RAC_第11张图片

4.选择保存到的文件夹及空间选择

超详细的centos7安装oracle19c RAC_第12张图片

5.点击创建 , 然后把类型改为可共享

在这里插入图片描述

6.分别加入到节点一和节点二

超详细的centos7安装oracle19c RAC_第13张图片

7.下载安装oracleasm-support驱动包

下载连接:https://www.oracle.com/linux/downloads/linux-asmlib-rhel7-downloads.html

8.为RAC分配共享磁盘

打开节点一或者节点二虚拟机都可以,用xshell工具连接虚拟机,如下图sda1-sda3为安装操作系统时所建立的分区。sdb-sdf为虚拟机创建的共享磁盘组

我的这个是已经配置好的,所以多出了/sdb1 /sdc1 sdd1 /sde1 /sdf1

[root@rac19c1 ~]#  ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1  /dev/sdd  /dev/sdd1  /dev/sde  /dev/sde1  /dev/sdf  /dev/sdf1

9.创建主分区

为所创建的每一个共享磁盘组创建一个主分区。(每一磁盘都应该遵照如下命令操作)

[root@rac19c1-priv ~]# fdisk  /dev/sdb

Device contains neither a valid DOS partition table,nor Sun,SGI or OSF disk label Building a new DOS label.Change will remain in memory only,util you decide to write them...

Command (m for help):n

Command action

  e  extended

  p  primary partition(1-4)

  p

Partition number(1-4):1

First cylinder (1-1305,default 1):

…

Last cylinder or +size or +sizeM or +sizeK(1-1305,default 1305):Command(m for help):p

…

Command (m for help):w

The partition table has been altered!

…

Syncing disks.

10.再次查看就磁盘分区

[root@rac19c1 ~]#  ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdc  /dev/sdc1  /dev/sdd  /dev/sdd1  /dev/sde  /dev/sde1  /dev/sdf  /dev/sdf1

11.配置oracleasm

[root@rac19c1~]# oracleasm configure -i

Configuring the Oracle ASM library driver.

 

This will configure the on-boot properties of the Oracle ASM library

driver.  The following questions will determine whether the driver is

loaded on boot and what permissions it will have.  The current values

will be shown in brackets ('[]').  Hitting <ENTER> without typing an

answer will keep that current value.  Ctrl-C will abort.

 

Default user to own the driver interface [grid]: grid    //本名字跟后面安装grid的名字一样,否则会执行不了roo.sh脚本。

Default group to own the driver interface [dba]: dba

Start Oracle ASM library driver on boot (y/n) [y]: y

Scan for Oracle ASM disks on boot (y/n) [y]:

Writing Oracle ASM library driver configuration: done

12.初始化oracleasm

[root@rac19c1 ~]# /usr/sbin/oracleasm init

Loading module “oracleasm”:oracleasm

Mounting ASMlib driver filesystem:/dev/oracleasm

13.标记共享磁盘

[root@rac119c1 ~]# /usr/sbin/oracleasm createdisk diskb /dev/sdb1

Writing disk header: done

Instantiating disk: done

[root@rac119c1 ~]# /usr/sbin/oracleasm createdisk diskc /dev/sdc1

Writing disk header: done

Instantiating disk: done

[root@rac119c1 ~]# /usr/sbin/oracleasm createdisk diskd /dev/sdd1

Writing disk header: done

Instantiating disk: done

[root@rac119c1 ~]# /usr/sbin/oracleasm createdisk diske /dev/sde1

Writing disk header: done

Instantiating disk: done

[root@rac119c1 ~]# /usr/sbin/oracleasm createdisk diskf /dev/sde1

Writing disk header: done

Instantiating disk: done

14.刷新ASM磁盘配置

[root@rac119c1 ~]# /usr/sbin/oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

15.查看共享磁盘

[root@rac19c1 ~]#  /usr/sbin/oracleasm listdisks
DISKB
DISKC
DISKD
DISKE
DISKF

16.重启,并且将磁盘加入到节点二。

17.查看已挂载的磁盘

fdisk - l| grep dev
超详细的centos7安装oracle19c RAC_第14张图片

18.修改共享存储udev规则

在节点1和节点2,固定设备名称并且赋予grid属性,执行如下命令,用来生成udev规则

1 取得DM_UUID

for i in b c d e

do

echo "KERNEL==\"sd*\",SUBSYSTEM==\"block\",ENV{ID_SERIAL}==\"`/usr/lib/udev/scsi_id -g -u -d /dev/sd$i`\",SYMLINK+=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" 

done

得出以下信息

KERNEL=="sd*",SUBSYSTEM=="block",ENV{ID_SERIAL}=="14f504e46494c455267414f436e6e2d76384d312d316b7558",SYMLINK+="asm-diskb", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",ENV{ID_SERIAL}=="14f504e46494c4552657957564f782d624d55642d48354474",SYMLINK+="asm-diskc", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",ENV{ID_SERIAL}=="14f504e46494c4552594e4677496c2d413156592d6d6c5536",SYMLINK+="asm-diskd", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",ENV{ID_SERIAL}=="14f504e46494c4552485a617444642d446536762d4141304e",SYMLINK+="asm-diske", OWNER="grid", GROUP="asmadmin", MODE="0660"

执行

[root@rac19c1 ~]# /usr/bin/udevadm control --reload

[root@rac19c1 ~]# /usr/bin/udevadm trigger --type=devices --action=change

[root@rac19c1 ~]# ls -l /dev/asm*

超详细的centos7安装oracle19c RAC_第15张图片

六、装Oracle依赖包

1. rpm-qa |greb bc
2. yum install compat-libcap1 bc  binutils  compat-libcap1 compat-libstdc++-33 elfutils-libelf  elfutils-libelf-devel  fontconfig-devel  glibc  glibc-devel  ksh  libaio libaio-devel libX11
 libXau libXi libXtst libXrender libXrender-devel libgcc  libstdc++  libstdc++-devel  libxcb  make  smartmontools  sysstat net-  tools  nfs-utils openssh

在安装的时候有可能这两个包 gcc-c+±4.8.5-44.el7.x86_64.rpm libstdc+±devel-4.8.5-44.el7.x86_64.rpm安装不上,需要到网上下载。自己安装。

七、创建GRID和oracle安装目录及环境变量

1、添加GRID和oracle的组

/usr/sbin/groupadd -g 1001 oinstall

/usr/sbin/groupadd -g 1002 dba

/usr/sbin/groupadd -g 1003 oper

/usr/sbin/groupadd -g 1004 asmdba

/usr/sbin/groupadd -g 1005 asmoper

/usr/sbin/groupadd -g 1006 backupdba

/usr/sbin/groupadd -g 1007 dgdba

/usr/sbin/groupadd -g 1008 kmdba

/usr/sbin/groupadd -g 1009 racdba

/usr/sbin/groupadd –g 1010 asmadmin

添加GRID和oracle的用户

useradd -u 1001 -g oinstall -G asmdba,dba,oper,backupdba,dgdba,kmdba,racdba -d /home/oracle oracle

useradd -u 1002 -g oinstall -G dba,asmdba,asmadmin,racdba,asmoper -d /home/grid grid

修改密码

将oracle用户密码修改为oracle,将grid用户密码修改为grid

[root@rac1 ~] echo "oracle" | passwd --stdin oracle

[root@rac1 ~] echo "oracle" | passwd --stdin grid


2、创建GRID和oracle安装路径

mkdir -p /u01/app/19.0.0/grid

mkdir -p /u01/app/oraInventory

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

chmod -R 775 /u01/app/oraInventory

 mkdir -p /u01/app/grid

mkdir -p /u01/app/oracle

chown -R grid:oinstall /u01

chown oracle:oinstall /u01/app/oracle

chmod -R 775 /u01/

[root@rac19C1 home]# mkdir -p /u01/app/oracle/product/19.0.0/db_1

[root@rac19C1 home]# chown oracle:oinstall /u01/app/oracle/product/19.0.0/db_1

3、创建GRID和oracle的环境变量

节点1 grid

[oracle@rac19c1:/home/oracle]$su - grid
Password: 
Last login: Mon Sep 13 15:41:05 CST 2021
Last failed login: Mon Sep 13 15:46:54 CST 2021 on pts/1
There was 1 failed login attempt since the last successful login.
[grid@rac19c1:/home/grid]$vi  ~/.bash_profile

添加下面内容

PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
umask 022
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
ORACLE_SID=+ASM1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/19.0.0/grid; export ORACLE_HOME
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin; export PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
THREADS_FLAG=native; export THREADS_FLAG
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
              ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
      fi
    umask 022
fi

节点2 grid

[oracle@rac19c2:/home/oracle]$su - grid
Password: 
Last login: Mon Sep 13 17:24:45 CST 2021
Last failed login: Mon Sep 13 17:25:44 CST 2021 on pts/0
There was 1 failed login attempt since the last successful login.
[grid@rac19c2:/home/grid]$ vi  ~/.bash_profile

添加下面内容

PS1="[`whoami`@`hostname`:"'$PWD]$'

export PS1

umask 022

export TMP=/tmp

export LANG=en_US

export TMPDIR=$TMP

ORACLE_SID=+ASM2; export ORACLE_SID

ORACLE_TERM=xterm; export ORACLE_TERM

ORACLE_BASE=/u01/app/grid; export ORACLE_BASE

ORACLE_HOME=/u01/app/19.0.0/grid; export ORACLE_HOME

NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT

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

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

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

THREADS_FLAG=native; export THREADS_FLAG

if [ $USER = "oracle" ] || [ $USER = "grid" ]; then

​    if [ $SHELL = "/bin/ksh" ]; then

​      ulimit -p 16384

​       ulimit -n 65536

 else

  ulimit -u 16384 -n 65536

   fi

  umask 022

fi

节点1 oracle

[root@rac19c1 ~]# su - oracle
Last login: Mon Sep 13 10:52:07 CST 2021
[oracle@rac19c1:/home/oracle]$vi ~/.bash_profile

添加下面内容

PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
PATH=.:$PATH:$HOME/bin:$ORACLE_BASE/product/19.0.0/db_1/bin:$ORACLE_HOME/bin; export PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
THREADS_FLAG=native; export THREADS_FLAG
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
              ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
      fi
    umask 022
fi

节点2 oracle

[root@rac19c2 ~]# su - oracle
Last login: Mon Sep 13 01:49:50 CST 2021 on pts/0
[oracle@rac19c2:/home/oracle]$vi ~/.bash_profile

添加下面内容

PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl2; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
PATH=.:$PATH:$HOME/bin:$ORACLE_BASE/product/19.0.0/db_1/bin:$ORACLE_HOME/bin; export PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
THREADS_FLAG=native; export THREADS_FLAG
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
            ulimit -p 16384
              ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
      fi
    umask 022
      fi 

修改root环境变量

加入grid用户$ORACLE_HOME

[root@rac19c1 ~]# vi ~/.bash_profile

 PATH=$PATH:/u01/app/19.0.0/grid/bin:$HOME/bin

超详细的centos7安装oracle19c RAC_第16张图片

4、修改sysctl.conf参数

解释:/etc/sysctl.conf是一个允许改变正在运行中的Linux系统的接口,它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。也就是说/proc/sys下内核文件与配置文件sysctl.conf中变量存在着对应关系。

[grid@rac19c1:/home/grid]$su - root
Password: 
Last login: Mon Sep 13 15:39:20 CST 2021 on pts/1
Last failed login: Mon Sep 13 15:51:20 CST 2021 on pts/1
There was 1 failed login attempt since the last successful login.
[root@rac19c1 ~]# vi /etc/sysctl.conf
添加以下参数
fs.aio-max-nr = 1048576
fs.file-max = 6815744         #这个参数表示进程可以同时打开的最大句柄数,这个参数直接限制最大并发连接数。
kernel.shmmax = 15461882265
kernel.shmall = 3774873
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     #rmem_max:这个参数表示内核套接字接收缓存区默认的最大大小。
net.core.wmem_default = 262144  #wmem_default:这个参数表示内核套接字发送缓存区默认的大小。
net.core.wmem_max = 1048586     #wmem_max:这个参数表示内核套接字发送缓存区默认的最大大小。
  

5、修改20-nproc.conf

解释:查看修改Linux最大进程数和最大文件数的方法

修改/etc/security/limits.d/20-nproc.conf
[root@rac19c1 ~]vi /etc/security/limits.d/20-nproc.conf
# Change this
#注释这行*          soft    nproc    1024
# To this增加下面一行
* - nproc 16384

6、修改limits.conf

解释:limits.conf用于实现对用户资源进行限制,如进程数/文件数等等。

文件存放在目录:/etc/security/limits.conf

[root@rac19c1 ~]vi /etc/security/limits.conf
#ORACLE SETTING
grid  soft  nproc 16384
grid  hard  nproc 16384
grid  soft  nofile 1024
grid  hard  nofile 65536
grid  soft  stack 10240
grid  hard  stack 32768
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack  10240
oracle hard stack  32768
oracle hard memlock 3145728
oracle soft memlock 3145728

7、修改/etc/pam.d/login文件

解释:etc目录下包括pam.d目录,在pam.d目录下还有个login子目录。etc指的系统配置文件目录,pam.d指的是验证登陆配置,login是登陆配置文件。

简单说就是linux操作系统的登陆配置文件。

[root@rac19c1 ~]vi /etc/pam.d/login

#ORACLE SETTING

session   required   pam_limits.so

8、停止avahi-daemon服务

解释:avahi-daemon是一种Linux操作系统上运行在客户机上实施查找基于网络的Zeroconf service的服务守护进程。 该服务可以为Zeroconf网络实现DNS服务发现及DNS组播规范。 用户程序通过Linux D-Bus信息传递接收发现到网络服务和资源的通知。 该守护进程配合缓存用户程序的答复,以帮助减少因答复而产生的网络流量。

两个节点分别操作

查看进程 ps –ef |grep avahi-daemon

停止服务 systemct stop avahi-daemon

systemctl disable avahi-daemon.socket

systemctl disable avahi-daemon.service

9、添加NOZEROCONF=yes参数

解释: Zero Configuration Network (ZEROCONF)。ZEROCONF又被叫做 IPv4 Link-Local (IPv4LL)和 Automatic Private IP Addressing (APIPA)。它是一个动态配置协议,系统可以通过它来连接到网络。 那有没有办法禁用ZEROCONF呢?

可以通过在 “/etc/sysconfig/network” 文件中增加一行“NOZEROCONF=yes”来达到这个目的。
其实,给 NOZEROCONF 赋任意值都是同样的效果,从上面的代码就可以看出,它只检测 NOZEROCONF 是否为空。
当然,修改完 “/etc/sysconfig/network” 之后,必须重启网络才能生效:/etc/init.d/network restart

[root@rac19c1]# vi /etc/sysconfig/network

NOZEROCONF=yes

八、安装GRID

1、上传集群软件包

在节点1上传grid, oracle安装包

cd /home/gg
超详细的centos7安装oracle19c RAC_第17张图片
解压搭配grid 配置环境变量时指定的路径

unzip  LINUX.X64_193000_db_home.zip -d /u01/app/19.0.0/grid/ 

2、互信配置

注意: 在进行互信配置的时候不能在root用户下进行配置,因为在root用户下配置始终是需要输入密码的。

grid 用户配置

[grid@rac19c1 scripts]# /home/gg/oui/prov/resources/scripts/sshUserSetup.sh -user grid -hosts "rac19c1 rac19c2" -advanced –noPromptPassphrase

oracle 用户配置

[oracle@rac19c1 scripts]# /home/gg/oui/prov/resources/scripts/sshUserSetup.sh -user oracle -hosts "rac19c1 rac19c2" -advanced –noPromptPassphrase

3、执行脚本gridSetup.sh

进入到/u01/app/19.0.0/grid/执行脚本 ./gridSetup.sh
在这里插入图片描述
注意:第一次执行一般会出现两个错误,一个是需要我们在grid 用户下执行脚本,第二个是需要我们配置图形显示 环境变量设置 。

如:export DISPLAY=10.54.18.202:0.0 查看电脑的ip地址 加上:0.0

如果解压的时候是在root用户上进行解压的话,可以通过命令chown -R grid:oinstall /u01/app/19.0.0/grid/ 更改权限。
在这里插入图片描述
4、开始安装grid

1.创建新的集群
超详细的centos7安装oracle19c RAC_第18张图片
超详细的centos7安装oracle19c RAC_第19张图片

2.配置集群名称以及scan名称

注意:scan name必须和 /etc/hosts里面scan的名字一样,cluster name 可以默认不改

超详细的centos7安装oracle19c RAC_第20张图片

4.配置节点互信

配置节点互信的时候,要保证心跳ip能互相ping得通,否则后期安装很容易出现异常。

除了默认节点一的pubic 和vip 的名字外 需要把节点一的也添加上去。

超详细的centos7安装oracle19c RAC_第21张图片
超详细的centos7安装oracle19c RAC_第22张图片

注意:

常见错误:

点击test /setup 不成功

解决方法:

按住ctrl 选中两个节点测试或者 /setup ,或者是因为密码输入不正确,输入正确密码即可。

5.公网私网段选择

超详细的centos7安装oracle19c RAC_第23张图片

6、选择asm存储

超详细的centos7安装oracle19c RAC_第24张图片

7、选择配置GIMR

超详细的centos7安装oracle19c RAC_第25张图片

8、选择asm磁盘组

超详细的centos7安装oracle19c RAC_第26张图片

9、创建sys和asm密码超详细的centos7安装oracle19c RAC_第27张图片

10、默认

超详细的centos7安装oracle19c RAC_第28张图片
超详细的centos7安装oracle19c RAC_第29张图片
超详细的centos7安装oracle19c RAC_第30张图片

11、确认gird base目录

一定要和grid的配置文件里面的路径相同

超详细的centos7安装oracle19c RAC_第31张图片

12、保持默认

超详细的centos7安装oracle19c RAC_第32张图片

13、这里可以自动执行root脚本,不自动执行,不选。

超详细的centos7安装oracle19c RAC_第33张图片

14、检测到没有gcc-c++,装下,其他不管。选择ignore all

超详细的centos7安装oracle19c RAC_第34张图片

15、安装前摘要

超详细的centos7安装oracle19c RAC_第35张图片

16、执行脚本

当提示框弹出来的时候,我们先在节点一上使用root用户执行脚本,执行完成执行节点二的脚本。

执行过程中,会遇到各种各样的问题,1。ASM磁盘的名字不对 2.和节点二的互信不同

解决: 重新配置ASM将宿主名字改为grid,即可完成;重新配置心跳IP

超详细的centos7安装oracle19c RAC_第36张图片

执行脚本如下;

[root@raca home]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@raca home]# /u01/app/19.0.0/grid/root.sh
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /u01/app/19.0.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Relinking oracle with rac_on option

Using configuration parameter file: /u01/app/19.0.0/grid/crs/install/crsconfig_params
The log of current session can be found at:
  /u01/app/grid/crsdata/raca/crsconfig/rootcrs_raca_2020-10-01_05-20-45AM.log
2020/10/01 05:20:56 CLSRSC-594: Executing installation step 1 of 19: 'SetupTFA'.
2020/10/01 05:20:57 CLSRSC-594: Executing installation step 2 of 19: 'ValidateEnv'.


2020/10/01 05:20:57 CLSRSC-363: User ignored prerequisites during installation
2020/10/01 05:20:57 CLSRSC-594: Executing installation step 3 of 19: 'CheckFirstNode'.
2020/10/01 05:20:59 CLSRSC-594: Executing installation step 4 of 19: 'GenSiteGUIDs'.
2020/10/01 05:21:00 CLSRSC-594: Executing installation step 5 of 19: 'SetupOSD'.
2020/10/01 05:21:00 CLSRSC-594: Executing installation step 6 of 19: 'CheckCRSConfig'.
2020/10/01 05:21:00 CLSRSC-594: Executing installation step 7 of 19: 'SetupLocalGPNP'.
2020/10/01 05:21:29 CLSRSC-594: Executing installation step 8 of 19: 'CreateRootCert'.
2020/10/01 05:21:35 CLSRSC-594: Executing installation step 9 of 19: 'ConfigOLR'.
2020/10/01 05:21:37 CLSRSC-4002: Successfully installed Oracle Trace File Analyzer (TFA) Collector.
2020/10/01 05:21:46 CLSRSC-594: Executing installation step 10 of 19: 'ConfigCHMOS'.
2020/10/01 05:21:46 CLSRSC-594: Executing installation step 11 of 19: 'CreateOHASD'.
2020/10/01 05:21:51 CLSRSC-594: Executing installation step 12 of 19: 'ConfigOHASD'.
2020/10/01 05:21:51 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service'
2020/10/01 05:22:14 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'.
2020/10/01 05:22:19 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'.
2020/10/01 05:22:24 CLSRSC-594: Executing installation step 15 of 19: 'InstallKA'.
2020/10/01 05:22:28 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'.

已成功创建并启动 ASM[DBT-30001] 已成功创建磁盘组。有关详细信息, 请查看 /u01/app/grid/cfgtoollogs/asmca/asmca-201001上午052301.log。

2020/10/01 05:24:15 CLSRSC-482: Running command: '/u01/app/19.0.0/grid/bin/ocrconfig -upgrade grid oinstall'
CRS-4256: Updating the profile

Successful addition of voting disk c48689c860fd4fa2bfe4fcfcbdae0c38.
Successful addition of voting disk bbdd94ae3dd14f26bf0d1abfa2767f1d.
Successful addition of voting disk 5a17bd17e9dd4f73bf0e78f7fb28d71c.
Successfully replaced voting disk group with +crs_gimr.
CRS-4256: Updating the profile
CRS-4266: Voting file(s) successfully replaced
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   c48689c860fd4fa2bfe4fcfcbdae0c38 (/dev/asm-diskb) [CRS_GIMR]
 2. ONLINE   bbdd94ae3dd14f26bf0d1abfa2767f1d (/dev/asm-diskc) [CRS_GIMR]
 3. ONLINE   5a17bd17e9dd4f73bf0e78f7fb28d71c (/dev/asm-diskd) [CRS_GIMR]
Located 3 voting disk(s).
2020/10/01 05:25:47 CLSRSC-594: Executing installation step 17 of 19: 'StartCluster'.
2020/10/01 05:27:18 CLSRSC-343: Successfully started Oracle Clusterware stack
2020/10/01 05:27:18 CLSRSC-594: Executing installation step 18 of 19: 'ConfigNode'.
2020/10/01 05:28:50 CLSRSC-594: Executing installation step 19 of 19: 'PostConfig'.
2020/10/01 05:29:22 CLSRSC-325: Configure Oracle Grid Infrastructure for a Cluster ... succeeded

17、安装完成

超详细的centos7安装oracle19c RAC_第37张图片

九、安装数据库软件

1、找到数据库安装包,解压

在这里插入图片描述
解压到

unzip   LINUX.X64_193000_db_home.zip  -d /u01/app/oracle/product/19.0.0/db_1

解压完成,进入

cd  /u01/app/oracle/product/19.0.0/db_1

目录执行 ./runInstaller

注意:第一次执行一般会出现两个错误,一个是需要我们在grid 用户下执行脚本,第二个是需要我们配置图形显示 环境变量设置 。

如:export DISPLAY=10.54.18.202:0.0 查看电脑的ip地址 加上:0.0

如果解压的时候是在root用户上进行解压的话,

可以通过命令

chown -R grid:oinstall /u01/app/oracle/product/19.0.0/db_1 更改权限。

2、选择software only

超详细的centos7安装oracle19c RAC_第38张图片

3、选择RAC

超详细的centos7安装oracle19c RAC_第39张图片

4、ssh互信验证

超详细的centos7安装oracle19c RAC_第40张图片

5、保持默认

超详细的centos7安装oracle19c RAC_第41张图片

6、保持默认

超详细的centos7安装oracle19c RAC_第42张图片

7、保持默认

超详细的centos7安装oracle19c RAC_第43张图片

8、不选

超详细的centos7安装oracle19c RAC_第44张图片

9、检查忽略

超详细的centos7安装oracle19c RAC_第45张图片

10、安装

超详细的centos7安装oracle19c RAC_第46张图片

超详细的centos7安装oracle19c RAC_第47张图片

11、root下执行脚本

这里根据提示来进行具体是哪一个节点来执行脚本。

超详细的centos7安装oracle19c RAC_第48张图片

12、database安装完成

超详细的centos7安装oracle19c RAC_第49张图片

十、DBCA创建实例

1、asm创建+data

执行之前同上一样,需要配置图像化界面变量,以及赋予权限。

[grid@rac19c1:/home/grid]$ asmca

超详细的centos7安装oracle19c RAC_第50张图片

2、点击Create

​ 点击Create ,找到ASM共享磁盘的路径,完成创建。

超详细的centos7安装oracle19c RAC_第51张图片
超详细的centos7安装oracle19c RAC_第52张图片

十一、图形化安装实例

[oracle@rac19c1 db_1]$ dbca

创建数据库

超详细的centos7安装oracle19c RAC_第53张图片

超详细的centos7安装oracle19c RAC_第54张图片

在这里插入图片描述

超详细的centos7安装oracle19c RAC_第55张图片

这里的名字必须跟oracle vim ~/.bash_profile 一样
超详细的centos7安装oracle19c RAC_第56张图片

在这里插入图片描述

超详细的centos7安装oracle19c RAC_第57张图片

超详细的centos7安装oracle19c RAC_第58张图片

超详细的centos7安装oracle19c RAC_第59张图片
配置写内存:尽量选择默认的 不要自己去调整。调整可能会使后面的安装不成功。
超详细的centos7安装oracle19c RAC_第60张图片
集群验证
超详细的centos7安装oracle19c RAC_第61张图片

配置数据库密码

超详细的centos7安装oracle19c RAC_第62张图片
进入自定义配置,选择默认,不选,下一步。

超详细的centos7安装oracle19c RAC_第63张图片
校验时也是之前的dns和scan ip错误,可以忽略,进行下一步安装超详细的centos7安装oracle19c RAC_第64张图片
超详细的centos7安装oracle19c RAC_第65张图片
安装数据库需要一般20多分钟,我的用了半小时。跟据自己的电脑性能有关系
超详细的centos7安装oracle19c RAC_第66张图片
超详细的centos7安装oracle19c RAC_第67张图片

[grid@rac19c1:/u01/app/19.0.0/grid/bin]$crsctl stat res -t

查看数据库是否创建成功
超详细的centos7安装oracle19c RAC_第68张图片
Dbca删库
超详细的centos7安装oracle19c RAC_第69张图片
超详细的centos7安装oracle19c RAC_第70张图片
超详细的centos7安装oracle19c RAC_第71张图片
超详细的centos7安装oracle19c RAC_第72张图片
超详细的centos7安装oracle19c RAC_第73张图片
所有的安装已经完成。现在可以通过sqlplus /as sysdba
查看数据库的版本。

你可能感兴趣的:(Oracle,linux,运维,centos,oracle,os)