Oracle RAC 集群的安装(保姆级教程)

文章目录

  • 一、安装前的规划
    • 1、系统规划
    • 2、网络规划
    • 3、存储规划
  • 二、主机配置
    • 1、Linux主机安装(rac01&rac02)
    • 2、配置yum源并安装依赖包(rac01&rac02)
    • 3、网络配置(rac01&rac02)
    • 4、存储配置(rac01&rac02)
      • rac01添加硬盘的方式:
      • rac02添加硬盘的方式:
      • 开启共享文件
      • 修改虚拟机配置文件
      • 安装 `multipath` 绑定多路径:
      • 配置UDEV绑盘:
    • 5、hosts文件配置(rac01&rac02)
    • 6、防火墙配置(rac01&rac02)
    • 7、selinux 配置(rac01&rac02)
    • 8、时间同步配置(rac01&rac02)
    • 9、关闭透明大页和NUMA(rac01&rac02)
    • 10、avahi-daemon 配置(rac01&rac02)
    • 11、系统参数配置(rac01&rac02)
    • 12、系统资源限制配置(rac01&rac02)
    • 13、用户及组、目录创建(rac01&rac02)
    • 14 环境变量配置(rac01&rac02)
    • 15、安装介质上传解压(rac01)
  • 三、安装Grid软件(rac01)
  • 四、创建 ASM 数据盘 DATA
  • 五、安装Oracle软件
  • 六、创建数据库实例
  • 七、数据库优化配置(rac01)

在这里插入图片描述

一、安装前的规划

1、系统规划

安装RAC前,需要提前做好规划方便后序开展
在这里插入图片描述

其中public ip是你主机的ip,private是随便设置的ip(只要不给别的有ip冲突就行),vip也是自己设置的ip,SCAN是对外的端口ip,也是自己设置的

2、网络规划

Public IP(公司内部访问,非外网)

192.168.229.143 p19c01
192.168.229.144 p19c02

Private IP(用于节点间心跳网络)

1.1.1.1 p19c01-priv
1.1.1.2 p19c02-priv

Virtual IP(提供客户端访问,漂移)

192.168.229.145 p19c01-vip
192.168.229.146 p19c02-vip

SCAN IP(提供客户端访问,均衡)

192.168.229.147 p19c-scan

3、存储规划

Oracle RAC 使用 ASM 存储来存放数据,通常使用 OCR 和 DATA 两个磁盘组!
在这里插入图片描述

二、主机配置

📢 注意: 以下标题中(rac01&rac02)代表节点一和节点二都需要执行,(rac01)代表只需要节点一执行。

1、Linux主机安装(rac01&rac02)

主机安装参考:Linxu的安装教程

2、配置yum源并安装依赖包(rac01&rac02)

配置yum源的方法:
配置本地源:yum本地源配置
配置网络源:yum网络源配置
推荐网络源,可以直接看网络源第6步进行操作

安装依赖包

yum groupinstall -y "Server with GUI"
yum install -y bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
elfutils-libelf \
elfutils-libelf-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat \
e2fsprogs \
e2fsprogs-libs \
fontconfig-devel \
expect \
unzip \
openssh-clients \
readline* \
tigervnc* \
psmisc --skip-broken

在这里插入图片描述
手动上传并安装依赖包:
依赖包链接:
百度网盘:
链接:https://pan.baidu.com/s/1_0VkfqKfxxGLnm3ipWV3QQ?pwd=ljdg
提取码:ljdg

github自行下载:Git直达

自行将包上传到/soft目录下

mkdir /soft
cd /soft 
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

在这里插入图片描述
检查依赖包安装情况:

rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline | grep "not installed"

在这里插入图片描述
不报错就说明正常
📢 注意: 依赖一定要安装成功,否则可能导致安装失败!

3、网络配置(rac01&rac02)

首先我们需要添加第二个网卡
操作如下:
我们先将虚拟机关机
然后编辑虚拟机设置
在这里插入图片描述
在这里插入图片描述
这里两个网络适配器都需要手动生成MAC地址
然后将两台机器开机

查看网卡编号

ifconfig

在这里插入图片描述
注意这两个
查看网卡有哪些

nmcli con show

在这里插入图片描述
可以看到ens37网卡还没有激活

激活新的网卡

nmcli con add con-name ens37 type ethernet ifname ens37

然后再次查看
在这里插入图片描述
Linux 7 版本可以使用 nmcli 命令来配置网络,以下命令中的 IP地址、子网掩码、网关 和 网卡名称 请根据实际情况进行修改!
rac01:

