Linux7 安装 Oracle 19C RAC 详细图文教程
实战篇:Linux7 安装 Oracle 19C RAC 详细图文教程
本文是按照:https://www.modb.pro/db/154424的思路进行编写
一、安装前规划
安装RAC前,当然要先做好规划。具体包含以下几方面:
节点 | 主机版本 | 主机名 | 实例名 | Grid/Oracle版本 | Public IP | Private IP | Virtual IP | Scan IP |
---|---|---|---|---|---|---|---|---|
1 | rhel7.9 | p19c01 | p19c01 | 19.11.0.0 | 192.168.134.232 | 1.1.1.1 | 192.168.134.234 | 192.168.134.236 |
2 | rhel7.9 | p19c02 | p19c02 | 19.11.0.0 | 192.168.134.233 | 1.1.1.2 | 192.168.134.235 | 192.168.134.236 |
大家的private IP 尽量取正常一点的,我这个是当时看教程取的
1、系统规划
- 主机名: 需要英文字母开头,建议小写,p19c01/p19c02
- 集群名称: 长度不超过15位,p19c-cluster
- Linux系统版本: RedHat 7.9
- 磁盘: 本地磁盘 100G,用于安装 OS,存放 grid 和 oracle 安装软件,用于 oracle 和 grid 安装目录
- ASM共享盘:
裁决盘OCR:OCR+VOTING=10G、冗余模式:EXTERNAL
数据盘DATA:DATA=20G、冗余模式:EXTERNAL(数据文件,归档日志文件,spfile 文件等) - RU升级路径: 19C 的补丁已经不叫PSU,改为 RU
升级需满足条件:
- c>=a
- c+d>=a+b
例如:
- 19.5.2–>19.8.0(5是a,2是b,8是c,0是d),满足升级需求;
- 19.6.2–>19.7.0(虽然7>6,但是7+0<6+2,所以不满足,如果是19.7.1,即可满足)
本次是从 19.3.0 升级到 19.11.0,Oracle 官网下载的基础版是 19.3.0! 1、Linux主机安装(rac01&rac02)
安装 Linux 服务器可选择:Centos,Redhat,Oracle Linux。
📢 注意: Linux 系统的安装本文不做详细演示!
📢 注意: Linux 系统的安装本文不做详细演示!
我之前写过一配置yum源的文章大家可以看一下
https://blog.csdn.net/weixin_63131036/article/details/133914372?spm=1001.2014.3001.5501
大家也可以配置网络源
https://blog.csdn.net/weixin_63131036/article/details/135699151?spm=1001.2014.3001.5502
2、配置yum源并安装依赖包(rac01&rac02)
安装依赖包:
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
手动上传并安装依赖包:
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、网络配置
Linux 7 版本可以使用 nmcli
命令来配置网络,以下命令中的 IP地址、子网掩码、网关 和 网卡名称 请根据实际情况进行修改!
rac01:
##配置Public IP
nmcli connection modify ens33 ipv4.addresses 192.168.134.232/24 ipv4.gateway 192.168.134.2 ipv4.method manual autoconnect yes
##配置Private IP
nmcli connection modify ens34 ipv4.addresses 1.1.1.1/24 ipv4.method manual autoconnect yes
##生效
nmcli connection up ens33
nmcli connection up ens34
nmcli connection show
rac02:
##配置Public IP
nmcli connection modify ens33 ipv4.addresses 192.168.134.233/24 ipv4.gateway 192.168.134.2 ipv4.method manual autoconnect yes
##配置Private IP
nmcli connection modify ens34 ipv4.addresses 1.1.1.2/24 ipv4.method manual autoconnect yes
##生效
nmcli connection up ens33
nmcli connection up ens34
nmcli connection show
最后,配置好网络后,输入命令 ip a
查看网络是否配置成功,尝试 ping
测试网络。
配置好之后可以为ip配置DNS
vi /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR="192.168.134.231" #静态IP地址
NETMASK="255.255.255.0" #子网掩码
GATEWAY="192.168.134.2" #网关
PEERDNS=no
DNS1=114.114.114.114
DNS2=8.8.8.8
4.共享存储(所有rac节点)
一、创建共享磁盘
1、选择添加硬盘
打开要添加的虚拟机设置
下一步
2、磁盘类型选择SCSI
下一步
3、选择创建新虚拟机磁盘
下一步
4、设置磁盘大小,选择将虚拟磁盘存储为单个文件
下一步
5、点击浏览,修改磁盘名和保存路径
完成
二、设置磁盘挂载端口
点击新添加硬盘的高级设置
勾选独立→永久
再点击新硬盘(SCSI)下拉菜单
按照硬盘添加的顺序选择虚拟设备节点
设置完成后点击确定
再次打开虚拟机设置中可以看到新添加的磁盘
三、第二台虚拟机添加磁盘
打开虚拟机设置点击添加
选择添加硬盘
下一步
磁盘类型选择SCSI
下一步
选择使用现有虚拟磁盘
下一步
进入创建虚拟磁盘的路径,打开之前创建的虚拟磁盘
完成
打开硬盘高级设置
虚拟设备节点选择与第一台虚拟机相同
独立→永久
确定
再次打开虚拟机设置磁盘已添加
四、修改虚拟机配置文件
打开虚拟机安装目录
编辑“.vmx”结尾文件,记得先保留一个副本,别等下不小心没了
结尾添加以下内容:
scsi1.sharedBus = "virtual"
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
disk.EnableUUID = "TRUE"
保存
启动虚拟机
第二台虚拟机与第一台虚拟机操作一致
注意:有时disk.EnableUUID = "TRUE"参数,配置文件中已存在,留一个即可,否则开机报错
a)通过3260端口查看开放了哪些共享存储:
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 "36000c291eedf896dcd8c48512b0deec1"alias asm_ocr}multipath {wwid "36000c2922d1079a6a9f319731b5750ba"alias asm_arc}multipath {wwid "36000c29a34d3634756ce92967d7e3556"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_*; doprintf "%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; dodm_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.134.232 p19c01
192.168.134.233 p19c02#Private IP
1.1.1.1 p19c01-priv
1.1.1.2 p19c02-priv#Vip IP
192.168.134.234 p19c01-vip
192.168.134.235 p19c02-vip#Scan IP
192.168.134.236 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
📢 注意: 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.134.232 && /usr/sbin/hwclock -w
EOF
##查看计划任务
crontab -l
##手动执行
/usr/sbin/ntpdate -u 192.168.134.232 && /usr/sbin/hwclock -w
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 ]; thenshmall=2097152
fi
shmmax=$((memTotal * 1024 - 1))
if [ "$shmmax" -lt 4294967295 ]; thenshmmax=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.ens34.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 134217728grid 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
##修改用户密码为123456
echo "123456" |passwd oracle --stdin
echo "123456" |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=p19c02
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=p19c02
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)
安装包使用 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"
📢 注意: 由于19C支持安装grid软件前打RU补丁,因此提前解压OPatch和RU补丁,为安装做准备!
root用户下,cvuqdisk安装(rac01&rac02):
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
rpm -ivh /soft/cvuqdisk-1.0.10-1.rpm
📢 注意: 19C 版本的 cvu 包换位置了,目录为:$ORACLE_HOME/cv/rpm/
,以上所有软件只需要在节点一上传解压即可。
至此,准备工作已经完成,安装前重启主机!
重启后,检查 selinux、numa 和透明大页:
三、安装Grid软件(rac01)
关于 VNC
配置具体可参考文章:
Linux 配置 VNC 远程桌面
配置 grid 用户 vnc 图形界面:
##root用户下切换到grid用户
chown -R grid:oinstall /soft
su - grid
##执行vncserver,按提示输入密码即可
vncserver
在 vnc 客户端界面输入 10.211.55.100:1,输入刚才输入的密码即可连接:
打开终端命令行:
开始安装:
##应用环境变量
source ~/.bash_profile
##进入安装目录
cd $ORACLE_HOME
##执行安装程序开始安装,通过-applyRU参数指向补丁解压位置,提前安装grid补丁
./gridSetup.sh -applyRU /soft/33182768
注意: 可以看到,已经开始对ORACLE_HOME进行补丁安装。
补丁打完,进入安装界面,选择集群安装:
选择 standlone 模式:
修改 scan 名称,与 hosts 文件配置 scan 名称保持一致:
添加节点二信息,进行互信:
输入 grid 用户密码,创建用户时两节点必须保持一致。先执行 setup,再执行 test,开始互信:
确保对应网卡和IP网段对应即可,19C 心跳网段需要选 ASM & Private,用于 ASM 实例的托管:
选择存储类型,19C 只有两个选项,ASM 只能选 Flex:
GIMR,这里不选择安装:
安装时填创建 OCR 盘,一块盘冗余 External,目录选择udev绑的路径:
填写 sys/system 密码,需要记住自己设置的密码:
默认即可:
EM 选择不开,比较占资源,后面安装好后可以配置:
默认即可:
安装预检查,由于我们只配了一个SCAN,所以关于 DNS 相关的都无视,继续:
开始安装 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
检查 asm 磁盘:
asmcmd lsdg
建议重启两台主机,检查重启后 Grid 集群是否正常运行!
四、安装Oracle软件
配置 oracle 用户 vnc 图形界面:
chown -R oracle:oinstall /soft
##root用户下切换到grid用户
su - oracle
##执行vncserver,按提示输入密码即可
vncserver
在 vnc 客户端界面输入把你的ip,输入刚才输入的密码即可连接:
右键打开终端:
开始安装:
##应用环境变量
source ~/.bash_profile
##进入ORACLE_HOME目录
cd $ORACLE_HOME
##执行安装程序开始安装,加上jar包防止弹窗不显示问题
./runInstaller
📢 注意: 可以看到,已经开始对 ORACLE_HOME 进行补丁安装!
补丁打完,进入安装界面,选择仅安装 Oracle 软件:
选择集群模式:
输入 oracle 用户密码,先执行 setup,再执行 test,开始互信:
选择企业版:
默认即可:
安装预检查,由于我们只配了一个 SCAN,所以关于 DNS 相关的都无视,继续:
开始安装:
root 用户下,两个节点顺序执行 root.sh:
安装完成:
检查补丁版本:
su - oracle
sqlplus -version
至此,Oracle 软件已成功安装!
五、创建数据库实例
这里建库还是在第四步安装 Oracle 软件的 vnc 界面中继续:
dbca
选择创建数据库实例:
选择自定义模式:
选择基础安装即可:
选择节点:
填写实例名 p19c0,由于默认添加为1,2,实例名规划为 p19c01/02,所以需要加个0;选择安装 CDB 模式,不创建PDB:
默认即可,使用 OMF 模式:
不开闪回,不开归档,可以建完实例后再配置:
配置内存,使用 ASMM 模式,数据库总内存占用物理内存 70%-90% 之间:
使用基础模式安装,block_size 是无法修改的,process 进程数修改为1500,根据实际情况修改:
配置数据库字符集,默认 AL32UTF8,国家字符集,默认 AL16UTF16;根据实际情况修改:
建议打开第一个:
填写sys/system密码:
默认即可:
安装预检查,DNS 相关忽略:
开始安装:
经过漫长的等待,数据库建完了:
接下来最重要的事情就是更新补丁,这个时间会很长的大家不用担心,等着就行,报错另说,我的是因为安装过程中失败了一次,所以实例名改掉了,然后正常安装实例名是对应的正确的
补丁更新操作(一节点操作完成后再进行下一个节点操作):节点一:1. 补丁冲突检测 (root用户)export PERL5LIB=/u01/app/19.3.0/grid/perl/lib
export PATH=$PATH:/u01/app/19.3.0/grid/OPatchopatchauto apply /soft/33182768 -analyze2. 打补丁(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
节点二
安装包使用 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"
至此,数据库实例创建完成!*
六、数据库优化配置(rac01)
1、开启数据库归档模式
关于开启归档模式,具体可参考文章:
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 用户写入计划任务:
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 用户下执行!
所有都配置完成之后,关闭数据库,重启主机!
后续想要进行其他的优化可以去看看下面的文章
https://blog.csdn.net/OceanWaves1993/article/details/130232193
相关文章:

Linux7 安装 Oracle 19C RAC 详细图文教程
实战篇:Linux7 安装 Oracle 19C RAC 详细图文教程 本文是按照:https://www.modb.pro/db/154424的思路进行编写 一、安装前规划 安装RAC前,当然要先做好规划。具体包含以下几方面: 节点主机版本主机名实例名Grid/Oracle版本Publi…...

【SpringBoot】SpringBoot 项目初始化方法
github 搜索 springboot 模板 github 搜索 springboot 模板,拉取现成代码。 SpringBoot 官方的模板生成器 SpringBoot 官方的模板生成器(https://start.spring.io/) 在 IDEA 开发工具中生成 这里我修改成阿里的镜像主要是要使用 Java8。 …...

34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
二分查找到目标值然后左右找到坐标 问题在于:找左右坐标的时候时间复杂度不是O(logN) class Solution {public int[] searchRange(int[] nums, int target) {int[] ans {-1, -1};if (nums.length 0) return ans;int l 0, r nums.length;while (l < r) {int…...

Mysql深度分页优化的一个实践
问题简述: 最近在工作中遇到了大数据量的查询场景, 日产100w左右明细, 会查询近90天内的数据, 总数据量约1亿, 业务要求支持分页查询与导出. 无论是分页或导出都涉及到深度分页查询, mysql通过limit/offset实现的深度分页查询会存在全表扫描的问题, 比如offset1000w, limit10…...

【JavaEE进阶】 SpringBoot配置⽂件
文章目录 🍀配置⽂件的作⽤🌴SpringBoot配置⽂件🎋配置⽂件的格式🎄properties配置⽂件🚩properties基本语法🚩读取配置⽂件🚩properties的缺点 🌳yml配置⽂件yml基本语法Ƕ…...

excel 常用函数
求和函数: SUM: 将单个值、单元格引用或区域相加。 案例:SUM(A1:A5) (结果:A1到A5单元格的值求和) SUMIF: 对选中范围内符合指定条件的值求和。 案例:SUMIF(B1:B5, ">50&qu…...

【React基础】– JSX语法
文章目录 认识JSX为什么React选择了JSXJSX的使用 React事件绑定this的绑定问题事件参数传递 React条件渲染React列表渲染列表中的key JSX的本质createElement源码Babel官网查看直接编写jsx代码 虚拟DOM的创建过程jsx – 虚拟DOM – 真实DOM声明式编程 阶段案例练习 认识JSX ◼ …...

SpringBoot 项目中后端实现跨域的5种方式!!!
文章目录 SpringBoot 项目中后端实现跨域的5种方式!!!一、为什么会出现跨域问题二、什么是跨域三、非同源限制四、Java后端 实现 CORS 跨域请求的方式1、返回新的 CorsFilter(全局跨域)2、重写 WebMvcConfigurer(全局跨域)3、使用注解 (局部跨…...

Vue3前端开发,provide和enject的基础练习,跨层级传递数据
Vue3前端开发,provide和enject的基础练习,跨层级传递数据! 声明:provide虽然可以跨层级传递,但是依旧是需要由上向下的方向传递。根传子的方向。 <script setup> import {onMounted, ref} from vue import Base from ./components/Base.vue impor…...

Python 循环结构值while循环
while循环是一种常用的循环结构,它会在满足特定条件的情况下重复执行一段代码块。 基本语法: while condition:# 循环体代码while循环的执行过程如下: 首先,判断循环条件condition(布尔表达式)是否为真。…...

MSSQL-识别扩展extended event(扩展事件)中的时间单位
经常使用sqlserver extended event(扩展事件),但是总是忘记扩展事件使用的时间单位,不确定它们是 秒、毫秒、还是微秒? 以下下代码能够从 相关DMV中提取description字段内容来识别时间单位: SELECT [p].[name] [package_name],[o…...

vue3中l和vue2中v-model不同点
vue2比较让人诟病的一点就是提供了两种双向绑定:v-model和.sync, 在vue3中,去掉了.sync修饰符,只需要使用v-model进行双向绑定即可。 为了让v-model更好的针对多个属性进行双向绑定(vue2中自定义组件中v-model只能使用…...

使用 Swift 代码优化项目编译速度
引言 软件的性能是评价一个软件质量的重要指标,尤其在今天这个时代,性能已成为大型项目不可或缺的考虑因素之一。对于用户量极大的软件,如网银系统、在线购物商城等,更是必须保证其高效稳定的性能。在这种背景下,优化…...

基于springboot+vue的社区团购系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…...

three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程002 - three.js正交相机OrthographicCamera</title><script src"ThreeJS/three.js"></script><script src&qu…...

Golang 搭建 WebSocket 应用(七) - 性能、可用性
在前面的文章中,提到过非功能性需求决定了架构。 今天我们再来考虑一下另外两个非功能性需求:性能和可用性。 前言 关于性能,其实并不是只有我们这个消息推送系统独有的问题。 对于所有的开发者而言,都多多少少会处理过性能相关…...

Qt 状态机框架:The State Machine Framework (一)
传送门: Qt 状态机框架:The State Machine Framework (一) Qt 状态机框架:The State Machine Framework (二) 一、什么是状态机框架 状态机框架提供了用于创建和执行状态图/表[1]的类。这些概念和表示法基于Harel的Statecharts:一种复杂系统的可视化形式,也是UML状态图的基…...

高通平台学习一
什么是QMI? Qualcom Message Interface 高通信息接口 高通平台目前都是非对称多核心,最主要的是AP和Modem。两个处理器怎么进行通信呢,我们把AP和Modem当作两个主机,问题就变得了很简单,TCP/IP协议不是一种非常成功的进程间跨主…...

Python爬虫时被封IP,该怎么解决?四大动态IP平台测评
在使用 Python 进行爬虫时,很有可能因为一些异常行为被封 IP,这主要是因为一些爬虫时产生的异常行为导致的。 在曾经的一次数据爬取的时候,我尝试去爬取Google地图上面的商家联系方式和地址信息做营销,可是很不幸,还只…...

积分梳状滤波器CIC原理与实现
CIC(Cascade Intergrator Comb):级联积分梳状滤波器,是由积分器和梳状滤波器级联而得。滤波器系数为1,无需对系数进行存储,只有加法器、积分器和寄存器,资源消耗少,运算速率高&#…...

【项目管理】CMMI-原因分析与解决过程(CAR)
概述: “原因分析与解决”通过预防缺陷或者问题的引入以及识别并适当纳入优秀过程性能的原因,改进质量与生产率。 目录 1、文档结构 2、原因分析与解决过程域包括如下活动 3、选择需要加以分析的结果(启动条件) 4、过程活动与实践对照表 5、实例 1、…...

【设计模式】文件目录管理是组合模式吗?
组合模式是什么? 组合模式是一种将对象组合成树形结构以表示"部分-整体"的层次结构的设计模式。它使得用户对单个对象和组合对象的使用具有一致性。 组合模式在什么情况下使用? 当你发现你需要在代码中实现树形数据结构,让整体-部…...

利用appium自动控制移动设备并提取数据
安装appium-python-client模块并启动已安装好的环境 安装appium-python-client模块 在window的虚拟环境下执行pip install appium-python-client 启动夜神模拟器,进入夜神模拟器所在的安装路径的bin目录下,进入cmd终端,使用adb命令建立adb…...

day22_236二叉树最近公共祖先_235二叉搜索树(最近公共祖先_701插入一个节点_450删除一个节点)
文章目录 [236 二叉树的最近公共祖先](https://programmercarl.com/0236.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE)[235 二叉搜索树的最近公共祖先](https://program…...

OpenSource - 工具管理器easy-manager-tool
文章目录 功能说明运行配置环境配置启动docker部署 项目安全UI展示 Easy-Manager-Tool 打造软件行业首款集成工具,不管你是程序员,测试,运维等都可以使用该软件来提升自己的工作效率。 Easy-Manager-Tool 的诞生是为了解决软件行业众多参与者…...

Laravel7 + easyWeChat 实现微信公众号支付功能
注册服务号,需进行微信认证,此时需缴费 300 元/年,必须是认证成功的服务号才能开通微信支付。 注册微信支付商户号 1、登录 https://pay.weixin.qq.com/index.php/core/home/login?return_urlhttps%3A%2F%2Fpay.weixin.qq.com%2Findex.php%…...

Linux环境下,针对QT软件工程搭建C++Test单元测试环境的操作指南
文章目录 前言一、安装QT二、安装CTest三、使用QT生成.bdf文件四、创建CTest工程注意事项 前言 CTest是Parasoft公司出品的一款可以针对C/C源代码进行静态分析、单元测试、集成测试的测试工具。本文主要讲解如何在Linux环境下,搭建QT插件版的CTest测试环境。 一、…...

16k+ start 一个开源的的监控系统部署教程
安装条件 Linux或macOS系统 4GB内存 开放 33014、33174、3183端口 1.安装 1、下载源码 首先使用 git 克隆源码到本地 git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/ 方式1:运行 install.sh 脚本一键安装 ./install.s…...

Mermaid使用教程(绘制各种图)
Mermaid使用教程(绘制各种图) 文章目录 Mermaid使用教程(绘制各种图)简介饼状图简单的例子应用案例 序列图简单案例应用案例另一个应用案例 甘特图简单案例应用案例一个更为复杂的应用案例 Git图简单案例 总结 简介 本文将主要介…...

OpenAI/ChatGPT Plus 支持的虚拟卡有哪些
最近,有关 OpenAI/ChatGPT Plus 需要信用卡的讨论越来越多。在这篇文章中,我将分享一些我在绑定信用卡过程中得到的经验和教训,以及 OpenAI/ChatGPT Plus 支持的卡类型。 不支持的卡 根据 OpenAI 的地区限制,国内和香港的卡都不…...