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

Oracle 19c for OEL8.9 4节点RAC安装部署(静默方式)

原创 zwtian 2025-03-28
219

本文档描述在Oracle Linux 8.9操作系统平台安装ORACLE 19c RAC环境并更新版本至19.22的过程。

二、前期准备 

查询ORACLE MOS认证列表,查询到Oracle Database 19.0.0.0已在OEL8.X上通过认证;UEK内核版本大于5.4.17;RHCK内核版本大于4.18.0。

所需软件列表:

序号

软件名称

软件列表

1

操作系统

OEL8.9

2

基础软件包

LINUX.X64_193000_db_home.zip

LINUX.X64_193000_grid_home.zip

3

OPatch工具

p6880880_190000_Linux-x86-64.zip

4

RU补丁包(含GI\DB\OJVM)

p36031453_190000_Linux-x86-64.zip

5

GI ONE-OFF补丁

p34672698_1922000DBRU_Linux-x86-64.zip

6

DB ONE-OFF补丁

p35985645_1922000DBRU_Linux-x86-64.zip

DB ONE-OFF补丁

p35778398_1922000DBRU_Linux-x86-64.zip

DB ONE-OFF补丁

p34672698_1922000DBRU_Linux-x86-64.zip

DB ONE-OFF补丁

p35692839_1922000DBRU_Linux-x86-64.zip

DB ONE-OFF补丁

p34774667_1922000DBRU_Linux-x86-64.zip

DB ONE-OFF补丁

p29213893_1922000DBRU_Generic.zip

Ø  相关安装介质统一上传到/u01/install 目录下,OPatch 工具、RU补丁、ONE-OFF 补丁需要在两个节点都上传,Database 和 Grid 软件仅需在节点一上传;

Ø  Oracle 19c 会在 ID 555.1 文档上推荐一些 ONE-OFF补丁,我们应用的是 19.22 官方建议的ONE-OFF补丁。

三、安装规划

3.1 操作系统规划

操作系统使用OEL8.9,内核版本大于UEK5.4.17。

3.2 安装目录规划

文件系统:

/u01和/目录建议使用不同的磁盘,创建不同的VG

挂载点/目录

推荐大小

用途说明

/

 

 

/home

 

 

/tmp

 

 

/u01

 

存放 DB 安装软件和运行日志

 

安装目录

目录名称

规划路径

集群软件BASE目录

/u01/app/grid

集群软件HOME目录

/u01/app/19.0.0/grid

软件清单目录

/u01/app/oraInventory

数据库软件BASE目录

/u01/app/oracle

数据库软件HOME目录

/u01/app/oracle/product/19.0.0/dbhome_1

软件介质存放目录

/u01/install

 

3.3 数据库基本信息规划

Ø  数据库类型:Oracle

Ø  数据库版本:19.3.0.0(补丁集19.22), 64位

Ø  数据库SID:hxdb1,hxdb2,hxdb3,hxdb4

Ø  数据库名:hxdb

Ø  语言:AMERICAN_AMERICA

Ø  数据库字符集(NLS_CHARACTERSET):AL32UTF8

Ø  国家区域字符集(NLS_NCHAR_CHARACTERSET):AL16UTF16

3.4 ASM磁盘组规划

   

ASM磁盘组规划

磁盘组名称

冗余度

容量

用途

+OCR

HIGH

10G*5

OCR、VoteDisk

+FRA

EXTERN

-

REDO LOG

+DATA01

EXTERN

-

DATA_FILE

+ARCH

EXTERN

-

FLASH\ARCHIVE LOG

 

3.5 集群信息规划

 

节点1

节点2

节点3

节点4

主机名

db19crac1

db19crac2

db19crac3

db19crac4

Public域名

db19crac1.tzwdb.com

db19crac2.tzwdb.com

db19crac3.tzwdb.com

db19crac4.tzwdb.com

Public IP

200.200.200.60

200.200.200.61

200.200.200.62

200.200.200.63

Virtual名称

db19crac1vip

db19crac2vip

db19crac3vip

db19crac4vip

Virtual域名

db19crac1vip.tzwdb.com

db19crac2vip.tzwdb.com

db19crac3vip.tzwdb.com

db19crac4vip.tzwdb.com

Virtual IP

200.200.200.64

200.200.200.65

200.200.200.66

200.200.200.67

Private名称

db19crac1prv

db19crac2prv

db19crac3prv

db19crac4prv

Private域名

db19crac1prv.tzwdb.com

db19crac2prv.tzwdb.com

db19crac3prv.tzwdb.com

db19crac4prv.tzwdb.com

Private IP

10.10.10.60

10.10.10.61

10.10.10.62

10.10.10.63

SCAN名称

db19scan

SCAN域名

db19scan.tzwdb.com

SCAN IP

200.200.200.68/69/70

集群名称

db19c-cluster

 

四、安装部署 

4  

4.1 操作系统检查

4.1.1 检查内核版本

uname –a

注:必须要求内核版本不低于5.4.17

4.1.2 检查系统内存

free -m

4.1.3 检查SWAP

swapon -s

swap 大小配置参考如下:

物理内存

swap

小于8GB

设置为内存的2倍

8GB-16GB

设置为与内存相等

16GB-64GB

设置为32GB

大于16GB

设置为16GB

4.1.4 检查磁盘空间

df -h

4.1.5 检查日期时区

date –R

timedatectl |grep “Time zone”

## 如果不是东八区,通过下面命令修改 ##

timedatectl set-timezone "Asia/Shanghai"

注:需要确保所有节点的时间和时区是一致的

4.1.6 检查依赖包

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' \

bc                              \

binutils                        \

elfutils-libelf                 \

elfutils-libelf-devel           \

fontconfig-devel                \

glibc                           \

glibc-devel                     \

ksh                             \

libaio                          \

libaio-devel                    \

libXrender                      \

libX11                          \

libXau                          \

libXi                           \

libXtst                         \

libgcc                          \

libnsl                          \

librdmacm                       \

libstdc++                       \

libstdc++-devel                 \

libxcb                          \

libibverbs                      \

make                            \

policycoreutils                 \

policycoreutils-python-utils    \

smartmontools                   \

sysstat | grep "not installed"

 

4.2 操作系统配置

4.2.1 配置hosts

cat >>/etc/hosts << EOF

#public ip

200.200.200.60 db19crac1 db19crac1.tzwdb.com

200.200.200.61 db19crac2 db19crac2.tzwdb.com

200.200.200.62 db19crac3 db19crac3.tzwdb.com

200.200.200.63 db19crac4 db19crac4.tzwdb.com

 

#priv ip

10.10.10.60 db19crac1prv db19crac1prv.tzwdb.com

10.10.10.61 db19crac2prv db19crac2prv.tzwdb.com

10.10.10.62 db19crac3prv db19crac3prv.tzwdb.com

10.10.10.63 db19crac4prv db19crac4prv.tzwdb.com

 

#vip ip

200.200.200.64 db19crac1vip db19crac1vip.tzwdb.com

200.200.200.65 db19crac2vip db19crac2vip.tzwdb.com

200.200.200.66 db19crac3vip db19crac3vip.tzwdb.com

200.200.200.67 db19crac4vip db19crac4vip.tzwdb.com

 

#scan ip

200.200.200.68 db19scan db19scan.tzwdb.com

200.200.200.69 db19scan db19scan.tzwdb.com

200.200.200.70 db19scan db19scan.tzwdb.com

 

#For DNS Server

200.200.200.250 oracledns tzwdb.com oracledns.tzwdb.com

EOF

 

4.2.2 DNS配置

##如果使用DNS,需要对DNS进行如下配置:

cat >> /etc/resolv.conf << EOF

search tzwdb.com oracledns.tzwdb.com localdomain

nameserver 200.200.200.250

options timeout:2

options attempts:5

EOF

 

cat >> /etc/host.conf << EOF

order bind,hosts

multi on

EOF

##如果未使用DNS,建议关闭DNS解析

mv /etc/resolv.conf /etc/resolv.conf.bak

 

4.2.3 关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl status firewalld.service

 

4.2.4 关闭SELINUX

getenforce

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

cat /etc/selinux/config

setenforce 0

getenforce

 

4.2.5 网络配置

## 调整MTU值

netstat –in

ifconfig 网卡名 mtu 9000

cat >> /etc/sysconfig/network-scripts/ifcfg-xxx << EOF

MTU=9000

EOF

cat /etc/sysconfig/network-scripts/ifcfg-xxx

ifconfig xxx down

ifconfig xxx up

netstat -in

 

## 修改lo回环网卡的MTU值

当 linux 系统上 lo 接口的 MTU 过大,会存在一些 BUG,检查 LO 网卡的 MTU,如果是 65536,需要修改为16436

参见 MOS 文档:ORA-27301: OS Failure Message: No Buffer Space Available / ORA-27302: failure occurred at: sskgxpsnd2

Source Script (Doc ID 2322410.1)

netstat -in

ifconfig lo mtu 16436

cat >> /etc/sysconfig/network-scripts/ifcfg-lo << EOF

MTU=16436

EOF