##配置Public IP
nmcli connection modify ens33 ipv4.addresses 192.168.229.143/24 ipv4.gateway 192.168.229.2 ipv4.method manual autoconnect yes
##配置Private IP
nmcli connection modify ens37 ipv4.addresses 1.1.1.1/24 ipv4.method manual autoconnect yes
##生效
nmcli connection up ens33
nmcli connection up ens37
nmcli connection show

在这里插入图片描述
rac02:

##配置Public IP
nmcli connection modify ens33 ipv4.addresses 192.168.229.144/24 ipv4.gateway 192.168.229.2 ipv4.method manual autoconnect yes
##配置Private IP
nmcli connection modify ens37 ipv4.addresses 1.1.1.2/24 ipv4.method manual autoconnect yes
##生效
nmcli connection up ens33
nmcli connection up ens37
nmcli connection show

在这里插入图片描述
最后,配置好网络后,输入命令 ip a 查看网络是否配置成功,尝试 ping 测试网络。
配置好之后可以为ip配置DNS

vi /etc/sysconfig/network-scripts/ifcfg-ens33

rac01配置:

IPADDR="192.168.229.143"        #静态IP地址
NETMASK="255.255.255.0"        #子网掩码
GATEWAY="192.168.229.2"        #网关
PEERDNS=no            
DNS1=114.114.114.114        
DNS2=8.8.8.8     

在这里插入图片描述

rac02配置:

IPADDR="192.168.229.144"        #静态IP地址
NETMASK="255.255.255.0"        #子网掩码
GATEWAY="192.168.229.2"        #网关
PEERDNS=no            
DNS1=114.114.114.114        
DNS2=8.8.8.8     

在这里插入图片描述
网络配置完成

4、存储配置(rac01&rac02)

这里根据之前我们的配置需要添加两个硬盘
在这里插入图片描述
需要提前创建好一个文件,将硬盘都放在一起

rac01添加硬盘的方式:

将虚拟机关机
注意,此时不能有快照存在(可以选择将虚拟机进行克隆,然后接着使用克隆机进行操作)
在这里插入图片描述
我新创建了一个文件夹用于存储硬盘
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
同样的方法我们在添加一个大小20G的磁盘作为asm-data

在这里插入图片描述
操作完成之后会多出两个永久硬盘

rac02添加硬盘的方式:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择刚刚我们放在文件夹里面的文件

在这里插入图片描述
同样的需要选择独立
然后在把data磁盘也添加上去就OK了
在这里插入图片描述
配置完成是这样子的

开启共享文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将刚刚我们存放磁盘的文件加入共享另一台机器也是如此

修改虚拟机配置文件

打开虚拟机安装目录(下图)进行编辑
在这里插入图片描述
rac01和rac02都需要添加
结尾添加以下内容:

scsi1.sharedBus = "virtual"
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
disk.EnableUUID = "TRUE"

在这里插入图片描述
然后就可以将虚拟机打开了
查看添加情况

lsblk

在这里插入图片描述

安装 multipath 绑定多路径:

##安装multipath
yum install -y device-mapper*
mpathconf --enable --with_multipathd y
##查看共享盘的scsi_id
/usr/lib/udev/scsi_id -g -u /dev/sdb
/usr/lib/udev/scsi_id -g -u /dev/sdc

在这里插入图片描述

配置 multipath 文件:

cat <<EOF>/etc/multipath.conf
defaults {
    user_friendly_names yes
}

blacklist {
  devnode "^sda"
}

multipaths {
  multipath {
  wwid "36000c29ddfb87dee2c5bfc75c7041ba9"
  alias asm_ocr
  }
  
  multipath {
  wwid "36000c299bc6a97baafd8f37ecf58d453"
  alias asm_data
  }

}
EOF

📢 注意: wwid的值为上面获取的scsi_id,alias可自定义,这里配置1块OCR盘,1块DATA盘!
激活multipath多路径:

multipath -F
multipath -v2
multipath -ll

在这里插入图片描述

配置UDEV绑盘:

rm -rf /dev/mapper/udev_info
rm -rf /etc/udev/rules.d/99-oracle-asmdevices.rules
cd /dev/mapper
for i in asm_*; do
    printf "%s %s\n" "$i" "$(udevadm info --query=all --name=/dev/mapper/"$i" | grep -i dm_uuid)" >>/dev/mapper/udev_info
