2024,记录自己学习的过程!本文参考了许多大佬的文章,收货也颇多!
一、基础环境
主机规划
| ip | hosts | memory | cpu | swap | disk |
|---|---|---|---|---|---|
| 81.27.74.106 | ora19c1 | 8G | 2C | 16G | / 100G |
| 81.27.74.107 | ora19c2 | 8G | 2C | 16G | / 100G |
| 81.27.74.108 | ora19c1-vip | - | - | - | - |
| 81.27.74.109 | ora19c2-vip | - | - | - | - |
| 81.27.74.110 | ora19c-scan | - | - | - | - |
| 10.0.0.101 | ora19c1-priv | - | - | - | - |
| 10.0.0.102 | ora19c2-priv | - | - | - | - |
存储规划
| path | size |
|---|---|
| /dev/asm_ocr1 | 1G |
| /dev/asm_ocr2 | 1G |
| /dev/asm_ocr3 | 1G |
| /dev/asm_data1 | 5G |
| /dev/asm_fra1 | 2G |
1)配置hosts
cat >> /etc/hosts <<EOF
81.27.74.106 ora19c1
81.27.74.107 ora19c2
81.27.74.108 ora19c1-vip
81.27.74.109 ora19c2-vip
81.27.74.110 ora19c-scan
10.0.0.101 ora19c1-priv
10.0.0.102 ora19c2-priv
EOF
2)关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl is-enabled firewalld.service
#关闭avahi-daemon服务,官方文档已经列出一些BUG,建议关闭。
systemctl stop avahi-daemon.socket avahi-daemon.service
systemctl disable avahi-daemon.socket avahi-daemon.service
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config&&cat /etc/selinux/config
3)禁用NTP
systemctl stop ntpd
systemctl disable ntpd
systemctl stop chronyd.service
systemctl disable chronyd.service
rm -f /etc/chrony.conf
4)检查系统语言环境和时区
# 检查语言环境
[root@ora19c1 ~]# localectl
# 调整方法:
localectl set-locale LANG=en_US.UTF8 && localectl status|grep LANG
#其它的版本
LANG="en_US.UTF-8"
# RHEL7 查看时间时区
timedatectl
#设置时区
timedatectl set-timezone "Asia/Shanghai"
timedatectl set-time HH:MM:SS
timedatectl set-time "2012-10-30 18:17:16"
#将系统时间同步给硬件时间
timedatectl set-local-rtc 1
# RHEL 7之前的版本查看时间
date -R && grep "ZONE=" /etc/sysconfig/clock
echo -e "5\n9\n1\n1" | tzselect &&
ln /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#修改系统时间
date -s "2023-04-03 11:10:00" && hwclock --systohc
5)配置NOZEROCONF
# 防止169.254.0.0/255.255.0.0添加到自动路由表,影响集群
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
6)修改内核参数
echo "fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 8589934592
vm.nr_hugepages = 2500" >> /etc/sysctl.conf
sysctl -p
#
# kernel.shmmax Linux进程单个共享内存段的最大大小,需大于SGA的设置大小(单位是byte)
# kernel.shmall 共享内存的总页数, at least ceil(shmmax/PAGE_SIZE)
# kernel.shmmni 该参数设置系统范围内共享内存段的最大数目,最小是4096
#
7)修改系统资源限制参数
vi /etc/security/limits.conf grid soft nproc 16384 grid hard nproc 16384 grid soft nofile 65536 grid hard nofile 65536 grid soft stack 32768 grid hard stack 32768 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft nofile 65536 oracle hard nofile 65536 oracle soft stack 32768 oracle hard stack 32768 oracle hard memlock 8388608 oracle soft memlock 8388608
8)控制给用户分配的资源
echo "session required pam_limits.so" >> /etc/pam.d/login
cat /etc/pam.d/login
9)关闭透明大页和numa
vi /etc/default/grub
# 在 GRUB_CMDLINE_LINUX 的末尾加入下面的配置
transparent_hugepage=never numa=off
# 执行命令重新生成配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
10)调整共享内存挂载点大小
vi /etc/fstab tmpfs /dev/shm tmpfs defaults,size=6144m 0 0 mount -o remount /dev/shm
11)创建用户名和组
groupadd -g 601 oinstall
groupadd -g 602 dba
groupadd -g 603 oper
groupadd -g 604 backupdba
groupadd -g 605 dgdba
groupadd -g 606 kmdba
groupadd -g 607 asmdba
groupadd -g 608 asmoper
groupadd -g 609 asmadmin
useradd -u 601 -g oinstall -G asmadmin,asmdba,dba,asmoper grid
useradd -u 602 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,oper,asmdba oracle
echo "oracle" | passwd --stdin grid
echo "oracle" | passwd --stdin oracle
12)创建目录并且授权
mkdir -p /u01/app/oraInventory mkdir -p /u01/app/19.3.0/grid mkdir -p /u01/app/grid mkdir -p /u01/app/oracle/cfgtoollogs mkdir -p /u01/app/oracle/product/19.3.0/db_1 chown -R grid:oinstall /u01 chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01/
13)配置环境变量
su - oracle
vi ~/.bash_profile
export PS1="[`whoami`@`hostname`:"'$PWD]$'
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=ora19c1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/db_1
export ORACLE_SID=ora19c1
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
export 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
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
#############################################################
su - grid
vi ~/.bash_profile
export PS1="[`whoami`@`hostname`:"'$PWD]$'
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_TERM=xterm;
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export THREADS_FLAG=native
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
alias sqlplus='rlwrap sqlplus'
alias asmcmd='rlwrap asmcmd'
14)安装依赖包
https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/supported-oracle-linux-7-distributions-for-x86-64.html#GUID-3E82890D-2552-4924-B458-70FFF02315F7
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make policycoreutils policycoreutils-python smartmontools sysstat gcc-c++ nfs-utils net-tools
# 上传软件包
# compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
# kmod-20-21.el7.x86_64.rpm
# kmod-libs-20-21.el7.x86_64.rpm
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
yum install -y kmod-20-21.el7.x86_64.rpm kmod-libs-20-21.el7.x86_64.rpm
二、配置共享磁盘
1)SCSI前置
需要安装iscsi-initiator-utils、device-mapper及device-mapper-multipath(这里带着多路径的包一起装了)
# 检查是否安装
rpm -qa | grep iscsi
rpm -qa | grep device-mapper
# 安装
yum install iscsi-initiator*
yum install device-mapper device-mapper-event device-mapper-multipath device-mapper-multipath-libs
# iscsi、iscsid服务控制
systemctl start iscsi.service
systemctl start iscsid.service
# 发现存储
iscsiadm -m discovery -t st -p 192.168.10.55
# 查询已发现的ISCSI
iscsiadm -m node
执行完上一步,使用
fdisk -l还是查看不到磁盘,执行下面登陆命令就能看到磁盘了
# 全部登陆
iscsiadm -m node --loginall=all
# 单条链路登陆,简写就不在这放了,iqn在WEB管理页面volumns-LUN Mapping下
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.f33a86dd5860 --portal 192.168.10.55:3260 --login
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.f33a86dd5860 --portal 10.10.10.15:3260 --login
# 链路逐个登出
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.f33a86dd5860 --portal 192.168.10.55:3260 --logout
iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.f33a86dd5860 --portal 10.10.10.15:3260 --logout
# 链路全部登出
iscsiadm -m node --logoutall=all
# 新增加iscsi存储目标后刷新
iscsiadm -m session -R
另外有iscsi需要了解
#iscsi主目录
/var/lib/iscsi/
#查看发现的路径
/var/lib/iscsi/send_targets
#节点信息
/var/lib/iscsi/nodes
2)udev绑定
不用分区
# 查看磁盘大小
lsblk
# 获取名称和ID,下面是两种方式
udevadm info --query=all --name=/dev/sdb |grep -i ID_SERIAL=
# 创建UDEV规则文件
cd /etc/udev/rules.d
touch 99-oracle-asmdevices.rules
# 脚本
for i in b c d e f;do
echo "/dev/sd$i = `udevadm info --query=all --name=/dev/sdb |grep -i ID_SERIAL=`"
done
KERNEL=="sdb", ENV{ID_SERIAL}=="36000c29ef68c52da0927ac6b47741602", SYMLINK+="asm_ocr1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdc", ENV{ID_SERIAL}=="36000c296d5178692e85a92d41655e7ea", SYMLINK+="asm_ocr2", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdd", ENV{ID_SERIAL}=="36000c29ce8008651cc4c71f674520711", SYMLINK+="asm_ocr3", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sde", ENV{ID_SERIAL}=="36000c29fe08a6a3c8a91c8263222dafd", SYMLINK+="asm_data1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdf", ENV{ID_SERIAL}=="36000c29d204e2742d8fb64bece0281f4", SYMLINK+="asm_fra1", OWNER="grid", GROUP="asmadmin", MODE="0660"
#【非生产操作】配置完成,重启UDEV(新装环境可以这么操作,但是生产环境不能直接重启)
systemctl restart systemd-udevd.service
udevadm control --reload-rules
udevadm trigger
#【生产操作】生产环境操作,触发变更
/sbin/udevadm trigger --type=devices --action=change
三、安装GI
# Oracle19c(12.2.0.3)安装的时候,由于grid安装包相当于一个绿色版的压缩包,解压缩时需要注意以下两点:
# su - grid 切换到grid用户解压缩包
# /oracle/app/19.3.0/grid 解压缩到grid家目录
1)安装cvuqdisk
cd /u01/app/19.3.0/grid/cv/rpm/
su - root
export CVUQDISK_GRP=asmadmin
rpm -ivh cvuqdisk-1.0.10-1.rpm
# 将 cvuqdisk-1.0.10-1.rpm 拷贝到另一节点,执行安装。
2)配置互信
/u01/app/19.3.0/grid/oui/prov/resources/scripts/sshUserSetup.sh -user grid -hosts "ora19c1 ora19c2" -advanced -noPromptPassphrase
/u01/app/19.3.0/grid/oui/prov/resources/scripts/sshUserSetup.sh -user oracle -hosts "ora19c1 ora19c2" -advanced -noPromptPassphrase
3)安装前检查
[grid@ora19c1 ~]$ cd $ORACLE_HOME
[grid@ora19c1 grid]$ ./runcluvfy.sh stage -pre crsinst -n "ora19c1,ora19c2" -verbose
4)设置响应文件
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=CRS_CONFIG
ORACLE_BASE=/u01/app/grid
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.SCANClientDataFile=
oracle.install.crs.config.gpnp.scanName=ora19c-scan
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.memberClusterManifestFile=
oracle.install.crs.config.clusterName=ora19c-cluster
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.gpnp.gnsOption=
oracle.install.crs.config.gpnp.gnsClientDataFile=
oracle.install.crs.config.gpnp.gnsSubDomain=
oracle.install.crs.config.gpnp.gnsVIPAddress=
oracle.install.crs.config.sites=
oracle.install.crs.config.clusterNodes=ora19c1:ora19c1-vip,ora19c2:ora19c2-vip
oracle.install.crs.config.networkInterfaceList=enp0s3:81.27.74.0:1,enp0s8:10.0.0.0:5
oracle.install.crs.configureGIMR=false
oracle.install.asm.configureGIMRDataDG=false
oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE
oracle.install.crs.config.sharedFileSystemStorage.votingDiskLocations=
oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=
oracle.install.crs.config.useIPMI=false
oracle.install.crs.config.ipmi.bmcUsername=
oracle.install.crs.config.ipmi.bmcPassword=
oracle.install.asm.SYSASMPassword=oracle
oracle.install.asm.diskGroup.name=OCR
oracle.install.asm.diskGroup.redundancy=NORMAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.FailureGroups=
oracle.install.asm.diskGroup.disksWithFailureGroupNames=
oracle.install.asm.diskGroup.disks=/dev/asm_ocr1,/dev/asm_ocr2,/dev/asm_ocr3
oracle.install.asm.diskGroup.quorumFailureGroupNames=
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm*
oracle.install.asm.monitorPassword=oracle
oracle.install.asm.gimrDG.name=
oracle.install.asm.gimrDG.redundancy=
oracle.install.asm.gimrDG.AUSize=1
oracle.install.asm.gimrDG.FailureGroups=
oracle.install.asm.gimrDG.disksWithFailureGroupNames=
oracle.install.asm.gimrDG.disks=
oracle.install.asm.gimrDG.quorumFailureGroupNames=
oracle.install.asm.configureAFD=false
oracle.install.crs.configureRHPS=false
oracle.install.crs.config.ignoreDownNodes=false
oracle.install.config.managementOption=NONE
oracle.install.config.omsHost=
oracle.install.config.omsPort=0
oracle.install.config.emAdminUser=
oracle.install.config.emAdminPassword=
oracle.install.crs.rootconfig.executeRootScript=false
oracle.install.crs.rootconfig.configMethod=
oracle.install.crs.rootconfig.sudoPath=
oracle.install.crs.rootconfig.sudoUserName=
oracle.install.crs.config.batchinfo=
oracle.install.crs.app.applicationAddress=
oracle.install.crs.deleteNode.nodes=
5)执行安装脚本
[grid@ora19c1 grid]$ ./gridSetup.sh -silent -ignorePrereqFailure -responseFile /home/grid/gi.rsp