cat /etc/sysconfig/network-scripts/ifcfg-lo

ifconfig lo down

ifconfig lo up

netstat -in

 

 

4.2.6 安装依赖包

## 配置YUM源

mount /dev/cdrom /mnt

cd /etc/yum.repos.d

mkdir bk

mv *.repo bk/

 

echo "[EL8-1]" >> /etc/yum.repos.d/oel8.9.repo

echo "name =Linux-8-DVD1" >> /etc/yum.repos.d/oel8.9.repo

echo "baseurl=file:///mnt/AppStream" >> /etc/yum.repos.d/oel8.9.repo

echo "gpgcheck=0" >> /etc/yum.repos.d/oel8.9.repo

echo "enabled=1" >> /etc/yum.repos.d/oel8.9.repo

 

echo "[EL8-2]" >> /etc/yum.repos.d/oel8.9.repo

echo "name =Linux-8-DVD2" >> /etc/yum.repos.d/oel8.9.repo

echo "baseurl=file:///mnt/BaseOS" >> /etc/yum.repos.d/oel8.9.repo

echo "gpgcheck=0" >> /etc/yum.repos.d/oel8.9.repo

echo "enabled=1" >> /etc/yum.repos.d/oel8.9.repo

 

cat /etc/yum.repos.d/oel8.9.repo

dnf clean all

dnf makecache

 

##安装依赖包

dnf install -y bc

dnf install -y binutils

dnf install -y elfutils-libelf

dnf install -y elfutils-libelf-devel

dnf install -y fontconfig-devel

dnf install -y glibc

dnf install -y glibc-devel

dnf install -y ksh

dnf install -y libaio

dnf install -y libaio-devel

dnf install -y libXrender

dnf install -y libX11

dnf install -y libXau

dnf install -y libXi

dnf install -y libXtst

dnf install -y libgcc

dnf install -y libnsl

dnf install -y librdmacm

dnf install -y libstdc++

dnf install -y libstdc++-devel

dnf install -y libxcb

dnf install -y libibverbs

dnf install -y make

dnf install -y policycoreutils

dnf install -y policycoreutils-python-utils

dnf install -y smartmontools

dnf install -y sysstat

 

4.2.7 禁用avahi

## 多播DNS网络服务,对RAC有影响,关闭后减少因多播产生的网卡流量

systemctl stop avahi-daemon.socket

systemctl stop avahi-daemon.service

systemctl disable avahi-daemon.socket

systemctl disable avahi-daemon.service

systemctl disable avahi-daemon

 

4.2.8 添加PAM认证模块

cat >> /etc/pam.d/login <<EOF

#ORACLE SETTING

session required pam_limits.so

EOF

 

4.2.9 内核参数配置