done
while read -r line; do
    dm_uuid=$(echo "$line" | awk -F'=' '{print $2}')
    disk_name=$(echo "$line" | awk '{print $1}')
    echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${dm_uuid}\",SYMLINK+=\"${disk_name}\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\"" >>/etc/udev/rules.d/99-oracle-asmdevices.rules
done </dev/mapper/udev_info
##重载udev
udevadm control --reload-rules
udevadm trigger --type=devices
ll /dev/asm*

在这里插入图片描述

📢 注意: 这里由于没有创建 grid 用户,因此权限和组是 root,等创建 grid 用户后,再次重载 udev 即可!

确认配置完成后,分别在两个节点输入命令 ls /dev/asm* 查看是否已经成功绑定!

5、hosts文件配置(rac01&rac02)

配置hostname:

hostnamectl set-hostname p19c01
hostnamectl set-hostname p19c02

在这里插入图片描述
在这里插入图片描述
配置hosts文件:

cat <<EOF>>/etc/hosts
#Public IP
192.168.229.143     p19c01
192.168.229.144     p19c02

#Private IP
1.1.1.1 p19c01-priv
1.1.1.2 p19c02-priv

#Vip IP
192.168.229.145 p19c01-vip
192.168.229.146 p19c02-vip

#Scan IP
192.168.229.147 p19c-scan
EOF

在这里插入图片描述
在这里插入图片描述

6、防火墙配置(rac01&rac02)

永久关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

7、selinux 配置(rac01&rac02)

配置 selinux 临时生效:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
getenforce

cat /etc/selinux/config

在这里插入图片描述
在这里插入图片描述
重启虚拟机

📢 注意: selinux 配置需要重启生效!

8、时间同步配置(rac01&rac02)

禁用chronyd:

yum install -y chrony
timedatectl set-timezone Asia/Shanghai
systemctl stop chronyd.service
systemctl disable chronyd.service

在这里插入图片描述
在这里插入图片描述
配置ntpdate时间同步计划任务:

yum install -y ntpdate
##10.211.55.200为时间服务器IP,每天12点同步系统时间
cat <<EOF>>/var/spool/cron/root
00 12 * * * /usr/sbin/ntpdate -u 192.168.229.143 && /usr/sbin/hwclock -w
EOF
##查看计划任务
crontab -l

在这里插入图片描述
时钟同步任务其实也可以用别的方法替换:
比如:
在这里插入图片描述
将虚拟机都设置为和本机同步,其实也能实现时钟同步

9、关闭透明大页和NUMA(rac01&rac02)

Linux 7 配置内核文件,关闭透明大页和numa:

sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

在这里插入图片描述
在这里插入图片描述
重启虚拟机
重启后检查是否生效:

cat /sys/kernel/mm/transparent_hugepage/enabled 
cat /proc/cmdline

在这里插入图片描述

📢 注意: 关闭 透明大页 和 numa 的配置,需要重启主机生效!

10、avahi-daemon 配置(rac01&rac02)

有些主机安装选择最小化安装,没有安装 avahi-daemon 功能,建议安装之后禁用,防止以后误操作导致出问题:

yum install -y avahi*
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
pgrep -f avahi-daemon | awk '{print "kill -9 "$2}'
systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon.service

在这里插入图片描述

配置 NOZEROCONF:

cat <<EOF>>/etc/sysconfig/network
NOZEROCONF=yes
EOF

在这里插入图片描述

11、系统参数配置(rac01&rac02)

安装 Oracle 数据库需要配置系统参数,以下使用脚本命令一键式配置:

memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
totalMemory=$((memTotal / 2048))
shmall=$((memTotal / 4))
if [ $shmall -lt 2097152 ]; then
	shmall=2097152
fi
shmmax=$((memTotal * 1024 - 1))
if [ "$shmmax" -lt 4294967295 ]; then
	shmmax=4294967295
fi
cat <<EOF>>/etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
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
net.ipv4.conf.ens33.rp_filter = 1
net.ipv4.conf.ens37.rp_filter = 2
EOF

在这里插入图片描述
生效系统参数:

sysctl -p

在这里插入图片描述
在这里插入图片描述

12、系统资源限制配置(rac01&rac02)

配置limits.conf:

cat <<EOF>>/etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard memlock 134217728
oracle soft memlock 134217728

grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
grid soft nproc 2047
grid hard nproc 16384
EOF

配置pam.d/login:

cat <<EOF>>/etc/pam.d/login
session required pam_limits.so 
session required /lib64/security/pam_limits.so
EOF

在这里插入图片描述在这里插入图片描述

13、用户及组、目录创建(rac01&rac02)

创建安装 Oracle 数据库所需的用户、组以及安装目录:

/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54329 asmadmin
/usr/sbin/groupadd -g 54330 racdba

grid/oracle 用户创建:

/usr/sbin/useradd -u 11012 -g oinstall -G asmadmin,asmdba,asmoper,dba,racdba,oper grid
/usr/sbin/useradd -u 54321 -g oinstall -G asmdba,dba,backupdba,dgdba,kmdba,racdba,oper oracle
##修改用户密码为123
echo "123" |passwd oracle --stdin
echo "123" |passwd grid --stdin
##查看用户组
id grid
id oracle
##重载udev
/sbin/udevadm trigger --type=devices --action=change
/sbin/udevadm control --reload-rules
ll /dev/asm*
ll /dev/dm*

在这里插入图片描述
在这里插入图片描述
📢 注意: 这里udev重载之后,绑盘权限已经变成 grid 了!
创建软件目录:

mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/19.3.0/db
mkdir -p /u01/app/oraInventory
mkdir -p /backup
mkdir -p /home/oracle/scripts
chown -R oracle:oinstall /backup
chown -R oracle:oinstall /home/oracle/scripts
chown -R grid:oinstall /u01
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/19.3.0/grid
chown -R grid:oinstall /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01

在这里插入图片描述
在这里插入图片描述

14 环境变量配置(rac01&rac02)

grid用户环境变量:

cat <<EOF>>/home/grid/.bash_profile
################OracleBegin#########################
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=+ASM2
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sas='sqlplus / as sysasm'
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ ' 
EOF

📢 注意: 每个节点的 ORACLE_SID 不一样(+ASM1/+ASM2),需要自行修改!(详情可以看我下图操作过程)
在这里插入图片描述
在这里插入图片描述
oracle用户环境变量:

cat <<EOF>>/home/oracle/.bash_profile
################OracleBegin#########################
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.3.0/db
export ORACLE_HOSTNAME=p19c01
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=p19c01
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sas='sqlplus / as sysdba'
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '
################OracleEnd#########################
EOF

📢 注意: 每个节点的 ORACLE_HOSTNAME(p19c01/p19c02)和 ORACLE_SID(p19c01/p19c02)不一样,需要自行修改!(详情可以看我下图操作过程)
在这里插入图片描述
在这里插入图片描述

15、安装介质上传解压(rac01)

以下会用到的包(好难找呜呜呜):
百度网盘链接:
链接:https://pan.baidu.com/s/1K57F4xlmRsZ1b4UcSmHkdg?pwd=wjvv
提取码:wjvv

安装包使用 XFTP 工具进行上传,只需要上传至一节点 /soft 目录下:

##创建安装介质存放目录
mkdir /soft
##上传安装介质到/soft目录
LINUX.X64_193000_db_home.zip
LINUX.X64_193000_grid_home.zip
p32545008_190000_Linux-x86-64.zip(这个包已经被淘汰,我使用同系列包进行替代)
p6880880_190000_Linux-x86-64.zip

📢 注意: 19C 的安装包需要解压到对应的 ORACLE_HOME 目录下!
在这里插入图片描述

静默解压grid安装包:

chown -R grid:oinstall /soft
su - grid -c "unzip -q /soft/LINUX.X64_193000_grid_home.zip -d /u01/app/19.3.0/grid/"

静默解压oracle安装包:

chown -R oracle:oinstall /soft
su - oracle -c "unzip -q /soft/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/db/"

静默解压补丁安装包:

cd /soft
##解压RU补丁包
chown -R grid:oinstall /soft
su - grid -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /u01/app/19.3.0/grid"
##解压OPatch补丁包
su - grid -c "unzip -q /soft/p33182768_190000_Linux-x86-64.zip -d /soft"
chown -R oracle:oinstall /soft
su - oracle -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/db"

在这里插入图片描述

检查环境

su - grid
opatch version

在这里插入图片描述
📢 注意: 由于19C支持安装grid软件前打RU补丁,因此提前解压OPatch和RU补丁,为安装做准备!

root用户下,cvuqdisk安装(rac01&rac02):
rac01:

su - root
cd /u01/app/19.3.0/grid/cv/rpm

rpm -ivh /u01/app/19.3.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm 
##传输到节点二安装
scp cvuqdisk-1.0.10-1.rpm p19c02:/soft

rac02:

cd /soft
rpm -ivh /soft/cvuqdisk-1.0.10-1.rpm 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
📢 注意: 19C 版本的 cvu 包换位置了,目录为:$ORACLE_HOME/cv/rpm/,以上所有软件只需要在节点一上传解压即可。