按要求执行脚本





6)创建磁盘组
set lines 125
col MOUNT_STATUS heading "MOUNT|STATUS"
col HEADER_STATUS heading "HEADER|STATUS"
col path for a16
col name for a10
col STATE for a10
col MOUNT_STATUS for a7
col HEADER_STATUS for a10
select name,path,TOTAL_MB,FREE_MB,MOUNT_STATUS,STATE,HEADER_STATUS from v$asm_disk;
MOUNT HEADER
NAME PATH TOTAL_MB FREE_MB STATUS STATE STATUS
---------- ---------------- ---------- ---------- ------- ---------- ----------
/dev/asm_data1 0 0 CLOSED NORMAL CANDIDATE
/dev/asm_fra1 0 0 CLOSED NORMAL CANDIDATE
OCR_0001 /dev/asm_ocr1 1024 720 CACHED NORMAL MEMBER
OCR_0000 /dev/asm_ocr2 1024 720 CACHED NORMAL MEMBER
OCR_0002 /dev/asm_ocr3 1024 716 CACHED NORMAL MEMBER
create diskgroup data external redundancy disk '/dev/asm_data1' ATTRIBUTE 'au_size'='4M','compatible.asm' = '19.0';
create diskgroup fra external redundancy disk '/dev/asm_fra1' ATTRIBUTE 'au_size'='4M','compatible.asm' = '19.0';
四、安装数据库
1)准备数据库软件响应文件
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.rootconfig.executeRootScript=false
oracle.install.db.rootconfig.configMethod=
oracle.install.db.rootconfig.sudoPath=
oracle.install.db.rootconfig.sudoUserName=
oracle.install.db.CLUSTER_NODES=ora19c1,ora19c2
2)安装数据库软件
[oracle@ora19c1 ~]$ cd $ORACLE_HOME
[oracle@ora19c1 db_1]$ ./runInstaller -silent -ignorePrereqFailure -responseFile /home/oracle/db.rsp -logLevel info
在节点上分别执行脚本
3)准备建库响应文件
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=ora19c
sid=ora19c
databaseConfigType=RAC
policyManaged=FALSE
createServerPool=FALSE
serverPoolName=
createAsContainerDatabase=false
nodelist=ora19c1,ora19c2
templateName=/u01/app/oracle/product/19.3.0/db_1/assistants/dbca/templates/General_Purpose.dbc
sysPassword=oracle
systemPassword=oracle
runCVUChecks=true
dbsnmpPassword=oracle
dvConfiguration=false
olsConfiguration=false
datafileJarLocation=/u01/app/oracle/product/19.3.0/db_1/assistants/dbca/templates/
datafileDestination=DATA
storageType=ASM
diskGroupName=DATA
asmsnmpPassword=oracle
characterSet=ZHS16GBK
nationalCharacterSet=AL16UTF16
registerWithDirService=FALSE
listeners=LISTENER
memoryPercentage=50
databaseType=MULTIPURPOSE
automaticMemoryManagement=FALSE
dbsnmpPassword=oracle
4)执行创建命令
[oracle@ora19c1 ~]$ dbca -silent -ignorePreReqs -ignorePrereqFailure -createDatabase -responseFile /home/oracle/dbca.rsp
五、打补丁
本次补丁选择的是
19.20 RU,补丁清单如下:
p6880880_190000_Linux-x86-64.zip
p35354406_190000_Linux-x86-64.zip(OJVM)
p35320081_190000_Linux-x86-64.zip(DB)
p35319490_190000_Linux-x86-64.zip(GI)
1)解压补丁工具包
# grid、oracle用户都需要执行
[grid@ora19c2 RU]$ unzip p6880880_190000_LINUX.zip -d $ORACLE_HOME
[oracle@ora19c2 RU]$ unzip p6880880_190000_LINUX.zip -d $ORACLE_HOME
# 解压后验证补丁工具版本信息
$ORACLE_HOME/OPatch/opatch version
# 出现如下报错信息:
[grid@ora19c2 RU]$ opatch version
/u01/app/19.3.0/grid/OPatch/opatch: line 839: [: too many arguments
/u01/app/19.3.0/grid/OPatch/opatch: line 839: [: too many arguments
Java (1.7) could not be located. OPatch cannot proceed!
OPatch returns with error code = 1
# 解决方法:
rm -rf $ORACLE_HOME/OPatch/jre
cp -r $ORACLE_HOME/jdk/jre $ORACLE_HOME/OPatch/
2)解压补丁包
[grid@ora19c1 ~]$ cd /soft/RU/
[grid@ora19c1 RU]$ unzip p35319490_190000_Linux-x86-64.zip
[grid@ora19c2 RU]$ unzip p35319490_190000_Linux-x86-64.zip
3)执行补丁冲突检查
# 使用 grid 用户
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/RU/35319490/35320081
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/RU/35319490/35320149
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/RU/35319490/35332537
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/RU/35319490/35553096
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/RU/35319490/33575402
# 使用 oracle 用户
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/RU/35319490/35320081
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /soft/RU/35319490/35320149
4)检查空间是否足够
# 使用 grid 用户
vi /tmp/patch_list_gihome.txt
/soft/RU/35319490/35320081
/soft/RU/35319490/35320149
/soft/RU/35319490/35332537
/soft/RU/35319490/35553096
/soft/RU/35319490/33575402
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_gihome.txt
# 使用 oracle 用户
vi /tmp/patch_list_dbhome.txt
/soft/RU/35319490/35320081
/soft/RU/35319490/35320149
$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseFile /tmp/patch_list_dbhome.txt
5)补丁安装预检查
[grid@ora19c1 ~]$ cluvfy stage -pre patch [grid@ora19c2 ~]$ cluvfy stage -pre patch [oracle@ora19c1 ~]$ cluvfy stage -pre patch [oracle@ora19c2 ~]$ cluvfy stage -pre patch
6)补丁安装
6.1)给GI打补丁
# 使用 root 用户
# 先备份安装目录!!!!!!!!!!!!!!
tar zcvf u01_app.tar.gz /u01/app
export ORACLE_HOME=/u01/app/19.3.0/grid
export PATH=$PATH:$ORACLE_HOME/OPatch
opatchauto apply /soft/RU/35319490/ -oh $ORACLE_HOME
在打补丁时,遇见如下报错信息
根据报错提示,缺少
fuser命令,按照下面的方式解决,然后重新运行打补丁命令[root@ora19c1 RU]# yum search fuser Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. ========================================= Matched: fuser ========================================= psmisc.x86_64 : Utilities for managing processes on your system [root@ora19c1 RU]# yum install -y psmisc
6.2)给DB打补丁
# 打 DB
# 先把数据库停了
srvctl stop database ora19c
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/db_1
export PATH=$PATH:$ORACLE_HOME/OPatch
opatchauto apply /soft/RU/35319490/ -oh $ORACLE_HOME
6.3)补丁后的要求
# 使用 oracle 用户
cd $ORACLE_HOME/OPatch
./datapatch -verbose
# 编译无效对象
cd $ORACLE_HOME/rdbms/admin
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql
# 检查补丁情况
set linesize 200
col ACTION_TIME for a20
col STATUS for a8
col TARGET_VERSION for a13
alter session set nls_timestamp_format='yyyy-mm-dd HH24:MI:SS';
select PATCH_ID,PATCH_TYPE,ACTION,ACTION_TIME,STATUS,TARGET_VERSION,DESCRIPTION from dba_registry_sqlpatch;
6.4)打OJVM补丁
# 使用 oracle 用户
unzip p35354406_190000_Linux-x86-64.zip -d /soft/RU/
cd /soft/RU//35354406
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
# 前置检查通过后,停止数据库服务
srvctl stop database -db ora19c
# 查看数据库状态
srvctl status database -db ora19c
# 安装OJVM补丁
cd /soft/RU//35354406
$ORACLE_HOME/OPatch/opatch apply
# 出现下图的报错后,按如下方法.再重新运行补丁命令
export PATH=$ORACLE_HOME/perl/bin:$PATH
export PERL5LIB=$ORACLE_HOME/perl/lib
OJVM补丁安装的时候,出现报错
继续按要求操作,在一节点执行就可以了。
[oracle@ora19c1 35354406]$ sqlplus /nolog
SQL> conn /as sysdba
SQL> startup
SQL> exit
cd $ORACLE_HOME/OPatch
./datapatch -verbose
# 执行完后,编译无效对象
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql
End !!!
最后修改时间:2024-02-27 10:15:31
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。