以下内核参数配置数值来自官方建议(Doc ID 1587357.1

## 计算 kernel.shmmax

echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` * 1024 * 0.8" | bc | sed 's#\..*$##'

## 计算 kernel.shmall

kernel.shmmax/kernel.shmmni

## 修改内核参数

cat >> /etc/sysctl.d/97-oracle-database-sysctl.conf << EOF

#ORACLE SETTING

fs.aio-max-nr = 4194304

fs.file-max = 6815744

kernel.shmall = 前面计算的值

kernel.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=1048586

net.ipv4.ipfrag_high_thresh = 16777216

net.ipv4.ipfrag_low_thresh = 15728640

kernel.randomize_va_space = 0

vm.swappiness =10

vm.min_free_kbytes = 524288

kernel.panic_on_oops = 1

vm.dirty_background_ratio = 3

vm.dirty_ratio = 10

vm.dirty_writeback_centisecs = 100

vm.dirty_expire_centisecs = 500

EOF

## 生效

/sbin/sysctl --system

 

## 在使用多块私网网卡的情况下需要设置 rp_filter(多块私网卡才需要设置)

注:rp_filter 参数有三个值:0、1、2,默认为 1,具体含义为:

0 关闭反向路径校验

1 开启严格的反向路径校验

2 开启松散的反向路径校验

在使用多块私网网卡的情况下,需要对每块私网网卡都设置为 2,否则在默认的严格的反向路径校验规则下,因为数据包接收的网卡和响应数据包发出的网卡可能不是同一个物理网卡而丢弃该数据包。

如下假如 eth2、eth3 是私网网卡:

cat >> /etc/sysctl.d/97-oracle-database-sysctl.conf << EOF

net.ipv4.conf.eth2.rp_filter = 2

net.ipv4.conf.eth3.rp_filter = 2

EOF

## 生效

/sbin/sysctl --system

 

4.2.10 设置用户资源限制 

以下资源限制参数值来自官方文档(https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/checking-resource-limits-for-oracle-software-installation-users.html#GUID-293874BD-8069-470F-BEBF-A77C06618D5A)

cat >> /etc/security/limits.conf <<EOF

#ORACLE SETTING

# * soft memlock unlimited

# * hard memlock unlimited

oracle soft nproc 163840

oracle hard nproc 163840

oracle soft nofile 655360

oracle hard nofile 655360

oracle soft stack 10240

grid soft nproc 163840

grid hard nproc 163840

grid soft nofile 655360

grid hard nofile 655360

grid soft stack 10240

EOF

注:如果设置了大页内存,必须设置memlock限制参数。

 

 

4.2.11 关闭透明页

## 关闭透明页

sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="transparent_hugepage=never /g' /etc/default/grub

## 判断操作系统是否使用 UEFI 方式启动

ls -ld /sys/firmware/efi

## 如果上面查询目录存在使用如下方式重建 grub 配置文件(针对 EFI 方式)

grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

## 否则使用如下方式重建 grub 配置文件(针对 BIOS 方式)

grub2-mkconfig -o /boot/grub2/grub.cfg

## 重启操作系统后验证

cat /sys/kernel/mm/transparent_hugepage/enabled

 

4.2.12 配置大页内存

## 计算当前需要设置的大页数量

cat >> /etc/sysctl.d/97-oracle-database-sysctl.conf << EOF

vm.nr_hugepages >= SGA_Target(+1GB/500MB)/Hugepagesize(2M)

EOF

例如:

SGA=100G vm.nr_hugepages=(100+1) * 1024 / 2=51712

注:SGA 是当前服务器上所有实例的 SGA 总和(包括 ASM 实例)

4.2.13 配置时间同步

1)  使用 chrony服务同步

cp /etc/chrony.conf /etc/chrony.conf.bak

cat >> /etc/chrony.conf << EOF

server 时钟同步服务器IP地址

allow 200.200.200.0/24

local stratum 10

EOF

##启动chrony服务

systemctl enable chronyd.service

systemctl restart chronyd.service

systemctl status chronyd.service

## 查看同步源

chronyc sources –v

## 查看同步统计信息

chronyc sourcestats

##强制同步

chronyc -a makestep

date

clockdiff IP地址

 

2)  使用 ntp服务同步

## 禁用chrony服务

systemctl stop chronyd.service

systemctl disable chronyd.service

systemctl status chronyd.service

## 安装ntp软件包

dnf install ntp ntpdate –y

cat >> /etc/ntp.conf << EOF

server ntp服务器IP地址iburst

EOF

## 启动NTP服务

systemctl enable ntpd.service

systemctl start ntpd.service

systemctl status ntpd.service

## 查看ntp服务源并手工同步

ntpq -p

ntpdate -u ntp服务器IP地址

ntpstat

 

3)  使用 ctss服务同步

## 在没有时间同步服务器的情况下,可以采用Oracle集群自导的CTSS做节点之间的时钟同步,前提是需要关闭chrony和ntp服务

systemctl disable ntpd.service

systemctl stop ntpd.service

systemctl disable chronyd.service

systemctl stop chronyd.service

systemctl status ntpd.service

systemctl status chronyd.service

## 删除ntp和chrony的配置文件

mv /etc/chrony.conf /etc/chrony.conf.bak

mv /etc/ntp.conf  /etc/ntp.conf.bak

## 检查集群自带的ctss是否生效

crsctl check ctss

 

4.2.14 配置 NOZEROCONF

##关闭NOZEROCONF

当操作系统无法通过DHCP获取IP地址时,就会尝试通过NOZEROCONF获取,此时就会在系统中多出199.254.0.0网段的路由。

echo "NOZEROCONF=yes" >> /etc/sysconfig/network

 

4.2.15 禁用 NUMA

## 检查是否开启NUMA

dmesg | grep -i numa

## 关闭NUMA

sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="numa=off /g' /etc/default/grub

# 判断操作系统是否使用 UEFI 方式启动

ls -ld /sys/firmware/efi

## 如果上面查询目录存在使用如下方式重建 grub 配置文件(针对 EFI 方式)

grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

## 否则使用如下方式重建 grub 配置文件(针对 BIOS 方式)

grub2-mkconfig -o /boot/grub2/grub.cfg

##重启后验证是否关闭

dmesg | grep -i numa

 

4.2.16 配置图形化GUI

## 配置xmanager打开图形化

vi /etc/ssh/sshd_config

SSH X11Forwarding yes

systemctl status sshd.service

systemctl restart sshd.service

## 安装xterm

dnf install xclock xterm

## 验证是否能打开图形化

xclock

 

4.3 共享存储配置

4.3.1 使用UDEV,无多路径

## 扫描磁盘

lsblk >> /tmp/diskinfo.log

cd /sys/class/scsi_host/

for i in *; do echo ‘- - -’>$i/scan;done

lsblk >> /tmp/disknew.log

## 检查ASM共享磁盘是否为空盘

hexdump -n 1024 -C /dev/sd?

## 检查磁盘的UUID

for d in `fdisk -l |grep /dev/sd | egrep -v "sda|sdb" | sort -k 2 | awk '{print $2":"$3$4}' | sed 's/://' `

do

i=`echo $d|awk -F':' '{print $1}'`

echo -n $d;echo -n " "

udevadm info --name=$i | grep -E '(ID_SERIAL=)'

done

## 编写UDEV规则

注:Oracle官方建议为了获得 Oracle ASM 的最佳性能,建议使用 Deadline I/O Scheduler。

但是在某些虚拟环境(VM)和特殊设备(例如快速存储设备)上,上述命令的输出可能是 none 。操作系统或VM绕过内核I/O调度,将所有I/O请求直接提交给设备。不要更改此类环境中的 I/O 调度程序设置。

通过命令查看ASM磁盘设备的I/O Scheduler方式:

cat /sys/block/${ASM_DISK}/queue/scheduler

如果不是官方建议的deadline,可以在UDEV规则中加入下面规则来修改调度算法:

ATTR{queue/scheduler}="mq-deadline"

cat >> /etc/udev/rules.d/99-oracle-asmdevices.rules << EOF

ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_SERIAL}=="36000c296b294ae9826aa58b67ec05f91",SYMLINK+="asm-disk-ocr1",OWNER:="grid",GROUP:="asmadmin",MODE="0660"

ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_SERIAL}=="36000c29b727b25864cd550bbdd27fff6",SYMLINK+="asm-disk-ocr2",OWNER:="grid",GROUP:="asmadmin",MODE="0660"

ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_SERIAL}=="36000c29315b3da4c27923bbee653e9d5",SYMLINK+="asm-disk-ocr3",OWNER:="grid",GROUP:="asmadmin",MODE="0660"

ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_SERIAL}=="36000c296dfdc0d4f736ff31a6e98172a",SYMLINK+="asm-disk-ocr4",OWNER:="grid",GROUP:="asmadmin",MODE="0660"

ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_SERIAL}=="36000c29d4c1410db4edc533a704539a9",SYMLINK+="asm-disk-ocr5",OWNER:="grid",GROUP:="asmadmin",MODE="0660"

EOF

##刷新 udev 策略

udevadm control --reload-rules

udevadm trigger --type=devices --action=change

##检查磁盘

ls -ltr /dev/asm*

 

4.3.2 使用multipath多路径

## 多路径聚合,获取wwid

multipath -ll

for d in `fdisk -l |grep /dev/mapper| egrep -v "root*|rhel*" | sort -k 2 | awk '{print $2":"$3$4}' | sed 's/://' `

do

i=`echo $d|awk -F':' '{print $1}'`

echo -n $d;echo -n " "

udevadm info --name=$i | grep -E '(UUID)'|awk '{print $2}'

done

## 修改多路径配置文件

vi /etc/multipath.conf

multipaths {

multipath {

wwid 2c5dd2dd8c79bff51

alias ocr1

}

multipath {

wwid 2fce61925e6d8f237

alias ocr2

}

multipath {

wwid 2719cffd67e004ddf

alias ocr3

}

multipath {

wwid 295b981ef744c64c2

alias ocr4

}

multipath {

wwid 29a679143947a6182

alias ocr5

}

......

}

## 使多路径聚合生效

systemctl restart multipathd

multipath -F

multipath -v2

multipath –ll

 

for i in asm-ocr01 asm-ocr02 asm-ocr03 asm-ocr04 asm-5 asm-fra01 asm-data01 asm-data02;

do

printf "%s %s\n" "$i" "$(udevadm info --query=all --name=/dev/mapper/$i |grep -i dm_uuid)";

done

## 配置UDEV绑定磁盘并赋权

cat >> /etc/udev/rules.d/99-oracle-asmdevices.rules << EOF

ACTION=="add|change", SUBSYSTEM=="block", ENV{DM_UUID}=="mpath-14f504e46494c45525037534534662d335373642d46593638", SYMLINK+=" asm-disk-ocr01 ",OWNER:="grid",GROUP:="asmadmin",MODE="0660"

EOF

##刷新 udev 策略

udevadm control --reload-rules

udevadm trigger --type=devices --action=change

##检查磁盘

ls -ltr /dev/asm*

 

4.3.3 使用ultrapath多路径

##安装华为多路径软件,禁用操作系统自带的multipath

yum localinstall –y ./UltraPath-xxxxxx.rpm

systemctl stop multipathd

systemctl disable multipathd

## 查询磁盘的WWN号

upadm show path

upadm show array

##配置UDEV绑定磁盘并赋权

cat >> /etc/udev/rules.d/99-oracle-asmdevices.rules << EOF

KERNEL=="dm-*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36cc64a6100bae65e0004652800000000", RUN+="/bin/sh -c 'mknod /dev/asm-ocr01 b  $major $minor; chown grid:asmadmin /dev/asm-ocr01; chmod 0660 /dev/asm—disk-ocr1'"

EOF

##刷新 udev 策略

udevadm control --reload-rules

udevadm trigger --type=devices --action=change

##检查磁盘

ls -ltr /dev/asm*

 

4.4 安装用户配置

4.4.1 创建用户和组

/usr/sbin/groupadd -g 1001 oinstall

/usr/sbin/groupadd -g 1002 dba

/usr/sbin/groupadd -g 1003 oper

/usr/sbin/groupadd -g 1004 backupdba

/usr/sbin/groupadd -g 1005 dgdba

/usr/sbin/groupadd -g 1006 kmdba

/usr/sbin/groupadd -g 1007 asmdba

/usr/sbin/groupadd -g 1008 asmoper

/usr/sbin/groupadd -g 1009 asmadmin

/usr/sbin/groupadd -g 1010 racdba

/usr/sbin/useradd -u 1001 -g oinstall -G asmadmin,asmdba,dba,asmoper,oper grid

/usr/sbin/useradd -u 1002 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,asmdba,racdba,oper oracle

 

4.4.2 创建目录

mkdir -p /u01/app/19.0.0/grid

mkdir -p /u01/app/grid

mkdir -p /u01/app/oraInventory

mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

mkdir -p /u01/install

chown -R grid:oinstall /u01/app

chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01/app

## 修改介质目录权限

chmod -R 775 /u01/install

chown -R grid:oinstall /u01/install

 

4.4.3 配置环境变量

## grid配置环境变量

cat >> /home/grid/.bash_profile << EOF

# Oracle Grid 19c Environment

export ORACLE_SID=+ASM1

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/19.0.0/grid

export TEMP=/tmp

export TMPDIR=/tmp

export LIBPATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32

export NLS_LANG=american_america.AL32UTF8

export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32:

export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/jdk/jre/lib:\$ORACLE_HOME/network/lib:\$ORACLE_HOME/rdbms/lib

export CLASSPATH=\$ORACLE_HOME/jre:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib:\$ORACLE_HOME/network/jlib

export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:.

alias cdh='cd $ORACLE_HOME'

alias cdt='cd /u01/app/grid/diag/asm/+asm/+ASM1/trace'

alias cdct='cd /u01/app/grid/diag/crs/`hostname`/crs/trace’

alias csr='crsctl status res -t'

alias csi='crsctl status res -t -init'

umask 022

stty erase ^H

EOF

 

## Oracle配置环境变量

cat >> /home/oracle/.bash_profile << EOF

# Oracle 19c oracle Environment

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1

export ORACLE_SID=hxdb1

export TMP=/tmp

export NLS_LANG=american_america.AL32UTF8

export LIBPATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32

export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/jdk/jre/lib:\$ORACLE_HOME/network/lib:\$ORACLE_HOME/rdbms/lib

export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32

export CLASSPATH=\$ORACLE_HOME/jre:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib:\$ORACLE_HOME/network/jlib

export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:.

umask 022

alias cdh='cd $ORACLE_HOME'

alias cdt='cd /u01/app/oracle/diag/rdbms/hxdb/hxdb*/trace'

alias tns='cd $ORACLE_HOME/network/admin'

stty erase ^H

EOF

 

## root用户可以直接使用crsctl命令

cat >> /etc/profile <<EOF

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

alias cdt='cd /u01/app/grid/diag/asm/+asm/+ASM*/trace'

alias cdct='cd /u01/app/grid/diag/crs/`hostname`/crs/trace’

alias csr='crsctl status res -t'

alias csi='crsctl status res -t -init'

EOF

 

4.4.4 配置互信

## 配置互信

./sshUserSetup.sh -user grid -hosts " db19crac1 db19crac2 db19crac3db19crac4" -advanced -exverify –confirm

./sshUserSetup.sh -user oracle -hosts " db19crac1 db19crac2 db19crac3 db19crac4" -advanced -exverify –confirm

## 验证互信

ssh db19crac1 date

ssh db19crac2 date

ssh db19crac3 date

ssh db19crac4 date

ssh ora19c1prv date

ssh ora19c2prv date

ssh ora19c3prv date

ssh ora19c4prv date

 

4.5 静默安装部署

4.5.1 安装GI   

1)  解压GI介质

su – grid

cd /u01/install

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

2)  安装 cvuqdisk

rpm -ivh /u01/app/19.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm

scp /u01/app/19.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm db19crac2:/tmp

##安装 cvuqdisk 包(2/3/4节点)

rpm -ivh /tmp/cvuqdisk-1.0.10-1.rpm

3)  安装检查

su - grid

cd $ORACLE_HOME

./runcluvfy.sh stage -pre crsinst -n db19crac1,db19crac2,db19crac3,db19crac4 -fixup -verbose

4)  编辑响应文件

GI响应文件模板位置

/u01/app/19.0.0/grid/install/response

响应文件简要说明:

选项

说明

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 

指定BASE目录

oracle.install.asm.OSDBA=asmdba

指定用户组

oracle.install.asm.OSOPER=asmoper

指定用户组

oracle.install.asm.OSASM=asmadmin

指定用户组

oracle.install.crs.config.scanType=LOCAL_SCAN

指定SCAN类型

oracle.install.crs.config.SCANClientDataFile=

 

oracle.install.crs.config.gpnp.scanName=db19scan.tzwdb.com

指定SCAN名称,参考/etc/hosts

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=db19c-cluster 

集群名称(最大不能超过63个字符)

oracle.install.crs.config.gpnp.configureGNS=false

是否配置了GNS

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=db19crac1:db19crac1vip,db19crac2:db19crac2vip,db19crac3:db19crac3vip,db19crac4:db19crac4vip,

节点配置,参考/etc/hosts

oracle.install.crs.config.networkInterfaceList=enp1s0:200.200.200.0:1,ens1:10.10.10.0:5,virbr0:192.168.122.0:3

网卡配置,
1 : PUBLIC
2 : PRIVATE
3 : DO NOT USE
4 : ASM
5 : ASM & PRIVATE

oracle.install.crs.configureGIMR=false

是否配置GIMR

oracle.install.asm.configureGIMRDataDG=false

 

oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE

选择使用ASM

oracle.install.crs.config.sharedFileSystemStorage.votingDiskLocations=

 

oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=

 

oracle.install.crs.config.useIPMI=false

是否使用IPMI

oracle.install.crs.config.ipmi.bmcUsername=

 

oracle.install.crs.config.ipmi.bmcPassword=

 

oracle.install.asm.SYSASMPassword=Oracle123 

ASM密码

oracle.install.asm.diskGroup.name=OCR 

指定OCR磁盘组名称

oracle.install.asm.diskGroup.redundancy=HIGH 

指定OCR冗余模式

oracle.install.asm.diskGroup.AUSize=4

指定AU

oracle.install.asm.diskGroup.FailureGroups=

 

oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/asm-disk-ocr01,,/dev/asm-disk-ocr02,,/dev/asm-disk-ocr03,,/dev/asm-disk-ocr04,,/dev/asm-disk-ocr05,

指定OCR的磁盘组的故障组列表

oracle.install.asm.diskGroup.disks=/dev/asm-disk-ocr01,/dev/asm-disk-ocr02,/dev/asm-disk-ocr03,/dev/asm-disk-ocr04,/dev/asm-disk-ocr05

指定OCR的磁盘

oracle.install.asm.diskGroup.quorumFailureGroupNames=

 

oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm* 

指定磁盘路径,保证能扫描到所有ASM磁盘即可

oracle.install.asm.monitorPassword=Oracle123

ASM密码

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

不安装配置AFD

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

不自动执行root.sh脚本

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=

 

 

## 编辑响应文件

su - grid

cd /u01/install

cat >> gi_install.rsp << EOF

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=db19scan.tzwdb.com

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=db19c-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=db19crac1:db19crac1vip,db19crac2:db19crac2vip,db19crac3:db19crac3vip,db19crac4:db19crac4vip

oracle.install.crs.config.networkInterfaceList=enp1s0:200.200.200.0:1,ens1:10.10.10.0:5,virbr0:192.168.122.0:3

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=Oracle123 

oracle.install.asm.diskGroup.name=OCR 

oracle.install.asm.diskGroup.redundancy=HIGH 

oracle.install.asm.diskGroup.AUSize=4

oracle.install.asm.diskGroup.FailureGroups=

oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/asm-disk-ocr01,,/dev/asm-disk-ocr02,,/dev/asm-disk-ocr03,,/dev/asm-disk-ocr04,,/dev/asm-disk-ocr05,

oracle.install.asm.diskGroup.disks=/dev/asm-disk-ocr01,/dev/asm-disk-ocr02,/dev/asm-disk-ocr03,/dev/asm-disk-ocr04,/dev/asm-disk-ocr05

oracle.install.asm.diskGroup.quorumFailureGroupNames=

oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm* 

oracle.install.asm.monitorPassword=Oracle123

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=

EOF

1)  静默安装GI

mv OPatch/ OPatch_bak

unzip /u01/install/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME

opatch version

cd /u01/install

unzip p36031453_190000_Linux-x86-64.zip

cd $ORACLE_HOME

export CV_ASSUME_DISTID=OL7

./gridSetup.sh -applyRU /u01/install/36031453/35940989 -ignorePrereqFailure -silent -responseFile /u01/install/gi_install.rsp

## 执行脚本

/u01/app/oraInventory/orainstRoot.sh

/u01/app/19.0.0/grid/root.sh

## 接着执行后续配置脚本

./gridSetup.sh -silent -executeConfigTools -responseFile /u01/install/gi_install.rsp

 

4.5.2 安装DB

1)  解压DB介质

su – oracle

unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

 

2)  编辑响应文件

DB响应文件模板位置

$ORACLE_HOME/install/response

响应文件简要说明

配置

说明

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0

系统默认值,不能修改

oracle.install.option=INSTALL_DB_SWONLY

选择只安装DB软件

UNIX_GROUP_NAME=oinstall

用户主组

INVENTORY_LOCATION=/u01/app/oraInventory 

软件清单目录

ORACLE_BASE=/u01/app/oracle 

BASE目录

ORACLE_HOME=/u01/app/oracle/product/19/db_1 

HOME目录

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=racdba

 

oracle.install.db.rootconfig.executeRootScript=false

不自动执行root.sh脚本

oracle.install.db.rootconfig.configMethod=

 

oracle.install.db.rootconfig.sudoPath=

 

oracle.install.db.rootconfig.sudoUserName=

 

oracle.install.db.CLUSTER_NODES=db19crac1,db19crac2,db19crac3,db19crac4

节点主机名

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

 

oracle.install.db.config.starterdb.globalDBName=

 

oracle.install.db.config.starterdb.SID=

 

oracle.install.db.ConfigureAsContainerDB=false

 

oracle.install.db.config.PDBName=

 

oracle.install.db.config.starterdb.characterSet=

 

oracle.install.db.config.starterdb.memoryOption=false

 

oracle.install.db.config.starterdb.memoryLimit=

 

oracle.install.db.config.starterdb.installExampleSchemas=false

 

oracle.install.db.config.starterdb.password.ALL=

 

oracle.install.db.config.starterdb.password.SYS=

 

oracle.install.db.config.starterdb.password.SYSTEM=

 

oracle.install.db.config.starterdb.password.DBSNMP=

 

oracle.install.db.config.starterdb.password.PDBADMIN=

 

oracle.install.db.config.starterdb.managementOption=DEFAULT

 

oracle.install.db.config.starterdb.omsHost=

 

oracle.install.db.config.starterdb.omsPort=0

 

oracle.install.db.config.starterdb.emAdminUser=

 

oracle.install.db.config.starterdb.emAdminPassword=

 

oracle.install.db.config.starterdb.enableRecovery=false

 

oracle.install.db.config.starterdb.storageType=

 

oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=

 

oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=

 

oracle.install.db.config.asm.diskGroup=

 

oracle.install.db.config.asm.ASMSNMPPassword=

 

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0

系统默认值,不能修改

oracle.install.option=INSTALL_DB_SWONLY

选择只安装DB软件

UNIX_GROUP_NAME=oinstall

用户主组

INVENTORY_LOCATION=/u01/app/oraInventory 

软件清单目录

 

##编辑响应文件

su - oracle

cd /u01/install

cat >> db_install.rsp << EOF

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=racdba

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=db19crac1,db19crac2,db19crac3,db19crac4

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

oracle.install.db.config.starterdb.globalDBName=

oracle.install.db.config.starterdb.SID=

oracle.install.db.ConfigureAsContainerDB=false

oracle.install.db.config.PDBName=

oracle.install.db.config.starterdb.characterSet=

oracle.install.db.config.starterdb.memoryOption=false

oracle.install.db.config.starterdb.memoryLimit=

oracle.install.db.config.starterdb.installExampleSchemas=false

oracle.install.db.config.starterdb.password.ALL=

oracle.install.db.config.starterdb.password.SYS=

oracle.install.db.config.starterdb.password.SYSTEM=

oracle.install.db.config.starterdb.password.DBSNMP=

oracle.install.db.config.starterdb.password.PDBADMIN=

oracle.install.db.config.starterdb.managementOption=DEFAULT

oracle.install.db.config.starterdb.omsHost=

oracle.install.db.config.starterdb.omsPort=0

oracle.install.db.config.starterdb.emAdminUser=

oracle.install.db.config.starterdb.emAdminPassword=

oracle.install.db.config.starterdb.enableRecovery=false

oracle.install.db.config.starterdb.storageType=

oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=

oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=

oracle.install.db.config.asm.diskGroup=

oracle.install.db.config.asm.ASMSNMPPassword=

EOF

 

3)  静默安装DB

su - oracle

cd $ORACLE_HOME

mv OPatch/ OPatch_bak

unzip /u01/install/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME

opatch version

export CV_ASSUME_DISTID=OL7

cd $ORACLE_HOME

./runInstaller -applyRU /u01/install/36031453/35940989 -silent -responseFile /u01/install/db_install.rsp -ignorePrereqFailure

## 执行脚本

/u01/app/oraInventory/orainstRoot.sh

/u01/app/oracle/product/19.0.0/dbhome_1/root.sh

 

4.5.3 安装官方建议补丁和OJVM补丁

1)  应用 OJVM补丁

## 将OJVM补丁包传到其它节点并解压

su – oracle

scp p36031453_190000_Linux-x86-64.zip db19crac2:/u01/install

cd /u01/install

unzip p36031453_190000_Linux-x86-64.zip

## 应用OJVM补丁

cd /u01/install/36031453/35926646

opatch prereq CheckConflictAgainstOHWithDetail -ph ./

$ORACLE_HOME/OPatch/opatch apply

opatch lspatches

35926646;OJVM RELEASE UPDATE: 19.22.0.0.240116 (35926646)

35967489;OCW RELEASE UPDATE 19.22.0.0.0 (35967489)

35943157;Database Release Update : 19.22.0.0.240116 (35943157)

OPatch succeeded.

2)  关闭集群

## 使用root用户执行如下脚本(所有节点都需要执行)

# /u01/app/19.0.0/grid/crs/install/rootcrs.sh -prepatch

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/db19crac1/crsconfig/crs_prepatch_apply_inplace_db19crac1_2024-03-28_09-44-41AM.log

Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [NORMAL]. The cluster active patch level is [3844574830].

2024/03/28 09:46:02 CLSRSC-4012: Shutting down Oracle Trace File Analyzer (TFA) Collector.

2024/03/28 09:47:14 CLSRSC-4013: Successfully shut down Oracle Trace File Analyzer (TFA) Collector.

2024/03/28 09:47:23 CLSRSC-347: Successfully unlock /u01/app/19.0.0/grid

2024/03/28 09:47:27 CLSRSC-671: Pre-patch steps for patching GI home successfully completed.

3)  备份GI及DB软件目录

tar -zxcf grid_home_bak_19c.tar.gz /u01/app/19.0.0/grid

tar -zxcf oracle_home_bak_19c.tar.gz /u01/app/oracle/product/19.0.0/dbhome_1

 

4)  GI应用ONEOFF补丁

## 解压ONEOFF补丁

su - grid

cd /u01/install

mkdir oneoff_grid

unzip -n p34672698_1922000DBRU_Linux-x86-64.zip -d ./oneoff_grid/

## 检测补丁冲突

su - grid

opatch prereq CheckConflictAgainstOHWithDetail -phBaseFile /u01/install/oneoff_grid/34672698/

## 调整oradism文件的权限(补丁34672698中REDME要求)

ls -ld /u01/app/19.0.0/grid/bin/oradism

-rwsr-x--- 1 root oinstall 147848 4月  17 2019 /u01/app/19.0.0/grid/bin/oradism

chown grid /u01/app/19.0.0/grid/bin/oradism

chmod 0750 /u01/app/19.0.0/grid/bin/oradism

ls -ld /u01/app/19.0.0/grid/bin/oradism

-rwxr-x--- 1 grid oinstall 147848 4月  17 2019 /u01/app/19.0.0/grid/bin/oradism

## 检查oui-patch.xml文件权限,必须为660

ll /u01/app/oraInventory/ContentsXML/oui-patch.xml

-rw-rw---- 1 grid oinstall 174 3月  27 17:07 /u01/app/oraInventory/ContentsXML/oui-patch.xml

## 安装GI ONEOFF补丁

su - grid

/u01/app/19.0.0/grid/OPatch/opatch apply -oh /u01/app/19.0.0/grid/ -local /u01/install/oneoff_grid/34672698/

## 安装成功后恢复oradism文件权限(补丁34672698中REDME要求)

ls -ld /u01/app/19.0.0/grid/bin/oradism

-rwxr-x--- 1 grid oinstall 145888 2月  26 14:57 /u01/app/19.0.0/grid/bin/oradism

chown root /u01/app/19.0.0/grid/bin/oradism

chmod 4750 /u01/app/19.0.0/grid/bin/oradism

ls -ld /u01/app/19.0.0/grid/bin/oradism

-rwsr-x--- 1 root oinstall 145888 2月  26 14:57 /u01/app/19.0.0/grid/bin/oradism

##检查补丁信息

opatch lspatches

34672698;ORA-00800  SOFT EXTERNAL ERROR, ARGUMENTS  [SET PRIORITY FAILED], [VKTM] , DISM(16)

36115038;TOMCAT RELEASE UPDATE 19.0.0.0.0 (36115038)

35967489;OCW RELEASE UPDATE 19.22.0.0.0 (35967489)

35956421;ACFS RELEASE UPDATE 19.22.0.0.0 (35956421)

35943157;Database Release Update : 19.22.0.0.240116 (35943157)

33575402;DBWLM RELEASE UPDATE 19.0.0.0.0 (33575402)

OPatch succeeded.

## 滚动执行上面步骤,依次应用其余节点GI ONEOFF补丁

 

5)  DB应用ONEOFF补丁

## 解压ONEOFF补丁

su - oracle

cd /u01/install

mkdir oneoff_oracle

unzip -n p35985645_1922000DBRU_Linux-x86-64.zip -d ./oneoff_oracle

unzip -n p35778398_1922000DBRU_Linux-x86-64.zip -d ./oneoff_oracle

unzip -n p34672698_1922000DBRU_Linux-x86-64.zip -d ./oneoff_oracle

unzip -n p35692839_1922000DBRU_Linux-x86-64.zip -d ./oneoff_oracle

unzip -n p34774667_1922000DBRU_Linux-x86-64.zip -d ./oneoff_oracle

unzip -n p29213893_1922000DBRU_Generic.zip      -d ./oneoff_oracle

cat >/u01/install/patch_oracle.txt<< EOF

/u01/install/oneoff_oracle/35985645

/u01/install/oneoff_oracle/35778398

/u01/install/oneoff_oracle/34672698

/u01/install/oneoff_oracle/35692839

/u01/install/oneoff_oracle/34774667

/u01/install/oneoff_oracle/29213893

EOF

## 检测补丁冲突

su - oracle

opatch prereq CheckConflictAgainstOHWithDetail -phBaseFile /u01/install/patch_oracle.txt

## 调整oradism文件的权限(补丁34672698中REDME要求)

ls -ld /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

-rwsr-x--- 1 root oinstall 147848 4月  17 2019 /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

chown oracle /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

chmod 0750 /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

ls -ld /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

-rwxr-x--- 1 oracle oinstall 147848 4月  17 2019 /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

## 检查oui-patch.xml文件权限,必须为660

ll /u01/app/oraInventory/ContentsXML/oui-patch.xml

-rw-rw---- 1 grid oinstall 174 3月  28 10:17 /u01/app/oraInventory/ContentsXML/oui-patch.xml

## 批量安装DB ONEOFF补丁

su – oracle

opatch napply -phBaseFile /u01/install/patch_oracle.txt -local -silent

## 安装成功后恢复oradism文件权限(补丁34672698中REDME要求)

ls -ld /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

-rwxr-x--- 1 oracle oinstall 145888 2月  26 14:57 /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

chown root /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism        

chmod 4750 /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

ls -ld /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

-rwsr-x--- 1 root oinstall 145888 2月  26 14:57 /u01/app/oracle/product/19.0.0/dbhome_1/bin/oradism

##检查补丁信息

opatch lspatches

35985645;EVEV-DEV2   DB CONTINUOUS RESTARTS WITH ORA-00600  INTERNAL ERROR CODE, ARGUMENTS  [KDIFIND KCBZ_OBJDCHK]

35778398;FURTHER FIXES FOR ROW CACHE ON TOP OF 34304965

35692839;LRGRHEXAPROVCLUSTER_LIVEMIG DB_WORKLOAD ORA-02002  AND ORA-600_IPC_RECREATE_QUE_2

34774667;TT23.1ASAN  GLOBAL-BUFFER-OVERFLOW IN PGA AT KWQALOCKQTWITHINFO

34672698;ORA-00800  SOFT EXTERNAL ERROR, ARGUMENTS  [SET PRIORITY FAILED], [VKTM] , DISM(16)

29213893;DBMS_STATS FAILING WITH ERROR ORA-01422 WHEN GATHERING STATS FOR USER$ TABLE

35926646;OJVM RELEASE UPDATE: 19.22.0.0.240116 (35926646)

35967489;OCW RELEASE UPDATE 19.22.0.0.0 (35967489)

35943157;Database Release Update : 19.22.0.0.240116 (35943157)

OPatch succeeded.

## 滚动执行上面步骤,依次应用其余节点DB ONEOFF补丁

6)  启动集群

/u01/app/19.0.0/grid/crs/install/rootcrs.sh -postpatch

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/db19crac1/crsconfig/crs_postpatch_apply_inplace_db19crac1_2024-03-28_11-31-43AM.log

2024/03/28 11:31:55 CLSRSC-329: Replacing Clusterware entries in file 'oracle-ohasd.service'

Oracle Clusterware active version on the cluster is [19.0.0.0.0]. The cluster upgrade state is [ROLLING PATCH]. The cluster active patch level is [3844574830].

2024/03/28 11:34:23 CLSRSC-4015: Performing install or upgrade action for Oracle Trace File Analyzer (TFA) Collector.

2024/03/28 11:34:24 CLSRSC-672: Post-patch steps for patching GI home successfully completed.

 

 

 

4.5.4 创建ASM磁盘组

## 创建磁盘组

su - grid

asmca -silent -createDiskGroup -diskGroupName DATA01 \

-diskList ‘/dev/asm-disk-data01’,’/dev/asm-disk-data02’ -redundancy NORMAL

asmca -silent -createDiskGroup -diskGroupName FRA01 -disk /dev/asm-disk-fra01 -redundancy EXTERNAL

 

4.5.5 创建数据库

1)  创建NON-CDB

## 编辑响应文件

参考Oracle自带的模板编辑,模板位置为$ORACLE_HOME/assistants/dbca

cd /u01/install

cat >>dbca_noncdb.rsp <<EOF

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0

gdbName=hxdb

sid=hxdb

databaseConfigType=RAC

RACOneNodeServiceName=

policyManaged=false

createServerPool=false

serverPoolName=

cardinality=

force=false

pqPoolName=

pqCardinality=

createAsContainerDatabase=false

numberOfPDBs=0

pdbName=

useLocalUndoForPDBs=true

pdbAdminPassword=

nodelist=db19crac1,db19crac2,db19crac3,db19crac4

templateName=/u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/templates/New_Database.dbt

sysPassword=Oracle123

systemPassword=Oracle123

serviceUserPassword=

emConfiguration=

emExpressPort=5500

runCVUChecks=FALSE

dbsnmpPassword=

omsHost=

omsPort=0

emUser=

emPassword=

dvConfiguration=false

dvUserName=

dvUserPassword=

dvAccountManagerName=

dvAccountManagerPassword=

olsConfiguration=false

datafileJarLocation=

datafileDestination=+DATA01/{DB_UNIQUE_NAME}/

recoveryAreaDestination=

storageType=ASM

diskGroupName=+DATA01/{DB_UNIQUE_NAME}/

asmsnmpPassword=

recoveryGroupName=

characterSet=AL32UTF8

nationalCharacterSet=AL16UTF16

registerWithDirService=false

dirServiceUserName=

dirServicePassword=

walletPassword=

listeners=LISTENER

skipListenerRegistration=false

variablesFile=

variables=

initParams=

sampleSchema=false

memoryPercentage=40

databaseType=MULTIPURPOSE

automaticMemoryManagement=false

totalMemory=0

EOF

## 静默创建数据库

dbca -silent -createDatabase -responseFile /u01/install/dbca_noncdb.rsp -ignorePreReqs

 

2)  创建CDB

## 编辑响应文件

参考Oracle自带的模板编辑,模板位置为$ORACLE_HOME/assistants/dbca

cd /u01/install

cat >>dbca_cdb.rsp <<EOF

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0

gdbName=hxdb

sid=hxdb

databaseConfigType=RAC

RACOneNodeServiceName=

policyManaged=false

createServerPool=false

serverPoolName=

cardinality=

force=false

pqPoolName=

pqCardinality=

createAsContainerDatabase=true

numberOfPDBs=1

pdbName=hxpdb

useLocalUndoForPDBs=true

pdbAdminPassword=Oracle123

nodelist=db19crac1,db19crac2,db19crac3,db19crac4

templateName=/u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc

sysPassword=Oracle123

systemPassword=Oracle123

serviceUserPassword=

emConfiguration=

emExpressPort=5500

runCVUChecks=FALSE

dbsnmpPassword=

omsHost=

omsPort=0

emUser=

emPassword=

dvConfiguration=false

dvUserName=

dvUserPassword=

dvAccountManagerName=

dvAccountManagerPassword=

olsConfiguration=false

datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/

datafileDestination=+DATA01/{DB_UNIQUE_NAME}/

recoveryAreaDestination=

storageType=ASM

diskGroupName=+DATA01/{DB_UNIQUE_NAME}/

asmsnmpPassword=

recoveryGroupName=

characterSet=AL32UTF8

nationalCharacterSet=AL16UTF16

registerWithDirService=false

dirServiceUserName=

dirServicePassword=

walletPassword=

listeners=LISTENER

skipListenerRegistration=false

variablesFile=

variables=

initParams=

sampleSchema=false

memoryPercentage=40

databaseType=MULTIPURPOSE

automaticMemoryManagement=false

totalMemory=0

EOF

## 静默创建数据库

dbca -silent -createDatabase -responseFile /u01/install/dbca_cdb.rsp -ignorePreReqs

 

五、配置优化

5  

5.1   多租户常规操作及配置

## 查看当前CDB中有哪些PDB,及查看状态

sqlplus / as sysdba

show pdbs;

## 设置PDB随CDB启动自启动

alter pluggable database all save state;

## 利用PDB$SEED克隆PDB

create pluggable database hxpdb2 admin user pdbadmin identified by Oracle123;

## 启停单个PDB

alter pluggable database hxpdb close immediate instances=all;

alter pluggable database hxpdb open instances=all;

## 启停所有的PDB

alter pluggable database all open instances=all;

alter pluggable database all close immediate instances=all;

## 切换到某个PDB下面

alter session set container=hxpdb;

 

 

5.2   数据库常规配置

1)  调整REDO

重做日志组最低要求每个线程在2组以上,为了保障 redo 日志文件安全,如果规划了多个 ASM 磁盘组,可将每组 redo 日志设置两个成员并分布到不同 ASM 磁盘组上,日志大小和组数根据业务高峰期redo 的切换频率为基准,官方建议切换间隔在15分钟左右。

本例只提供redo日志组添加和调整大小的示例,实际生产系统根据具体业务繁忙程度进行调整。

下面的操作实现将redo日志组从默认的2组增加到3组;并将日志的大小调整为1G;

## 查看当前的redo日志组情况

sqlplus / as sysdba

set lines 200 pages 200

select GROUP#,THREAD#,SEQUENCE#,BYTES,STATUS from v$log;

col member for a50

select * from v$logfile;

## 添加临时日志组

ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 25  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 26  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 27  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 28  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 3 GROUP 29  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 3 GROUP 30  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 4 GROUP 31  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 4 GROUP 32  size 1G;

## 切换日志,确保4个实例的 CURRENT 落在新建的日志组上

alter system archive log current;

alter system checkpoint;

## 删除默认的日志组

ALTER DATABASE DROP LOGFILE GROUP 1;

ALTER DATABASE DROP LOGFILE GROUP 2;

ALTER DATABASE DROP LOGFILE GROUP 3;

ALTER DATABASE DROP LOGFILE GROUP 4;

ALTER DATABASE DROP LOGFILE GROUP 5;

ALTER DATABASE DROP LOGFILE GROUP 6;

ALTER DATABASE DROP LOGFILE GROUP 7;

ALTER DATABASE DROP LOGFILE GROUP 8;

select GROUP#,THREAD#,SEQUENCE#,BYTES,STATUS from v$log;

## 添加新的日志组,每个实例6组,每组大小1G

ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 1  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 2  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 3  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 4  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 5  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 6  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 7  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 8  size 1G;

ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 9  size 1G;

......

select GROUP#,THREAD#,SEQUENCE#,BYTES,STATUS from v$log;

## 再次切换日志组,确保4个实例的CURRENT落在新建的日志组上

alter system archive log current;

alter system checkpoint;

## 删除之前新建临时日志组

ALTER DATABASE DROP LOGFILE GROUP 25;

ALTER DATABASE DROP LOGFILE GROUP 26;

ALTER DATABASE DROP LOGFILE GROUP 27;

ALTER DATABASE DROP LOGFILE GROUP 28;

ALTER DATABASE DROP LOGFILE GROUP 29;

ALTER DATABASE DROP LOGFILE GROUP 30;

ALTER DATABASE DROP LOGFILE GROUP 31;

ALTER DATABASE DROP LOGFILE GROUP 32;

select GROUP#,THREAD#,SEQUENCE#,BYTES,STATUS from v$log;

2)  调整系统默认表空间大小

调整 SYSTEM、UNDO、TEMP表空间的数据文件大小,初始大小建议20G起步,具体根据业务情况和数据量来决定。

## 调整数据文件大小

set line 200 pagesize 200

col file_name for a100

select file_name,file_id,tablespace_name from dba_data_files;

select file_name,file_id,tablespace_name from dba_temp_files;

alter database datafile 1 resize 20G;

alter database datafile 3 resize 20G;

alter database datafile 4 resize 20G;

alter database datafile 9 resize 20G;

alter database datafile 10 resize 20G;

alter database datafile 11 resize 20G;

alter database tempfile 1 resize 20G;

3)  PROFILE调整

## 调整密码过期期限为不限制

alter profile default limit PASSWORD_LIFE_TIME unlimited;

4)  AWR相关调整

以下调整只提供修改示例,具体根据实际业务情况进行调整

## 调整AWR快照收集间隔

将默认的AWR快照收集间隔修改为30分钟,保留期限为45天,这样便于跨月进行性能比对及性能问题排查。以下只是基于上面的基准做调整,生产系统可以根据以下调整示例自定义。

## AWR快照收集间隔调整

exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>60*24*45);

select *  from dba_hist_wr_control;

## 调整AWR报告中的TOPSQL条数为50条

exec dbms_workload_repository.modify_snapshot_settings(topnsql =>50);

## 创建AWR基线

exec dbms_workload_repository.create_baseline(start_snap_id => 68,

                                           end_snap_id   => 69,

                                           baseline_name => 'hxdb_baselin68-69',

                                           expiration    => 30);

5)  开启归档

## 设置归档路径

archive log list;

alter system set log_archive_dest_1='location=+ARCH';

## 关闭所有节点数据库

srvctl stop database -d hxdb -o immediate

## 启动一个实例到mount执行

startup mount

alter database archivelog;

alter database open;

archive log list;

## 打开其它节点数据库实例

srvctl start instance -d hxdb -i hxdb2 -o open

srvctl start instance -d hxdb -i hxdb3 -o open

srvctl start instance -d hxdb -i hxdb4 -o open

6)  配置sqlplus命令提示符

## 配置DB登陆的提示符

su - oracle

cat>>$ORACLE_HOME/sqlplus/admin/glogin.sql<<EOF

set linesize 200

set pagesize 999

define_editor=vi

set sqlprompt "_user'@'_connect_identifier> "

EOF

## 配置ASM登陆的提示符

su - grid

cat>>$ORACLE_HOME/sqlplus/admin/glogin.sql<<EOF

set linesize 200

set pagesize 999

define _editor=vi

set sqlprompt "_user'@'_connect_identifier> "

EOF

 

5.3   集群常规配置

1)  禁用HAIP

## 停止所有节点的CRS

crsctl stop crs -f

## 依次在每个节点中执行以下命令

crsctl start crs -excl -nocrs

crsctl stop res ora.asm -init

crsctl modify res ora.cluster_interconnect.haip -attr "ENABLED=0" -init

crsctl modify res ora.asm -attr \

"START_DEPENDENCIES='hard(ora.cssd,ora.ctssd)pullup(ora.cssd,ora.ctssd)weak(ora.drivers.acfs)',STOP_DEPENDENCIES='hard(intermediate:ora.cssd)'" -init

crsctl stop crs -f

## 依次在每个节点启动CRS

crsctl start crs

## 检查HAIP是否禁用

crsctl stat res -t -init 

确认cluster_interconnect.haip为offline

## 查看是否还有169.254开头的地址,如果没有了,说明已经禁用成功;如果还有169.254开头的地址,说明没有禁用成功需要进一步排查原因。

ifconfig -a

2)  调整OS Watcher

OSWatcher 是 oracle 提供的一个监控工具,它通过调用 OS 的的一些命令(例如 vmstat、iostat 等)来采集、存储 CPU/Memory/Swap/Disk IO/Nentwork 相关历史数据。

## 检查是否安装traceroute

rpm -qa traceroute

dnf install traceroute

## 检查是否安装OSW

ps -ef | grep -i osw

grid        5352       1  0 09:32 ?        00:00:08 /bin/sh ./OSWatcher.sh 30 48 /bin/gzip /u01/app/grid/oracle.ahf/data/repository/suptools/db19crac1/oswbb/grid/archive

grid        5695    5352  0 09:33 ?        00:00:02 /bin/sh ./OSWatcherFM.sh 48 /u01/app/grid/oracle.ahf/data/repository/suptools/db19crac1/oswbb/grid/archive

root      319931    6858  0 16:01 pts/0    00:00:00 grep --color=auto osw

## 部署私网监控脚本

注:ahf 默认自带私网监控,但是只监控当前节点私网 ip,依然需要配置所有节点私网监控

cat > /u01/app/grid/oracle.ahf/data/repository/suptools/`hostname|tr 'A-Z' 'a-z'`/oswbb/grid/oswbb/private.net <<EOF

#Linux Example

echo "private_net osw*******"\`date\`

traceroute -r -F db19crac1prv

traceroute -r -F db19crac2prv

traceroute -r -F db19crac3prv

traceroute -r -F db19crac4prv

rm locks/lock.file

EOF

chmod 755 /u01/app/grid/oracle.ahf/data/repository/suptools/`hostname|tr 'A-Z' 'a-z'`/oswbb/grid/oswbb/private.net

## 重启oswbb,采集间隔10s,保留192小时,采用 gzip 压缩

tfactl stop oswbb

tfactl start oswbb 10 192 gzip

## 验证是否成功监控到私网信息

cd /u01/app/grid/oracle.ahf/data/repository/suptools/`hostname|tr 'A-Z' 'a-z'`/oswbb/grid/archive/oswprvtnet

cat *.dat

private_net osw*******Wed Apr 3 16:07:45 CST 2024

traceroute to db19crac1prv (10.10.10.60), 30 hops max, 60 byte packets

 1  db19crac1prv (10.10.10.60)  0.074 ms  0.014 ms  0.021 ms

traceroute to db19crac2prv (10.10.10.61), 30 hops max, 60 byte packets

 1  db19crac2prv (10.10.10.61)  0.668 ms  0.435 ms  0.444 ms

traceroute to db19crac3prv (10.10.10.62), 30 hops max, 60 byte packets

 1  db19crac3prv (10.10.10.62)  0.616 ms  0.508 ms  0.439 ms

traceroute to db19crac4prv (10.10.10.63), 30 hops max, 60 byte packets

 1  db19crac4prv (10.10.10.63)  0.556 ms  0.477 ms  0.420 ms

 

5.4   自动作业任务调整

1)  禁用SQL Tuning

exec dbms_auto_task_admin.disable(client_name => 'sql tuning advisor',operation => NULL,window_name => NULL);

2)  禁用自动段顾问

exec dbms_auto_task_admin.disable(client_name => 'auto space advisor',operation => NULL,window_name => NULL);

3)  调整自动任务作业窗口

如果默认的自动任务窗口和业务时间段有冲突,调整自动任务运行的窗口为其它时间段,这样窗口期为业务低峰期,对系统影响最小,下面配置是参考,请根据实际需要调整。

## 查看当前自动任务窗口

数据库自带的自动任务作业窗口开启时间为:工作日22点到凌晨两点、周末22点到第二天18点

set lines 222 pages 999

col WINDOW_NAME for a20

col REPEAT_INTERVAL for a70

col DURATION for a15

select window_name,repeat_interval,duration,enabled from dba_scheduler_windows;

## 查看当前自动任务窗口

调整窗口期为每天的 2 点至6 点,2 是 2 点开始的意思,240 是持续 240 分钟(4 小时)

BEGIN

dbms_scheduler.set_attribute(name=>'SYS.MONDAY_WINDOW',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=MON;byhour=2;byminute=0;bysecond=0');

dbms_scheduler.set_attribute(name=>'SYS.TUESDAY_WINDOW',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=TUE;byhour=2;byminute=0;bysecond=0');

dbms_scheduler.set_attribute(name=>'SYS.WEDNESDAY_WINDOW',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=WED;byhour=2;byminute=0;bysecond=0');

dbms_scheduler.set_attribute(name=>'SYS.THURSDAY_WINDOW',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=THU;byhour=2;byminute=0;bysecond=0');

dbms_scheduler.set_attribute(name=>'SYS.FRIDAY_WINDOW',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=FRI;byhour=2;byminute=0;bysecond=0');

dbms_scheduler.set_attribute(name=>'SYS.SATURDAY_WINDOW',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=SAT;byhour=2;byminute=0;bysecond=0');

dbms_scheduler.set_attribute(name=>'SYS.SUNDAY_WINDOW',attribute=>'REPEAT_INTERVAL',value=>'freq=daily;byday=SUN;byhour=2;byminute=0;bysecond=0');

dbms_scheduler.set_attribute(name=>'SYS.MONDAY_WINDOW',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));

dbms_scheduler.set_attribute(name=>'SYS.TUESDAY_WINDOW',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));

dbms_scheduler.set_attribute(name=>'SYS.WEDNESDAY_WINDOW',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));

dbms_scheduler.set_attribute(name=>'SYS.THURSDAY_WINDOW',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));

dbms_scheduler.set_attribute(name=>'SYS.FRIDAY_WINDOW',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));

dbms_scheduler.set_attribute(name=>'SYS.SATURDAY_WINDOW',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));

dbms_scheduler.set_attribute(name=>'SYS.SUNDAY_WINDOW',attribute=>'DURATION',value=>numtodsinterval(240, 'minute'));

END;

/

4)  关闭 ORACLE_OCM 任务

 

BEGIN

   dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB');

   dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB');

END;

/

 

5.5   RMAN配置

调整RMAN的retention配置(有效备份保留xx天), 并开启控制文件自动备份,开启备份优化,修改控制文件自动备份位置到共享存储

rman target /

configure retention policy to recovery window of xx days;

configure controlfile autobackup on;

configure backup optimization on;

configure snapshot controlfile name to '+ARCH/snapcf_hxdb.f';

 

5.6   数据库参数初始化

## 查询隐含参数

set linesize 210

col "Parameter" format a30

col "Session Value" format a20

col "Instance Value" format a20

col "Desc" format a70

select a.ksppinm "Parameter", c.ksppstvl "Instance Value", ksppdesc "Desc"

from sys.x$ksppi a, sys.x$ksppcv b, sys.x$ksppsv c

where a.indx = b.indx

and a.indx = c.indx

and substr(a.ksppinm, 1, 1) = '_' and a.ksppinm like '_PX%'

## 修改参数基线

create pfile='/home/oracle/hxdb_pfile.ora' from spfile;

alter system set "_ash_size"=254M scope=spfile;

alter system set "_cleanup_rollback_entries"=2000 scope=spfile;

alter system set "_cursor_obsolete_threshold"=1024 scope=spfile;

alter system set "_clusterwide_global_transactions"=FALSE scope=spfile;

alter system set "_datafile_write_errors_crash_instance"=FALSE scope=spfile;

alter system set "_drop_stat_segment"=1 scope=spfile sid='*';

alter system set "_lm_drm_disable"=5 scope=spfile;

alter system set "_log_segment_dump_parameter"=FALSE scope=spfile;

alter system set "_log_segment_dump_patch"=FALSE scope=spfile;

alter system set "_rollback_segment_count"=500 scope=spfile;

alter system set "_securefiles_concurrency_estimate"=50 scope=spfile;

alter system set "_sys_logon_delay"=0 scope=spfile;

alter system set "_autotask_max_window"=23040 scope=spfile;

alter system set "_partition_large_extents"=FALSE scope=spfile;

alter system set "_use_adaptive_log_file_sync"=FALSE scope=spfile;

##alter system set optimizer_adaptive_plans=FALSE scope=spfile;

alter system set audit_sys_operations=FALSE scope=spfile;

alter system set enable_ddl_logging=TRUE scope=spfile;

alter system set fast_start_mttr_target=300 scope=spfile;

alter system set max_dump_file_size='2048M' scope=spfile;

alter system set open_links=10 scope=spfile;

alter system set open_links_per_instance=10 scope=spfile;

alter system set parallel_execution_message_size=32768 scope=spfile;

alter system set recovery_parallelism=8 scope=spfile;

alter system set undo_retention=10800 scope=spfile;

alter system set control_file_record_keep_time=31 scope=spfile;

alter system set db_files=2000 scope=spfile;

alter system set parallel_min_servers=8 scope=spfile;

alter system set event='28401 trace name context forever,level 1','10949 trace name context forever,level 1' scope=spfile;

--10949(12c):Bug 18498878 - medium size tables do not cached consistently (文档 ID 18498878.8)

--28401:High 'library cache lock' Wait Time Due to Invalid Login Attempts (文档 ID 1309738.1)

## 下面参数根据实际内存情况设置

alter system set sga_max_size=30G scope=spfile;

alter system set shared_pool_size=6G scope=spfile;

alter system set java_pool_size=1G scope=spfile;

alter system set large_pool_size=1G scope=spfile;

## 下面参数根据cpu count设置

col cpu_count new_value cpu_count noprint;

select case when ceil(value/2) < 16 then 16

else ceil(value/2)

end cpu_count

from v$parameter where name='cpu_count';

alter system set parallel_max_servers=&cpu_count scope=spfile;

alter system set job_queue_processes=&cpu_count scope=spfile;

## 禁用inmemory

alter system set inmemory_query=DISABLE scope=spfile;

 

5.7   ASM参数初始化

默认的ASM实例内存管理方式为AMM,我们将调整为ASMM管理方式

su - grid

sqlplus / as sysasm

create pfile='/home/grid/asm_pfile.ora' from spfile;

alter system set sga_max_size=3072M scope=spfile sid='*';

alter system set sga_target=3072M scope=spfile sid='*';

alter system set pga_aggregate_target=1024M scope=spfile sid='*';

alter system set memory_target=0 scope=spfile sid='*';

alter system set memory_max_target=0 scope=spfile sid='*';

alter system reset memory_max_target scope=spfile sid='*';

alter system set processes=2000 scope=spfile sid='*';

 

六、清理集群软件

## 强制关闭集群

crsctl stop crs -f

## 检查集群相关进程

ps -ef | grep grid

ps -ef | grep oracle

## 删除文件

rm -rf /etc/ora*

rm -rf /opt/ora*

rm -rf /usr/local/ora*

rm -rf /opt/ORCLfmap

rm -rf /etc/oraInst.loc

rm -rf /opt/ORCLfmap

rm -f /etc/init.d/init.cssd

rm -f /etc/init.d/init.crs

rm -f /etc/init.d/init.crsd

rm -f /etc/init.d/init.evmd

rm -f /etc/rc2.d/K96init.crs

rm -f /etc/rc2.d/S96init.crs

rm -f /etc/rc3.d/K96init.crs

rm -f /etc/rc3.d/S96init.crs

rm -f /etc/rc5.d/K96init.crs

rm -f /etc/rc5.d/S96init.crs

rm -rf /etc/oracle/scls_scr

rm -f /etc/inittab.crs

rm -f /etc/ohasd

rm -f /etc/oraInst.loc

rm -rf /tmp/.oracle

rm -rf /tmp/ora*

rm -rf /var/tmp/.oracle

rm -rf /tmp/CVU*

rm -rf /tmp/Ora*

rm -rf /home/grid/.oracle

rm -rf /usr/app/*

rm -rf /etc/init.d/init.ohasd

rm -rf /usr/local/bin/dbhome

rm -rf /usr/local/bin/oraenv

rm -rf /usr/local/bin/coraenv

rm -rf /etc/oratab

rm -rf /tmp/*oracle*

rm -rf /tmp/OraInst*

rm -rf /etc/systemd/system/oracle*

rm -rf /u01/app

## 清理磁盘头信息

dd if=/dev/zero of=/dev/asm-disk-data01 bs=1024 count=5000

dd if=/dev/zero of=/dev/asm-disk-data02 bs=1024 count=5000

dd if=/dev/zero of=/dev/asm-disk-fra01 bs=1024 count=5000

dd if=/dev/zero of=/dev/asm-disk-ocr01 bs=1024 count=5000

dd if=/dev/zero of=/dev/asm-disk-ocr02 bs=1024 count=5000

dd if=/dev/zero of=/dev/asm-disk-ocr03 bs=1024 count=5000

dd if=/dev/zero of=/dev/asm-disk-ocr04 bs=1024 count=5000

dd if=/dev/zero of=/dev/asm-disk-ocr05 bs=1024 count=5000

##检查磁盘头是否清除

hexdump -n 1024 -C /dev/asm-disk-data01

hexdump -n 1024 -C /dev/asm-disk-data02

hexdump -n 1024 -C /dev/asm-disk-fra01

hexdump -n 1024 -C /dev/asm-disk-ocr01

hexdump -n 1024 -C /dev/asm-disk-ocr02

hexdump -n 1024 -C /dev/asm-disk-ocr03

hexdump -n 1024 -C /dev/asm-disk-ocr04

hexdump -n 1024 -C /dev/asm-disk-ocr05

## 重启操作系统

reboot

## 重新创建相应目录并授权

mkdir -p /u01/app/19.0.0/grid

mkdir -p /u01/app/grid

mkdir -p /u01/app/oraInventory

mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

chown -R grid:oinstall /u01/app

chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01/app

## 返回到安装步骤重新安装

 

 

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

评论

awesome
暂无图片
10天前
评论
暂无图片 0
查询ORACLE MOS认证列表,查询到Oracle Database 19.0.0.0已在OEL8.X上通过认证;UEK内核版本大于5.4.17;RHCK内核版本大于4.18.0。 请问这个在哪里看? 有ID编号吗?
10天前
暂无图片 点赞
评论