至此,准备工作已经完成,安装前重启主机!
重启后,检查 selinux、numa 和透明大页:

cat /proc/cmdline
getenforce

在这里插入图片描述
在这里插入图片描述

三、安装Grid软件(rac01)

📢 注意:这里可以先保存个镜像,防止安装过程中出错
接下来在图形界面操作
可以使用虚拟机也可以使用VNC
VNC安装教程:VNC安装教程
接下来开始操作
授权:

chown -R grid:oinstall /soft
su - grid

在这里插入图片描述

开始安装:

##应用环境变量
source ~/.bash_profile
##进入安装目录
cd $ORACLE_HOME
##执行安装程序开始安装,通过-applyRU参数指向补丁解压位置,提前安装grid补丁
./gridSetup.sh -applyRU /soft/33182768

tip:中间可能会因为图形界面显示出问题,如果实在虚拟机的话需要执行export DISPLAY=:0解决
如果是vnc的话,需要执行export DISPLAY=:1然后再执行xhost +解决
详情可以参考:VNC无法打开图形界面解决方法
在这里插入图片描述
这里需要等一会会,大概几分钟
注意: 可以看到,已经开始对ORACLE_HOME进行补丁安装。
补丁打完后,进入安装界面,选择集群安装
在这里插入图片描述
在这里插入图片描述
选择 standlone 模式:
在这里插入图片描述
修改 scan 名称,与 hosts 文件配置 scan 名称保持一致(参考之前的配置):
在这里插入图片描述
在这里插入图片描述

添加节点二信息,进行互信:
在这里插入图片描述
输入 grid 用户密码,创建用户时两节点必须保持一致。先执行 setup,再执行 test,开始互信:
在这里插入图片描述
确保对应网卡和IP网段对应即可,19C 心跳网段需要选 ASM & Private,用于 ASM 实例的托管:
在这里插入图片描述
选择存储类型,19C 只有两个选项,ASM 只能选 Flex:
在这里插入图片描述
GIMR,这里不选择安装:
在这里插入图片描述
安装时填创建 OCR 盘,一块盘冗余 External,目录选择udev绑的路径:
在这里插入图片描述
在这里插入图片描述
填写 sys/system 密码,需要记住自己设置的密码(这里密码是要以字母开头):
我设置的是oracle
在这里插入图片描述
默认即可:
在这里插入图片描述
EM 选择不开,比较占资源,后面安装好后可以配置:
在这里插入图片描述
默认即可:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装预检查,由于我们只配了一个SCAN,所以关于 DNS 相关的都无视,继续:
在这里插入图片描述
开始安装 grid:
在这里插入图片描述
在这里插入图片描述
到这一步时先不要选择OK(一定一定不要先点OK,除非你有镜像随便造),先执行脚本,操作如下:
两节点顺序执行 root.sh,先节点一执行完,再节点二执行(不可以同时执行):
新开一个命令窗口

su - root

/u01/app/oraInventory/orainstRoot.sh

/u01/app/19.3.0/grid/root.sh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

两个节点的 root.sh 都执行完之后,继续安装:
在这里插入图片描述
这个错误查过 MOS 可以忽略:
在这里插入图片描述

安装完成:
在这里插入图片描述

检查集群状态:

su - grid
crsctl stat res -t

在这里插入图片描述
在这里插入图片描述

检查 grid 补丁:

su - grid
opatch lspatches
sqlplus -version

在这里插入图片描述

四、创建 ASM 数据盘 DATA

这里创建的 DATA 磁盘组主要用于存放数据文件、日志文件等数据库文件!

使用图形化方式添加 ASM DATA 数据盘:

asmca

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击OK
在这里插入图片描述
在这里插入图片描述
检查 asm 磁盘:

asmcmd lsdg

在这里插入图片描述
建议重启两台主机,检查重启后 Grid 集群是否正常运行!
重启之后需要等待一会,集群自启动有几分钟延迟
然后检查集群状态:

su - grid
crsctl stat res -t

在这里插入图片描述
发现p19c01还没有完全启动,再次查询
在这里插入图片描述
启动正常没有问题

五、安装Oracle软件

选择一个图形界面,可以是虚拟机本机也可以是vnc

su - oracle
##应用环境变量
source ~/.bash_profile
##进入ORACLE_HOME目录
cd $ORACLE_HOME
##执行安装程序开始安装
./runInstaller 

