环境信息
主机名 | victorrhel701 | victorrhel702 |
IP | 192.168.1.71 | 192.168.1.72 |
操作系统 | redhat Linux 7.7 | redhat Linux 7.7 |
是否虚拟机 | 是 | 是 |
DB版本 | 19.3 | 19.3 |
DBRU | 19.22.0.0.240116 | 19.22.0.0.240116 |
GI 版本 | 19.3 | 19.3 |
GIRU | 19.22.0.0.240116 | 19.22.0.0.240116 |
内存 | 16G | 16G |
CPUs | 2 | 2 |
平台认证
使用support.oracle.com的Certifications查看数据库的认证平台:
Database 19c目前认证的Oracle Enterprise Linux/Red Hat Enterprise Linux平台版本包括 redhat Linux 7。
安装前准备
数据库规范化
GI/RDBMS资源配置规范
RAM | 至少12GB。 |
/tmp | 至少1GB。 |
SWAP | 至少4GB RAM < 16GB, SWAP = RAM大小。 RAC >=16GB, SWAP = 16GB。 |
Run Level | 3/5 |
Cluster Name | 小于等于15个字符,可使用字母,数字和横线(-),以字母开头,建议使用小写字母。 |
GRID HOME + RDBMS HOME | 建议大于等于100GB。 |
OCR磁盘组 | 建议使用normal冗余,每个磁盘5GB。 |
MGMT磁盘组 | 如果选择安装MGMT,外部冗余至少40GB。 |
RAM | 至少12GB。 |
/tmp | 至少1GB。 |
用户及组管理规范
用户组配置规范说明:用户配置规范说明:
oinstall | gid=54421,用于安装Oracle数据库软件 | *必建* |
dba | gid=54322,用于管理Oracle数据库 | *必建* |
oper | gid=54323,用于对Oracle数据库做维护操作 | *必建* |
backupdba | gid=54324,用于管理Oracle数据库备份 | *数据库版本是19c,需要创建* |
dgdba | gid=54325,用于管理Dtataguard数据库 | *数据库版本是19c,需要创建* |
kmdba | gid=54326,用于管理数据库密钥 | *数据库版本是19c,需要创建* |
asmdba | gid=54327,用于管理ASM实例 | *如果使用ASM,需要创建* |
asmoper | gid=54328,用于操作ASM实例 | *如果使用ASM,需要创建* |
asmadmin | gid=54329,用于安装ASM软件 | *如果使用ASM,需要创建* |
racdba | gid=54330,用于管理群集数据库 | *数据库版本是19c,需要创建* |
oinstall | gid=54421,用于安装Oracle数据库软件 | *必建* |
用户配置规范说明:
Name | UID | Prim Group | Auxiliary group |
oracle | 54321 | oinstall | dba,oper,asmdba,backupdba,dgdba,kmdba,racdba |
grid | 54322 | oinstall | asmoper,asmadmin,asmdba,racdba |
软件介质使用规范
安装前需准备以下安装介质:
GRID安装介质:LINUX.X64_193000_grid_home.zip
RDBMS安装介质:LINUX.X64_193000_db_home.zip
下载地址:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c
验证介质包完整性:
sha256sum LINUX.X64_193000_db_home.zip
sha256sum LINUX.X64_193000_grid_home.zip
Patch:
- p6880880_190000_Linux-x86-64.zip (OPatch)
- RU(GI和RDBMS季度补丁)。
- OJVM (OJVM补丁)
官网sha256sum值:
https://www.oracle.com/hk/database/technologies/oracle19c-linux-downloads.html
- LINUX.X64_193000_db_home.zip
- Oracle Database 19c (19.3) for Linux x86-64
sha256sum - ba8329c757133da313ed3b6d7f86c5ac42cd9970a28bf2e6233f3235233aa8d8
- LINUX.X64_193000_grid_home.zip
- Oracle Database 19c Grid Infrastructure (19.3) for Linux x86-64
sha256sum - d668002664d9399cf61eb03c0d1e3687121fc890b1ddd50b35dcbe13c5307d2e
注意:
- 确保下载的安装介质和官方网站上的sha256sum值对应,以确保安装包的完整性和安全性。
安装目录规范
安装目录规划原则:
- 根据用户规范创建用于Oracle数据库软件安装的目录
目录具体规划如下:
- 基于本地存储上,新建文件系统,大小:100GB
- RAC要求各节点目录名一致
Oracle Base目录:/oracle/app/oracle
Oracle Grid目录:/oracle/app/19.0.0/grid
Oracle Home目录:/oracle/app/oracle/product/19.0.0/dbhome_1
磁盘组配置规范
ASM磁盘名称 | ASM磁盘容量/GB | ASM磁盘组个数 | 用户与组属性 | 用途说明 |
OCR | 10 | 3 | grid:asmadmin | 用于存放OCR和Voting Disk |
DATA | 100 | 1 | grid:asmadmi | 用于存放数据库数据文件 |
ARCH | 100 | 1 | grid:asmadmi | 用于存放归档日志文件 |
MGMT | 100 | 1 | grid:asmadmi | 用于存放MGMT数据库数据文件 |
网络配置规范
Identity | Node Name | Type | IP Address | Resolved By |
Node 1 Public | victorrhel701 | Public | 192.168.1.71 | hosts file |
Node 1 Private | victorrhel701priv | Private | 10.10.10.71 | hosts file |
Node 1 VIP | victorrhel701vip | Virtual | 192.168.1.73 | hosts file |
Node 2 Public | victorrhel702 | Public | 10.20.3.141 | hosts file |
Node 2 Private | victorrhel702priv | Private | 10.10.10.72 | hosts file |
Node 2 VIP | victorrhel702vip | Virtual | 192.168.1.74 | hosts file |
SCAN IP | victoroelscan | Virtual | 192.168.1.75 | hosts file |
所有节点上网卡名和对应关系必须一致
数据库配置规范
选项 | 描述 |
数据库版本 | 19.3.0.0 |
数据库监听端口 | 1521 |
数据库字符集 | AL32UTF8 |
国家语言字符集 | AL16UTF16 |
数据库块大小 | 8K |
检查OS版本及内核版本
检查各个节点的OS版本和内核版本,确保满足19c的认证平台版本。而且,两个RAC的各个节点要保持一致的OS版本。
# cat /etc/system-release
Red Hat Enterprise Linux Server release 7.7 (Maipo)
# uname -a
Linux victorrhel701 3.10.0-1062.el7.x86_64 #1 SMP Thu Jul 18 20:25:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
检查OS运行级别
OS需要运行在3/5级别。
victorrhel701:~ # runlevel
N 5
victorrhel702:~ # runlevel
N 5
关闭防火墙
- 在2 个节点上关闭/禁用防火墙
# systemctl stop firewalld
# systemctl disable firewalld
检查防火墙状态
# systemctl status firewalld
# systemctl is-enabled firewalld
Selinux 禁用
- 在2 个节点上修改
#vi /etc/selinux/config
修改SELINUX=disabled
主机名配置
设置主机名,注意:主机名以字母为首。
# hostnamectl set-hostname victorrhel701
# hostnamectl set-hostname victorrhel702
通过hostnamectl status命令查看主机名信息。
[root@victorrhel701 ~]# hostnamectl status
Static hostname: victorrhel701
Icon name: computer-vm
Chassis: vm
Machine ID: d855ae0a451849a6971d913ecc91bed3
Boot ID: 7cce7ea1c5e3417fac5f9b7da62fb51c
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.7 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.7:GA:server
Kernel: Linux 3.10.0-1062.el7.x86_64
Architecture: x86-64
[root@victorrhel702 ~]# hostnamectl status
Static hostname: victorrhel702
Icon name: computer-vm
Chassis: vm
Machine ID: ac12df556b014b45a28060b4ab487a42
Boot ID: 20f41606a12e449983d518c3681a8a9b
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.7 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.7:GA:server
Kernel: Linux 3.10.0-1062.el7.x86_64
Architecture: x86-64
配置/etc/hosts
- 在2 个节点上修改/etc/hosts
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#public ip
192.168.1.71 victorrhel701
192.168.1.72 victorrhel702
# private ip
10.10.10.71 victorrhel701priv
10.10.10.72 victorrhel702priv
# vip
192.168.1.73 victorrhel701vip
192.168.1.74 victorrhel702vip
# scan ip
192.168.1.75 victoroelscan
设置OS时区
在安装GRID之前,一定要先修改好OS时区,否则GRID将引用一个错误的OS时区,导致DB的时区,监听的时区等不正确。
- 修改OS时区:
[root@victorrhel701 ~]# timedatectl set-timezone "Asia/Shanghai"
[root@victorrhel702 ~]# timedatectl set-timezone "Asia/Shanghai"
- 查看OS时区:
[root@victorrhel701 ~]# timedatectl status
Local time: 六 2024-01-13 00:55:41 CST
Universal time: 五 2024-01-12 16:55:41 UTC
RTC time: 五 2024-01-12 16:55:41
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@victorrhel702 ~]# timedatectl status
Local time: 六 2024-01-13 00:54:04 CST
Universal time: 五 2024-01-12 16:54:04 UTC
RTC time: 五 2024-01-12 16:54:04
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
检查内存和SWAP大小
配置 Swap分区
使用 fallocate 命令快速分配 16 GB 的文件作为交换空间。
[root@victorrhel701 ~]# fallocate -l 16G /swapfile
出于安全考虑,交换文件的权限应该限制为只有 root 用户才能访问。
[root@victorrhel701 ~]# chmod 600 /swapfile
将创建的文件设置为交换空间。
[root@victorrhel701 ~]# mkswap /swapfile
正在设置交换空间版本 1,大小 = 16 GiB (17179865088 个字节)
启用交换空间
[root@victorrhel701 ~]# swapon /swapfile
使交换空间永久有效
为了在系统重启后交换空间依然有效,需要将其添加到 /etc/fstab 文件中。
[root@victorrhel701 ~]# echo '/swapfile none swap sw 0 0' |tee -a /etc/fstab
节点 2 重复以上步骤。
可以通过/proc/meminfo或free命令查看OS当前的可用内存和Swap信息。
确保满足资源配置规范
[root@victorrhel701 ~]# egrep 'Mem|Swap' /proc/meminfo
MemTotal: 15867524 kB
MemFree: 7829496 kB
MemAvailable: 14216300 kB
SwapCached: 0 kB
SwapTotal: 16777212 kB
SwapFree: 16777212 kB
[root@victorrhel702 ~]# egrep 'Mem|Swap' /proc/meminfo
MemTotal: 15867524 kB
MemFree: 14698640 kB
MemAvailable: 14847780 kB
SwapCached: 0 kB
SwapTotal: 16777212 kB
SwapFree: 16777212 kB
检查安装目录及共享段大小
确保满足资源配置规范
[root@victorrhel701 ~] # df -h /oracle /tmp /dev/shm
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-oraclelv 98G 61M 97G 1% /oracle
/dev/mapper/ol-root 67G 22G 46G 32% /
tmpfs 7.6G 0 7.6G 0% /dev/shm
[root@victorrhel702 ~] # df -h /oracle /tmp /dev/shm
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-oraclelv 98G 61M 97G 1% /oracle
/dev/mapper/ol-root 67G 22G 46G 32% /
tmpfs 7.6G 0 7.6G 0% /dev/shm
关闭透明大页
ALERT: Disable Transparent HugePages on SLES11, RHEL6, RHEL7, RHEL8, OL6, OL7, OL8 and UEK2 and above (文档 ID 1557478.1)
- 修改rc.local 在最后面追加以下命令,并重启服务器生效
[root@victorrhel701 ~]# vi /etc/rc.d/rc.localif
test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
- 重启后,使用以下命令确认透明大页已被禁用。
[root@victorrhel701 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@victorrhel701 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always defer defer+madvise madvise [never]
[root@victorrhel702 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@victorrhel702 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always defer defer+madvise madvise [never]
这些命令的输出应该是 never。
检查磁盘I/O调度
为了有更好的性能,调整I/O调度策略为deadline,可以帮助提高对 I/O 请求的响应时间,特别是在数据库等 I/O 密集型应用中。
- 编辑grub
[root@victorrhel701 ~]# vi /etc/default/grub
[root@victorrhel702 ~]# vi /etc/default/grub
- 在 GRUB_CMDLINE_LINUX 字符串中添加 elevator=deadline。例如:
GRUB_CMDLINE_LINUX="crashkernel=1G-64G:448M,64G-:512M rd.lvm.lv=ol/root rhgb quiet elevator=deadlin"
- 更新 grub配置
[root@victorrhel701 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done
[root@victorrhel702 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done
- 使用以下命令查看I/O调度策略。
[root@victorrhel701 ~]# for i in b c d e f g;do
> cat /sys/block/sd${i}/queue/scheduler
> done
noop deadline [cfq]
noop deadline [cfq]
noop deadline [cfq]
noop deadline [cfq]
noop deadline [cfq]
noop deadline [cfq]
[root@victorrhel702 ~]# for i in b c d e f g;do
> cat /sys/block/sd${i}/queue/scheduler
> done
noop deadline [cfq]
noop deadline [cfq]
noop deadline [cfq]
noop deadline [cfq]
noop deadline [cfq]
noop deadline [cfq]
配置SSH timeout
为了防止在在"AttachHome"操作期间,SSH连接中断,配置SSH daemon的超时时间为unlimited。
[root@victorrhel701 ~]# vi /etc/ssh/sshd_config
LoginGraceTime 0
[root@victorrhel702 ~]# vi /etc/ssh/sshd_config
LoginGraceTime 0
[root@victorrhel701 ~]# systemctl restart sshd
[root@victorrhel702 ~]# systemctl restart sshd
检查需求软件包
参考文档:
- Oracle Document Install Guide for Linux
- Requirements for Installing Oracle Database 19c on OL7 or RHEL7 64-bit (x86-64) (Doc ID 2551169.1)
在OL9 or RHEL9 64-bit,需要安装以下软件包或更高版本:
bc
bc
binutils
compat-libcap1
compat-libstdc++-33
elfutils-libelf
elfutils-libelf-devel
fontconfig-devel
glibc
glibc-devel
ksh
libaio
libaio-devel
libX11
libXau
libXi
libXtst
libXrender
libXrender-devel
libgcc
librdmacm-devel
libstdc++
libstdc++-devel
libxcb
make
net-tools (for Oracle RAC and Oracle Clusterware)
nfs-utils (for Oracle ACFS)
python (for Oracle ACFS Remote)
python-configshell (for Oracle ACFS Remote)
python-rtslib (for Oracle ACFS Remote)
python-six (for Oracle ACFS Remote)
targetcli (for Oracle ACFS Remote)
smartmontools
sysstat
Note:
If you intend to use 32-bit client applications to access 64-bit servers, then you must also install the latest 32-bit versions of the packages listed in this table.
- 使用以下命令进行软件包检查:
[root@victorrhel701 ~]# rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" \
bc \
binutils \
compat-openssl11 \
elfutils-libelf \
fontconfig \
glibc \
glibc-devel \
ksh \
libaio \
libasan \
liblsan \
libX11 \
libXau \
libXi \
libXrender \
libXtst \
libxcrypt-compat \
libgcc \
libibverbs \
libnsl \
librdmacm \
libstdc++ \
libxcb \
libvirt-libs \
make \
policycoreutils \
policycoreutils-python-utils \
smartmontools \
sysstat | grep 'not installed'
- 配置yum源
- 挂载ISO 镜像
[root@victorrhel701 ~]# mkdir /mnt/oracleiso
[root@victorrhel701 ~]# mount /dev/sr0 /mnt/oracleiso
mount: /mnt/oracleiso: WARNING: source write-protected, mounted read-only.
- 创建新的 repo 文件
[root@victorrhel701 ~]# vi /etc/yum.repos.d/oracleiso.repo
[server]
name=OEL7
baseurl=file:///mnt/oracleiso/
enable=1
gpgcheck=0
- 使用 yum安装所需 rpm 包
yum install -y bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
fontconfig-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
libgcc \
gcc-c++ \
librdmacm-devel \
libstdc++ \
libstdc++-devel \
libxcb \
make \
net-tools \
nfs-utils \
python \
python-configshell \
python-rtslib \
python-six \
targetcli \
smartmontools \
sysstat
- compat-libstdc-可以手动上传
[root@victorrhel701 ~]# rpm -ivh compat-libstdc-33-3.2.3-72.el7.x86_64.rpm
warning: compat-libstdc-33-3.2.3-72.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:compat-libstdc++-33-3.2.3-72.el7 ################################# [100%]
- 节点 2 重复上述操作
NUMA设置
在LINUX7.X中,官方文档已说明开启NUMA对系统有影响。
官方文档:Requirements for Installing Oracle Database 19c on OL7 or RHEL7 64-bit (x86-64) (Doc ID 2551169.1)
It is observed there are hang issues in RHEL 7 with many CPU cores and more RAM, due NUMA was enabled. As a work around it is recommended to turn off NUMA.
It is also strongly advised to disable NUMA Balancing Feature,in /etc/sysctl.conf
kernel.numa_balancing = 0
Note - This is already implemented in UEK 4.1.12-117.el7uek.x86_64 & later
# rpm -q --changelog kernel-uek-4.1.12-117.el7uek.x86_64 | grep 26798697
- uek-rpm: disable CONFIG_NUMA_BALANCING_DEFAULT_ENABLED (Fred Herard)
[Orabug: 26798697]
# sysctl kernel.numa_balancing
kernel.numa_balancing = 0
除非主机明确要开启NUMA,一般建议关闭。
从LINUX8.X开始,官方文档说明开启NUMA对系统无影响.
NUMA can be turned ON.No issues reported on OL/RHEL 9 when NUMA is ON.
官方文档:Requirements for Installing Oracle Database/Client 19c (19.19 or higher) on OL9 or RHEL9 64-bit (x86-64) (Doc ID 2982833.1)
Requirements for Installing Oracle Database/Client 19c on OL8 or RHEL8 64-bit (x86-64) (Doc ID 2668780.1)
禁用avahi-daemon
avahi-daemon 是 Linux 系统上的一个服务,它实现了 Zeroconf 网络配置协议,也称为 Bonjour。它允许计算机在没有手动网络配置的情况下自动发现网络中的服务和主机。然而,在 Oracle Real Application Clusters (RAC) 环境中,通过发送和监听网络上的 mDNS (Multicast DNS) 包来工作。这可能会干扰 Oracle RAC 使用的网络,尤其是在集群互连网络中。
已知avahi-daemon会导致RAC的节点重启,在最新的CVU里面已经加入了对avahi-daemon的校验。
# 查看avahi-daemon状态,如果为active,则关闭。
# systemctl status avahi-daemon
● avahi-dnsconfd.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
# systemctl status avahi-daemon
● avahi-daemon.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
# 关闭avahi-daemon服务命令。
# systemctl stop avahi-daemon
# systemctl disable avahi-daemon
禁用ASLR
可以通过以下命令确认ASLR是否使用:
[root@victorrhel701 ~]# /sbin/sysctl -a | grep randomize
kernel.randomize_va_space = 2
如果结果显示为非0的值,说明ASLR正在使用,建议按照以下方式关闭ASLR并重启生效:
echo 0 > /proc/sys/kernel/randomize_va_space
sysctl -p
You need to reboot for kernel.exec-shield parameter to take effect.
设置NOZEROCONF
On each node within the Oracle RAC Database cluster, set the value of NOZEROCONF to yes
within the /etc/sysconfig/network file. Setting NOZEROCONF ensures that the route 169.254.0.0/16
is not added to the routing table.
NOZEROCONF=yes
设置NOZEROCONF以确保路由169.254.0.0/16不会被添加到路由表中。
cat /etc/sysconfig/network
cat >> /etc/sysconfig/network <<EOF
NOZEROCONF=yes
EOF
cat /etc/sysconfig/network
禁用RemoteIPC
如果 RemoteIPC 配置过于严格,可能会限制 Oracle RAC 节点之间必要的 IPC 通信,从而影响集群的稳定性和性能。
在redhat Linux中,这个参数是默认禁止的。
#This is the default for OL
[root@victorrhel701 ~]# vi /etc/systemd/logind.conf
编辑并添加如下内容
RemoveIPC=no
重启systemd-logind服务
systemctl daemon-reload
systemctl restart systemd-logind
创建用户和组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
groupadd -g 54330 racdba
useradd -u 54321 -g oinstall -G dba,oper,asmdba,backupdba,dgdba,kmdba,racdba oracle
useradd -u 54322 -g oinstall -G asmoper,asmadmin,asmdba,racdba grid
echo 'oracle'|passwd --stdin oracle
echo 'oracle'|passwd --stdin grid
配置内核参数和网络参数
内核参数值配置需求:
Parameter | Value |
semmsl | 250 |
semmns | 32000 |
semopm | 100 |
semmni | 128 |
shmall | Greater than or equal to the value of shmmax, in pages. |
shmmax | Half the size of physical memory in bytes, See My Oracle Support Note 567506.1 for additional information about configuring shmmax. |
shmmni | 4096 |
panic_on_oops | 1 |
file-max | 6815744 |
aio-max-nr | 1048576 Note: This value limits concurrent outstanding requests and should be set to avoid I/O subsystem failures. |
ip_local_port_range | Minimum: 9000 Maximum: 65500 |
rmem_default | 262144 |
rmem_max | 4194304 |
wmem_default | 262144 |
wmem_max | 1048576 |
rp_filter (Multi private NICs) | 2 Note:
|
min_free_kbytes | 512M <= min_free_kbytes <= 1GB Note:
|
hugetlb_shm_group | oracle用户的组ID,例如oinstall组ID为54321。 |
官方建议在/etc/sysctl.d/下创建一个配置文件而不是直接修改/etc/sysctl.conf配置文件。
配置示例:
vi /etc/sysctl.d/97-oracle-database-sysctl.conf
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
kernel.randomize_va_space=0
fs.file-max = 6815744
kernel.shmall = 4194304
kernel.shmmax = 12025908428
kernel.shmmni = 4096
fs.aio-max-nr = 4194304
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 4194304
net.ipv4.ip_local_port_range = 9000 65500
vm.min_free_kbytes = 1048576
vm.swappiness = 100
vm.nr_hugepages = 6000
net.ipv4.conf.ens192.rp_filter = 2
net.ipv4.conf.ens160.rp_filter = 1
参数解读
- Shmall, shmmax
kernel. shmall = <physical RAM size> / <pagesize>,linux一般pagesize是4K,本文:16 * 1024 * 1024 / 4 = 4194304。
kernel.shmmax设置单个数据库实例使用的最大内存(SGA+PGA)限制,建议设置为操作系统物理内存数的70%-80%。本文操作系统内存是16GB,即:16 * 1024 * 1024 * 1024 * 0.7 = 12025908428。
- rp_filter这几个参数说明,参考官方文档:
- 0 - 禁用 RP Filter。
- 1 - 严格模式,IP 包必须通过路由表中的最佳路径到达。
- 2 - 宽松模式,接收到的 IP 包可以通过任何路由到达。
- 对于私有的互连网络接口(例如 eth1 和 eth2),可以设置为宽松模式(2),因为这些网络是隔离的,不需要严格的路径过滤。
- 对于公共网络接口(例如 eth0),应设置为严格模式(1),以确保所有流入的流量都经过严格的路径验证,从而提高安全性。
net.ipv4.conf.ens192.rp_filter = 2 --私网
net.ipv4.conf.ens160.rp_filter = 1 --公网
- fs.file-max = 512 * processes = 512 * 16384 = 8388608
- vm.nr_hugepages = (所有数据库实例使用的 SGA 内存之和(ASM 实例分配的内存除外)/ 2M) + 100.本文操作系统内存是16GB,即:(16*1024*0.7)/2+100=5834
Note: 401749.1 - Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration
(HugePages on Linux: What It Is... and What It Is Not... (文档 ID 361323.1))
注意,大页不能和Oracle 11g AMM 自动内存管理一起使用,否则AMM将失去作用。
此参数设置完成后,为了保持数据库分配的大页是连续的,建议需要重启操作系统。
检查大页(HugePages)配置是否生效:
[root@victorrhel701 ~]# cat /proc/meminfo | grep HugePages
AnonHugePages: 262144 kB
ShmemHugePages: 0 kB
FileHugePages: 0 kB
HugePages_Total: 6000
HugePages_Free: 6000
HugePages_Rsvd: 0
HugePages_Surp: 0
其中,HugePages_Total非0说明已启用大页。
为保证重启后上述参数生效,执行以下命令:
# /sbin/sysctl --system
创建目录
mkdir -p /oracle/app/19.0.0/grid
mkdir -p /oracle/app/grid
mkdir -p /oracle/app/oracle/product/19.0.0/dbhome_1
chown -R grid:oinstall /oracle
chown -R oracle:oinstall /oracle/app/oracle
chmod -R 775 /oracle
配置环境变量
- 设置用户umask为022。
- 修改ORACLE_SID为对应节点的值。
- grid用户
vi .bash_profile
if [ "\$USER" = "oracle" ] || [ "\$USER" = "grid" ]; then
if [ "\$SHELL" = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
umask 022
export PS1=['$LOGNAME'"@"`hostname`":"'$PWD'' ''$ORACLE_SID']"$ "
export ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/app/19.0.0/grid
export ORACLE_SID=+ASM1 ###节点2 改为+ASM2
export PATH=${ORACLE_HOME}/bin:${ORACLE_HOME}/OPatch:${PATH}
if [ -t 0 ]; then
stty intr ^C
fi
- oracle用户
vi .bash_profile
if [ "\$USER" = "oracle" ] || [ "\$USER" = "grid" ]; then
if [ "\$SHELL" = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
umask 022
export PS1=['$LOGNAME'"@"`hostname`":"'$PWD'' ''$ORACLE_SID']"$ "
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=victordb1 ###节点2 改为+victordb2
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib
export PATH=${ORACLE_HOME}/bin:${ORACLE_HOME}/OPatch:${PATH}
if [ -t 0 ]; then
stty intr ^C
fi
root用户
export GRID_HOME=/oracle/app/19.0.0/grid
export PATH=$PATH:$GRID_HOME/bin
export PS1=['$LOGNAME'"@"`hostname`":"'$PWD'' ']"# "
配置用户shell limits
Resource Shell Limit | Resource | Soft Limit | Hard Limit |
Open file descriptors | nofile | at least 1024 | at least 65536 |
Number of processes available to a single user | nproc | at least 2047 | at least 16384 |
Size of the stack segment of the process | stack | at least 10240 KB | at least 10240 KB, and at most 32768 KB |
Maximum locked memory limit | memlock | at least 90 percent of the current RAM when HugePages memory is enabled and at least 3145728 KB (3 GB) when HugePages memory is disabled | at least 90 percent of the current RAM when HugePages memory is enabled and at least 3145728 KB (3 GB) when HugePages memory is disabled |
配置示例:
# vi /etc/security/limits.conf
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft memlock unlimited
oracle hard memlock unlimited
oracle soft stack 10240
oracle hard stack 32768
grid soft nproc 16384
grid hard nproc 16384
grid soft nofile 65536
grid hard nofile 65536
grid soft memlock unlimited
grid hard memlock unlimited
grid soft stack 10240
grid hard stack 32768
配置用户登录权限
# echo "session required pam_limits.so" >> /etc/pam.d/login
# echo "session required pam_limits.so" >> /etc/pam.d/xdm
# echo "session required pam_limits.so" >> /etc/pam.d/su
两个节点root执行
解压软件包(仅在节点1上执行)
分别使用grid和oracle用户解压GI和DB的软件包到GRID_HOME和ORACLE_HOME目录
su - grid
unzip LINUX.X64_193000_grid_home.zip -d $ORACLE_HOME
su - oracle
unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
配置用户互信
分别使用grid和oracle用户调用sshUserSetup.sh脚本配置SSH connectivity,根据提示输入密码。
grid用户:
[grid@victorrhel701:/home/grid +ASM1]$ cd $ORACLE_HOME/oui/prov/resources/scripts
[grid@victorrhel701:/oracle/app/19.0.0/grid/oui/prov/resources/scripts +ASM1]$ ./sshUserSetup.sh -user grid -hosts "victorrhel701 victorrhel702" -advanced -confirm -noPromptPassphrase
oracle用户:
[oracle@victorrhel701:/home/oracle victordb1]$ cd $ORACLE_HOME/oui/prov/resources/scripts
[oracle@victorrhel701:/oracle/app/oracle/product/19.0.0/dbhome_1/oui/prov/resources/scripts victordb1]$ ./sshUserSetup.sh -user oracle -hosts "victorrhel701 victorrhel702" -advanced -confirm -noPromptPassphrase
分别使用grid和oracle用户验证SSH connectivity:
[grid@victorrhel701:/home/oracle victordb1]$ for h in victorrhel701 victorrhel701priv victorrhel702 victorrhel702priv;do
ssh -l grid -o StrictHostKeyChecking=no $h date;
done
[oracle@victorrhel701:/home/grid +ASM1]$ for h in victorrhel701 victorrhel701priv victorrhel702 victorrhel702priv;do
ssh -l oracle -o StrictHostKeyChecking=no $h date;
done
配置ASM磁盘udev规则
- 供ASM使用的磁盘为sdd - sdi,可以使用lsblk命令查看磁盘信息:
[root@victorrhel701:/root ]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 4.2G 0 rom /mnt/oracleiso
nvme0n1 259:0 0 200G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
├─nvme0n1p2 259:2 0 116G 0 part
│ ├─rhel-swap 253:0 0 16G 0 lvm [SWAP]
│ └─rhel-oracle 253:1 0 100G 0 lvm /oracle
└─nvme0n1p3 259:3 0 83G 0 part /
- 使用以下命令配置ASM disk udev, 并将生成的配置文件拷贝到其它节点。
for i in a b c d e f; do
echo "KERNEL==\"sd*\", SUBSYSTEM==\"block\", PROGRAM==\"/lib/udev/scsi_id -g -u -d /dev/\$name\", RESULT==\"$(/lib/udev/scsi_id -g -u -d /dev/sd$i)\", SYMLINK+=\"asmdisks/asmdisk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\""
done > /etc/udev/rules.d/99-oracle-asmdisks.rules
- 重载udev规则并触发udev生效:
# udevadm control --reload-rules
# udevadm trigger
# ls -l /dev/asmdisks/
[root@victorrhel701:/root ]# ls -l /dev/asmdisks/
lrwxrwxrwx 1 root root 6 1月 18 15:51 asmdiska -> ../sda
lrwxrwxrwx 1 root root 6 1月 18 15:51 asmdiskb -> ../sdb
lrwxrwxrwx 1 root root 6 1月 18 15:51 asmdiskc -> ../sdc
lrwxrwxrwx 1 root root 6 1月 18 15:51 asmdiskd -> ../sdd
lrwxrwxrwx 1 root root 6 1月 18 15:51 asmdiske -> ../sde
lrwxrwxrwx 1 root root 6 1月 18 15:51 asmdiskf -> ../sdf
[root@victorrhel701:/root ]# ll /dev/sd*
brw-rw---- 1 grid asmadmin 8, 0 1月 18 15:51 /dev/sda
brw-rw---- 1 grid asmadmin 8, 16 1月 18 15:51 /dev/sdb
brw-rw---- 1 grid asmadmin 8, 32 1月 18 15:51 /dev/sdc
brw-rw---- 1 grid asmadmin 8, 48 1月 18 15:51 /dev/sdd
brw-rw---- 1 grid asmadmin 8, 64 1月 18 15:51 /dev/sde
brw-rw---- 1 grid asmadmin 8, 80 1月 18 15:51 /dev/sdf
在各节点安装CVU RPM包
[root@victorrhel701:/root ]# cd /oracle/app/19.0.0/grid/cv/rpm
[root@victorrhel701:/oracle/app/19.0.0/grid/cv/rpm ]# export CVUQDISK_GRP=oinstall
[root@victorrhel701:/oracle/app/19.0.0/grid/cv/rpm ]# rpm -ivh cvuqdisk-1.0.10-1.rpm
Preparing... ################################# [100%]
Updating / installing...
1:cvuqdisk-1.0.10-1 ################################# [100%]
[root@victorrhel701:/oracle/app/19.0.0/grid/cv/rpm ]# scp cvuqdisk-1.0.10-1.rpm victorrhel702:/root
[root@victorrhel702:/root ]# rpm -ivh cvuqdisk-1.0.10-1.rpm
Preparing... ################################# [100%]
Using default group oinstall to install package
Updating / installing...
1:cvuqdisk-1.0.10-1 ################################# [100%]
GRID配置安装
GIMR数据库说明:
在19c中,不再强制安装GIMR数据库,可以在安装阶段选择不安装GIMR,在安装完成后再创建GIMR数据库,以加快整个安装的进度。
检查所有节点的配置文件/etc/oraInst.loc、/etc/oratab是否存在相关配置,若有,则删除之。
- 使用root用户登录所有节点,执行:
[root@victorrhel702:/root ]# rm -rf /etc/oracle /tmp/.oracle /var/tmp/.oracle /oracle/app/oraInventory /oracle/app/grid/* /tmp/GridSetupActions*
- 使用 grid 用户安装 grid:
[grid@victorrhel701:/home/grid +ASM1]$ cd /oracle/app/19.0.0/grid/
[grid@victorrhel701:/oracle/app/19.0.0/grid +ASM1]$ ./gridSetup.sh
Launching Oracle Grid Infrastructure Setup Wizard...
应用GI RU
[grid@victorrhel701:/psu +ASM1]$ ll
total 3345240
-rw-r--r-- 1 grid oinstall 3297891272 Jan 23 16:44 p36031453_190000_Linux-x86-64.zip
-rw-r--r-- 1 grid oinstall 127629034 Jan 23 16:27 p6880880_122010_Linux-x86-64.zip
更新 OPatch
[grid@victorrhel701:/oracle/app/19.0.0/grid +ASM1]$ mv OPatch OPatch_bak
[grid@victorrhel701:/oracle/app/19.0.0/grid +ASM1]$ unzip /psu/p6880880_122010_Linux-x86-64.zip -d ./
[grid@victorrhel701:/oracle/app/19.0.0/grid +ASM1]$ $ORACLE_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.41
OPatch succeeded.
[grid@victorrhel701:/oracle/app/19.0.0/grid +ASM1]$ ./gridSetup.sh -applyRU /psu/36031453/35940989
Preparing the home to patch...
Applying the patch /psu/36031453/35940989...
Successfully applied the patch.
The log can be found at: /tmp/GridSetupActions2024-01-23_05-26-14PM/installerPatchActions_2024-01-23_05-26-14PM.log
Launching Oracle Grid Infrastructure Setup Wizard...
- 因为前面已经手动配置了互信,这里直接选择 Test
- 在 2 个节点上,root 用户执行脚本
[root@victorrhel701:/root ]# /oracle/app/oraInventory/orainstRoot.sh
[root@victorrhel702:/root ]# /oracle/app/oraInventory/orainstRoot.sh
[root@victorrhel701:/root ]# /oracle/app/19.0.0/grid/root.sh
[root@victorrhel702:/root ]# /oracle/app/19.0.0/grid/root.sh
安装后检查
- 检查集群资源
[grid@victorrhel701:/home/grid +ASM1]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE victorrhel701 STABLE
ONLINE ONLINE victorrhel702 STABLE
ora.chad
ONLINE ONLINE victorrhel701 STABLE
ONLINE ONLINE victorrhel702 STABLE
ora.net1.network
ONLINE ONLINE victorrhel701 STABLE
ONLINE ONLINE victorrhel702 STABLE
ora.ons
ONLINE ONLINE victorrhel701 STABLE
ONLINE ONLINE victorrhel702 STABLE
ora.proxy_advm
OFFLINE OFFLINE victorrhel701 STABLE
OFFLINE OFFLINE victorrhel702 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE victorrhel701 STABLE
ora.OCR.dg(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 Started,STABLE
2 ONLINE ONLINE victorrhel702 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.cvu
1 ONLINE ONLINE victorrhel701 STABLE
ora.qosmserver
1 ONLINE ONLINE victorrhel701 STABLE
ora.scan1.vip
1 ONLINE ONLINE victorrhel701 STABLE
ora.victorrhel701.vip
1 ONLINE ONLINE victorrhel701 STABLE
ora.victorrhel702.vip
1 ONLINE ONLINE victorrhel702 STABLE
--------------------------------------------------------------------------------
- 检查补丁
[grid@victorrhel701:/home/grid +ASM1]$ $ORACLE_HOME/OPatch/opatch lspatches
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.
[grid@victorrhel702:/home/grid +ASM2]$ $ORACLE_HOME/OPatch/opatch lspatches
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.
ASMCA创建磁盘组
在创建数据库之前,首先使用grid用户调用asmca创建必要的磁盘组,用于存放数据库文件。
创建2个磁盘组:
- MGMT : 存放GIMR。
- DATA : 存放数据文件等。
- ARCH : 存放归档日志和镜像的ONLINE LOGFILE。
[grid@victorrhel701:/home/grid +ASM1]$ asmca
RDBMS配置安装
.应用DB RU
- 更新 OPatch
[oracle@victorrhel701:/oracle/app/oracle/product/19.0.0/dbhome_1 victordb1]$ mv OPatch OPatch_bak
[oracle@victorrhel701:/oracle/app/oracle/product/19.0.0/dbhome_1 victordb1]$ unzip /psu/p6880880_122010_Linux-x86-64.zip -d ./
[oracle@victorrhel701:/oracle/app/oracle/product/19.0.0/dbhome_1 victordb1]$ $ORACLE_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.41
OPatch succeeded.
[oracle@victorrhel701:/oracle/app/oracle/product/19.0.0/dbhome_1 victordb1]$ ./runInstaller -applyRU /psu/36031453/35940989
- 2 个节点上 root 执行脚本
[root@victorrhel701:/oracle ]# /oracle/app/oracle/product/19.0.0/dbhome_1/root.sh
[root@victorrhel702:/root ]# /oracle/app/oracle/product/19.0.0/dbhome_1/root.sh
安装后检查
- 检查补丁
[oracle@victorrhel701:/home/oracle victordb1]$ $ORACLE_HOME/OPatch/opatch lspatches
35967489;OCW RELEASE UPDATE 19.22.0.0.0 (35967489)
35943157;Database Release Update : 19.22.0.0.240116 (35943157)
OPatch succeeded.
DBCA创建数据库
- 使用oracle用户执行dbca命令创建数据库。
[oracle@victorrhel701:/home/oracle victordb1]$ dbca
- SGA+PGA等于物理内存的 70-80%
安装后检查
- 检查集群资源
[grid@victorrhel701:/home/grid +ASM1]$ crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
ONLINE ONLINE victorrhel701 STABLE
ONLINE ONLINE victorrhel702 STABLE
ora.chad
ONLINE ONLINE victorrhel701 STABLE
ONLINE ONLINE victorrhel702 STABLE
ora.net1.network
ONLINE ONLINE victorrhel701 STABLE
ONLINE ONLINE victorrhel702 STABLE
ora.ons
ONLINE ONLINE victorrhel701 STABLE
ONLINE ONLINE victorrhel702 STABLE
ora.proxy_advm
OFFLINE OFFLINE victorrhel701 STABLE
OFFLINE OFFLINE victorrhel702 STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ARCH.dg(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.DATA.dg(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE victorrhel701 STABLE
ora.MGMT.dg(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.OCR.dg(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.asm(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 Started,STABLE
2 ONLINE ONLINE victorrhel702 Started,STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
1 ONLINE ONLINE victorrhel701 STABLE
2 ONLINE ONLINE victorrhel702 STABLE
ora.cvu
1 ONLINE ONLINE victorrhel701 STABLE
ora.qosmserver
1 ONLINE ONLINE victorrhel701 STABLE
ora.scan1.vip
1 ONLINE ONLINE victorrhel701 STABLE
ora.victordb.db
1 ONLINE ONLINE victorrhel701 Open,HOME=/oracle/ap
p/oracle/product/19.
0.0/dbhome_1,STABLE
2 ONLINE ONLINE victorrhel702 Open,HOME=/oracle/ap
p/oracle/product/19.
0.0/dbhome_1,STABLE
ora.victorrhel701.vip
1 ONLINE ONLINE victorrhel701 STABLE
ora.victorrhel702.vip
1 ONLINE ONLINE victorrhel702 STABLE
--------------------------------------------------------------------------------
- 点击Close按钮,结束数据库的创建。
- 登录数据库检查sqlpatch信息:
[oracle@victorrhel701:/home/oracle victordb1]$ sqlplus / as sysdba
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
SQL> select patch_id,action,status,action_time,description from dba_registry_sqlpatch;
PATCH_ID ACTION STATUS ACTION_TIME DESCRIPTION
---------- ------------------------------ -------------------- ------------------------------ ---------------------------------------------------------------------------------------------------
35943157 APPLY SUCCESS 24-JAN-24 10.16.54.358890 PM Database Release Update : 19.22.0.0.240116 (35943157)
SQL> select inst_id,name,open_mode from gv$pdbs order by 2,1;
INST_ID NAME OPEN_MODE
---------- -------------------- --------------------
1 PDB READ WRITE
2 PDB READ WRITE
1 PDB$SEED READ ONLY
2 PDB$SEED READ ONLY