进入安装界面,选择仅安装 Oracle 软件:
在这里插入图片描述
选择集群模式:
在这里插入图片描述
输入 oracle 用户密码,先执行 setup,再执行 test,开始互信:
在这里插入图片描述
在这里插入图片描述
选择企业版:
在这里插入图片描述
默认即可:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装预检查,由于我们只配了一个 SCAN,所以关于 DNS 相关的都无视,继续:
在这里插入图片描述
在这里插入图片描述
开始安装:
在这里插入图片描述
在这里插入图片描述
**注意注意:**千万千万别点ok,先执行脚本
root 用户下,两个节点顺序执行 root.sh:

su - root
/u01/app/oracle/product/19.3.0/db/root.sh

在这里插入图片描述
在这里插入图片描述
执行完毕,回去点ok,介质安装

安装完成:
在这里插入图片描述
检查补丁版本:

su - oracle
sqlplus -version

在这里插入图片描述
至此,Oracle 软件已成功安装!

六、创建数据库实例

还是在图形界面接着操作

su - oracle
dbca

在这里插入图片描述
选择创建数据库实例:
在这里插入图片描述
选择自定义模式:
在这里插入图片描述
选择基础安装即可:
在这里插入图片描述
选择节点:
在这里插入图片描述
填写实例名 p19c0,由于默认添加为1,2,实例名规划为 p19c01/02,所以需要加个0;选择安装 CDB 模式,不创建PDB:
在这里插入图片描述
默认即可,使用 OMF 模式:
在这里插入图片描述
不开闪回,不开归档,可以建完实例后再配置:
在这里插入图片描述
配置内存,使用 ASMM 模式,数据库总内存占用物理内存 70%-90% 之间:
在这里插入图片描述
使用基础模式安装,block_size 是无法修改的,process 进程数修改为1500,根据实际情况修改:
在这里插入图片描述
配置数据库字符集,默认 AL32UTF8,国家字符集,默认 AL16UTF16;根据实际情况修改:
在这里插入图片描述
然后点击下一步
建议打开第一个:
在这里插入图片描述
填写sys/system密码:
我写的是oracle
在这里插入图片描述
默认即可:
在这里插入图片描述
安装预检查,DNS 相关忽略:
在这里插入图片描述
开始安装:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这个过程真的真的非常的慢,需要耐心等待
在这里插入图片描述
数据库建完
可以登录数据库查看

sqlplus / as sysdba
select instance_number,instance_name,startup_time,status from gv$Instance;

在这里插入图片描述

接下来最重要的事情就是更新补丁,这个时间会很长的大家不用担心,等着就行,报错另说。
节点一:

补丁更新操作(一节点操作完成后再进行下一个节点操作):
 
节点一:

1. 补丁冲突检测 (root用户)

export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
export PATH=$PATH:/u01/app/19.3.0/grid/OPatch

opatchauto apply /soft/33182768 -analyze

2. 打补丁(root用户)

export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
export PATH=$PATH:/u01/app/19.3.0/grid/OPatch

/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/33182768

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
节点1执行完毕

节点二:
安装包使用 XFTP 工具进行上传,只需要上传至二节点 /soft 目录下:

##创建安装介质存放目录
mkdir /soft
##上传安装介质到/soft目录
p32545008_190000_Linux-x86-64.zip

📢 注意: 19C 的安装包需要解压到对应的 ORACLE_HOME 目录下!

静默解压grid安装包:

cd /soft
chown -R grid:oinstall /soft
##解压OPatch补丁包
su - grid -c "unzip -q /soft/p33182768_190000_Linux-x86-64.zip -d /soft"

1. 补丁冲突检测 (root用户)

export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
export PATH=$PATH:/u01/app/19.3.0/grid/OPatch

opatchauto apply /soft/33182768 -analyze

2. 打补丁(root用户)

export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
export PATH=$PATH:/u01/app/19.3.0/grid/OPatch

/u01/app/19.3.0/grid/OPatch/opatchauto apply /soft/33182768

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,数据库实例创建完成!

七、数据库优化配置(rac01)

1、开启数据库归档模式
关于开启归档模式,具体可参考文章:

Oracle 开启归档模式

su - oracle
##关闭数据库实例
srvctl stop database -d p19c0
##开启单个节点到mount模式
srvctl start instance -d p19c0 -i p19c01 -o mount
##开启归档
sqlplus / as sysdba
alter database archivelog;
##设置归档路径
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+DATA';
exit;
##重启数据库实例
srvctl stop instance -d p19c0 -i p19c01
srvctl start database -d p19c0
##检查归档
sqlplus / as sysdba
archive log list

在这里插入图片描述
在这里插入图片描述
2、配置定期删除归档计划任务
关于归档日志删除,具体可参考文章:

Oracle RMAN删除归档日志脚本

##进入oracle用户
su - oracle
mkdir -p /home/oracle/scripts/
##写入脚本
{
	echo '#!/bin/bash'
    echo 'source ~/.bash_profile'
    echo 'deltime=`date +"20%y%m%d%H%M%S"`'
    echo "rman target / nocatalog msglog /home/oracle/scripts/del_arch_\${deltime}.log<<EOF"
    echo 'crosscheck archivelog all;'
    echo "delete noprompt archivelog until time 'sysdate-7';"
    echo "delete noprompt force archivelog until time 'SYSDATE-10';"
    echo 'EOF'
} >>/home/oracle/scripts/del_arch.sh
chmod +x /home/oracle/scripts/del_arch.sh

在这里插入图片描述
切换到 oracle 用户写入计划任务:

su - root
cat <<EOF>>/var/spool/cron/oracle
12 00 * * * /home/oracle/scripts/del_arch.sh
EOF
##手动执行测试
su - oracle
/home/oracle/scripts/del_arch.sh

在这里插入图片描述
3、配置数据库开机自启
配置数据库实例随集群服务自启动:

##root用户下执行

/u01/app/19.3.0/grid/bin/crsctl modify resource "ora.p19c0.db" -attr "AUTO_START=always" -unsupported

在这里插入图片描述
注意: ora.p19c0.db中的 p19c0 是指 db 名称;需要在 root 用户下执行!
所有都配置完成之后,关闭数据库,重启主机!
RAC集群搭建完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/352136.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度强化学习(王树森)笔记01

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

网安渗透攻击作业(1)

实现负载均衡 第一步&#xff1a;安装依赖 sudo apt insta11 libgd-dev 第二步&#xff1a;下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 第三步&#xff1a;对nginx进行解压 tar -zvxf nginx-1.22.1.tar.g2 第四步&#xff1a;编译安装nginx cd ngi…

短剧小程序分销系统开发:创新与机遇的融合

一、引言 随着移动互联网的快速发展&#xff0c;短剧作为一种新兴的娱乐形式&#xff0c;正逐渐成为人们生活中的一部分。短剧小程序分销系统的开发&#xff0c;不仅为短剧的传播提供了新的渠道&#xff0c;同时也为相关产业带来了新的商业机会。本文将探讨短剧小程序分销系统…

【JavaEE】网络原理: 网络编程套接字(概念)

目录 1.什么是网络编程 2.网络编程中的基本概念 2.1发送端和接收端 2.2请求和响应 2.3客户端和服务端 3.Socket套接字 4.Socket编程注意事项 1.什么是网络编程 网络编程&#xff0c;指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信 (…

PVE更换LXC源教程,如何在PVE上使用LXC容器

PVE更换LXC源教程&#xff0c;如何在PVE上使用LXC容器 Proxmox Virtual Environment (PVE) 是一种基于开源的虚拟化平台&#xff0c;它允许您轻松地在单个物理服务器上管理和部署虚拟机和容器。其中的LXC容器是一种轻量级容器化技术&#xff0c;可提供更高的性能和资源利用率。…

python连接sqlserver

1、安装sqlserver 用的是sqlserver2012的版本 网上很多&#xff0c;参考下 https://blog.csdn.net/weixin_44889709/article/details/123769722 2、安装python3.7及以下环境 尝试安装python3.8的环境不能连接成功 conda create -n pytorch python3.73、安装sqlserver的pyt…

Dijkstra算法-lanqiao1122

#include <bits/stdc.h> using namespace std; const long long INF 0x3f3f3f3f3f3f3f3fLL; const int N 3e5 5; struct edge{int from, to;//边&#xff1a;起点&#xff0c;终点&#xff0c;权值&#xff1b;起点from没有用到&#xff0c;e[i]的i就是fromlong long …

JUC-synchronized无锁、偏向锁、轻量级锁、重量级锁

1 synchronized实操 关键字synchronized可以用来保证多线程并发安全的**原子性、可见、有序性。**关键字synchronized不仅可以作用于方法还可以作用于同步代码块&#xff0c;能够保证作用范围中线程访问安全。 注意&#xff1a;局部变量是线程安全的。线程不安全问题只存在于实…

excel中多行合并后调整行高并打印

首先参考该文&#xff0c;调整全文的行高。 几个小技巧&#xff1a; 1.转换成pdf查看文件格式 2.通过视图--》分页预览&#xff0c;来确定每页的内容&#xff08;此时页码会以水印的形式显示&#xff09; 3. 页面布局中的&#xff0c;宽度可以选为自动&#xff0c;因为已经是…

ASP.NET 7 Core Web 读取appsetting.json

把一些配置信息保存在json文件可以避免更改时要重新发布程序的烦恼。 我这里使用的是写一个类文件&#xff0c;然后通过program.cs启动的方式&#xff08;.net 6 开始没有startup了&#xff09;。 项目类型&#xff1a;ASP.NET Core Web MVC / .NET 7.0 / VS2022 第一步…

苹果提审被拒反馈崩溃日志.text | iOS 审核被拒crashLog

iOS审核人员拒绝后每个截图&#xff0c;只给了几个text文件&#xff0c;这种情况就是审核的时候运行你的代码&#xff0c;崩溃了。 仅仅看text文件&#xff0c;是看不出所以然来的&#xff0c;所以我们要将日志转换成.crash格式 1.将.text文件下载下来&#xff0c;将 .text手动…

OpenHarmony关系型数据库

1 概述 关系型数据库(Relational Database, 以下简称RDB)是一种基于关系模型来管理数据的数据库&#xff0c;是在SQLite基础上提供一套完整的对本地数据库进行管理的机制&#xff0c;为开发者提供无需编写原生SQL语句即可实现数据增、删、改、查等接口&#xff0c;同时开发者也…

算法笔记:地理探测器

1 空间分层异质性&#xff08;spatial stratified heterogeneity&#xff09; 空间分层异质性&#xff08;空间分异性/区异性&#xff09;&#xff1a;层内方差小于层间方差的地理现象例如气 候带、土地利用图、地貌图、生物区系、区际经济差异、城乡差异以及主体功能区等 等[…

张维迎《博弈与社会》笔记(3)导论:一些经济学的基础知识

这篇的主要内容介绍了经济学的基础知识吧。 经济学、社会学、心理学的区别 经济学与社会学的区别与共同点 经济学一般是从个人的行为出发解释社会现象&#xff08;from micro to macro&#xff09;。社会学的传统方法则是从社会的角度来解释个人的行为&#xff08;from macro…

Oracle分栏(非分页)查询

不知道Oracle怎么进行数据分栏(分栏: 因数据列过长, 部分数据作为新列显示). 在这里先记录一下粗浅的查询方法. 数据源例子: select 日用百货 as cat, 手电筒 as name, 20 as amount, 2024-01-27 as dt from dualunion allselect 餐饮美食 as cat, 鸡公煲 as name, 15.9 as amo…

外卖跑腿系统开发:构建高效、安全的服务平台

在当今快节奏的生活中&#xff0c;外卖跑腿系统的开发已成为技术领域的一个重要课题。本文将介绍如何使用一些常见的编程语言和技术框架&#xff0c;构建一个高效、安全的外卖跑腿系统。 1. 技术选择 在开始开发之前&#xff0c;我们需要选择适合的技术栈。常用的技术包括&a…

Java 字符串 10 字符串相关类的底层原理

底层原理1&#xff0c;底层原理2 底层原理3&#xff1a; 分两种情况&#xff1a; 1、等号右边没有变量&#xff1a; 2、等号右边有变量&#xff1a; 两个对象&#xff0c;一个是StringBuilder&#xff0c;一个是String&#xff0c;浪费空间&#xff0c;性能不高 在jdk8之前&am…

设计模式⑩ :用类来实现

文章目录 一、前言二、Command 模式1. 介绍2.应用3. 总结 三、Interpreter 模式1. 介绍2. 应用3. 总结 参考文章 一、前言 有时候不想动脑子&#xff0c;就懒得看源码又不像浪费时间所以会看看书&#xff0c;但是又记不住&#xff0c;所以决定开始写"抄书"系列。本系…

go语言(十九)---- channel

channel的使用 //1. 发送value到channelchannel <- value //2. 接收并将其丢弃<- channel //3. 从channel中接收数据&#xff0c;并将其赋值给x x : <- channel 例子 package mainimport "fmt"func main() {//定义一个channelc : make(chan int)go func…

Qlik Sense : ErrorCode(错误变量)

错误变量 所有错误变量的值在脚本执行之后依然保留。第一个变量 ErrorMode 由用户输入&#xff0c;最后三个变量是 Qlik Sense 的输出&#xff08;包括脚本中错误的信息&#xff09;。 使用每个变量的下拉列表可查看每个变量的简短描述和语法。单击语法描述中的变量名称可了解…