Oracle单机部署:安装前检查和配置

Oracle版本:19c

Oracle官网下载以下两个安装包:

  • LINUX.X64_193000_db_home.zip
  • LINUX.X64_193000_grid_home.zip

服务器检查和配置

启用X Windows和X11-Forwarding

我这里使用的是阿里云的远程云服务器,本地使用MobaXterm连接。

首先要在阿里云控制台的安全组中对源:0.0.0.0/0的授权。

远程服务器配置:

# 安装x11相关软件
yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock -y

# 开启x11 forwarding
vim /etc/ssh/sshd_config
# 取消X11Forwarding yes该行的注释(如果是no修改为yes)

# 重启sshd服务
systemctl restart sshd.service

通过本地MobaXterm重新连接远程服务器(注意勾选X11-Forwarding):

     │   • SSH compression : ✔                                            │
     │   • SSH-browser     : ✔                                            │
     │   • X11-forwarding  :(remote display is forwarded through SSH) │
     │   • DISPLAY         :(automatically set on remote server)      |

连接成功后,显示上面的信息,并且MobaXterm右上角X Server正常运行即可。

在云服务器端进行测试:

# 检查DISPLAY环境变量是否已定义
[root@oraclehost ~]# echo $DISPLAY
localhost:10.0

# 运行一个图形化程序
[root@oraclehost ~]# xclock

如果xclock命令执行成功,本地Windows主机上会出现一个时钟的图形化界面。

检查系统硬件和内存配置

  • 检查runlevel:必须为3或5
runlevel
  • 检查物理内存总量:内存建议至少16G
grep MemTotal /proc/meminfo
  • 检查swap分区大小:物理内存在2G到16G之间时,Swap大小建议等于物理内存;物理内存大于16G时,Swap大小建议为16G
grep SwapTotal /proc/meminfo
  • 检查可用的内存和swap分区大小:
free -g
  • 检查tmp目录大小:至少1GB剩余空间。
df -h /tmp
  • 检查系统架构:必须为x86_64
uname -m
  • 检查共享内存挂载:挂载方式必须为tmpfs,有rwx权限,无noexecnosuid的配置。
df -h /dev/shm
ll /dev/ | grep shm

:创建Swap分区的方法如下:

# 从根分区中划分出16G用于创建swap分区
[root@oraclehost ~]# dd if=/dev/zero of=/swapfile1 bs=1024 count=15728640
15728640+0 records in
15728640+0 records out
16106127360 bytes (16 GB) copied, 109.583 s, 147 MB/s

# 创建swap交换文件
[root@oraclehost ~]# mkswap /swapfile1
Setting up swapspace version 1, size = 15728636 KiB
no label, UUID=5f78a45b-2ad6-4d9d-bd43-affb849b0e5d

# 激活swap交换文件
[root@oraclehost ~]# swapon /swapfile1
swapon: /swapfile1: insecure permissions 0644, 0600 suggested.

# 设置开机自动启用swap分区
[root@oraclehost ~]# echo '/swapfile1  swap swap  defaults  0 0' >> /etc/fstab
[root@oraclehost ~]# cp /etc/sysctl.conf /etc/sysctl.conf.bak20221208
[root@oraclehost ~]# sed -i 's/^vm.swappiness.*/vm.swappiness = 10/g' /etc/sysctl.conf

# 重启服务器后检查swap分区大小
[root@oraclehost ~]# reboot
[root@oraclehost ~]# free -g
              total        used        free      shared  buff/cache   available
Mem:             15           0          14           0           0          14
Swap:            14           0          14

操作系统配置

红帽7操作系统配置

  • 检查已安装openSSH:
rpm -q openssh
  • 检查操作系统版本:最好是红帽7.5之后的版本。
cat /etc/redhat-release 
  • 检查Linux内核版本:不低于3.10.0-862.11.6.el7
uname -sr
  • 确保已安装以下软件包(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
libstdc++
libstdc++-devel
libxcb
make
smartmontools
sysstat
  • 安装JDK8:
yum install -y java-1.8.0-openjdk*

tsc时钟源配置

将虚拟时钟源设置为tsc可以提高服务器性能:

# 检查可用的时钟源
[root@oraclehost ~]# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc acpi_pm

# 检查当前使用的时钟源
[root@oraclehost ~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock

# 修改当前的时钟源为tsc
[root@oraclehost ~]# echo "tsc" > /sys/devices/system/clocksource/clocksource0/current_clocksource

clocksource=tsc添加到/etc/default/grubGRUB_CMDLINE_LINUX配置中,这样即使服务器重启后也会继续使用tsc时钟源。

[root@oraclehost ~]# cat /etc/default/grub | grep GRUB_CMDLINE_LINUX
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rhgb quiet net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 clocksource=tsc"

关闭透明大页(THP)

透明大页(Transparent Huge Pages)会导致内存分配延迟,影响数据库性能,因此建议关闭。

检查透明大页是否开启:

[root@oraclehost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
#[always]表示已启用透明大页

transparent_hugepage=never添加到/etc/default/grubGRUB_CMDLINE_LINUX配置中来关闭透明大页:

[root@oraclehost ~]# cat /etc/default/grub | grep GRUB_CMDLINE_LINUX
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rhgb quiet net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 clocksource=tsc transparent_hugepage=never"

执行下面的命令来重建grub.cfg文件:

[root@oraclehost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

最后重启服务器来永久关闭透明大页。

检查磁盘I/O调度器

查看Oracle数据盘使用的I/O调度器:

# 假设数据盘为vdb
[root@oraclehost ~]# cat /sys/block/vdb/queue/scheduler
[mq-deadline] kyber none

确保数据盘使用的I/O调度器类型为Deadline

修改Linux内核参数

检查以下操作系统内核参数:

# 检查semmsl、semmns、semopm和semmni
sysctl -a | grep sem
# 检查shmall、shmmax和shmmni
sysctl -a | grep shm
# 检查file-max
sysctl -a | grep file-max

# 检查ip_local_port_range
sysctl -a | grep ip_local_port_range
# 检查rmem_default
sysctl -a | grep rmem_default
# 检查rmem_max
sysctl -a | grep rmem_max

# 检查wmem_default
sysctl -a | grep wmem_default
# 检查wmem_max
sysctl -a | grep wmem_max
# 检查aio-max-nr
sysctl -a | grep aio-max-nr

创建下面的配置文件,除shmmaxshmall根据服务器物理内存计算外,其余参数默认采用下面给出的值:

[root@oraclehost ~]# cat /etc/sysctl.d/97-oracle-database-sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 4194304        # shmmax/2048
kernel.shmmax = 8589934592     # 物理内存的一半,单位bytes
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

服务器重启后上面文件中的内核参数会被持久化。

执行下面的命令来使内核参数修改立即生效:

sysctl --system

查看当前生效的所有内核参数:

sysctl -a

Oracle用户和环境配置

创建部署用户组

如果是首次安装Oracle产品,需要创建oinstall用户组:

groupadd -g 54321 oinstall

创建OSOPER用户组oper,该组内用户具有SYSOPER权限:

groupadd oper

创建ASM管理用户组asmoper,组内用户具有ASM启动和停止的权限:

groupadd asmoper

创建管理用户组

创建数据库管理用户组dba,该用户组内的用户将拥有SYSDBA权限。

groupadd dba

创建ASM管理用户组asmdba和asmadmin,用于ASM管理。组内用户具有SYSASM权限。

groupadd asmdba
groupadd asmadmin

此外还需创建以下不同角色的管理用户组:

  • OSBACKUPDBA用户组:用于数据库备份和恢复管理。
groupadd backupdba
  • OSDGDBA用户组:用于Data Guard管理,组内用户具有SYSDG权限。
groupadd dgdba
  • OSKMDBA用户组:用于加密密钥管理,组内用户具有SYSKM权限。
groupadd kmdba
  • OSRACDBA用户组:用于RAC集群管理,组内用户具有SYSRAC权限。
groupadd racdba

创建部署用户

Oracle Grid安装需要用到grid用户,用于管理Clusterware和ASM。Oracle数据库安装则需要用到oracle用户。grid用户和oracle用户都应该属于oinstall用户组。

创建oracle用户,并指定uid和主要用户组:

useradd -u 54321 -g oinstall oracle

创建grid用户,并指定uid和主要用户组:

useradd -u 54331 -g oinstall grid

为grid和oracle用户添加次要用户组:

usermod -g oinstall -G dba,asmdba,asmadmin,backupdba,dgdba,kmdba,racdba oracle
usermod -g oinstall -G dba,asmdba,asmadmin,backupdba,dgdba,kmdba,racdba grid

查看用户组信息:

[root@oraclehost ~]# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(backupdba),54323(dgdba),54324(kmdba),54325(racdba),54326(dba),54327(asmdba)
[root@oraclehost ~]# id grid
uid=54331(grid) gid=54321(oinstall) groups=54321(oinstall),54322(backupdba),54323(dgdba),54324(kmdba),54325(racdba),54326(dba),54327(asmdba)
[root@oraclehost ~]#

umask与环境变量设置

需要将grid用户和oracle用户的默认文件权限掩码设umask置为022

以grid用户为例:

su - grid
# 修改umask为022
echo 'umask 022' >> .bash_profile
. ./.bash_profile

# 查看umask文件权限掩码
umask

如果.bash_profile文件中定义了ORACLE_SIDORACLE_HOME或者ORACLE_BASE这几个环境变量,需要将它们移除。

如果事先定义了$ORACLE_HOME$ORA_NLS10$TNS_ADMIN$ORA_CRS_HOME等Oracle相关的环境变量,也需要将它们移除。

env | grep ORA
env | grep TNS

用户系统资源限制

对grid用户和oracle用户的系统资源限制如下:

nofilenprocstackmemlock(仅oracle用户)
软限制至少1024至少2047至少10240KBunlimited
硬限制至少65536至少16384至少10240KB,至多32768KBunlimited

检查grid用户和oracle用户的nofile、nproc和stack系统配额,以oracle用户为例:

su - oracle
# 检查nofile的软限制和硬限制
ulimit -Sn
ulimit -Hn
# 检查nproc的软限制和硬限制
ulimit -Su
ulimit -Hu
# 检查stack的软限制和硬限制
ulimit -Ss
ulimit -Hs
# 检查memlock的软限制和硬限制
ulimit -Sl
ulimit -Hl

# 列出当前用户的所有系统配额
ulimit -Sa
ulimit -Ha

使用root用户修改/etc/security/limits.conf来修改系统资源配额:

grid   soft   nofile   65535
grid   hard   nofile   65535

grid   soft   nproc    4096
grid   hard   nproc    62381

grid   soft   stack    10240
grid   hard   stack    32768

oracle   soft   nofile   65535
oracle   hard   nofile   65535

oracle   soft   nproc    4096
oracle   hard   nproc    62381

oracle   soft   stack    10240
oracle   hard   stack    32768

oracle   soft   memlock  unlimited
oracle   hard   memlock  unlimited

上述修改在切换到对应用户时生效。

References
【1】https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/oracle-database-installation-checklist.html#GUID-E847221C-1406-4B6D-8666-479DB6BDB046
【2】https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/supported-red-hat-enterprise-linux-7-distributions-for-x86-64.html#GUID-2E11B561-6587-4789-A583-2E33D705E498
【3】https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/server-configuration-checklist-for-oracle-database-installation.html#GUID-CD4657FB-2DDC-4B30-AAB4-2C927045A86D
【4】https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/changing-kernel-parameter-values.html#GUID-FB0CC366-61C9-4AA2-9BE7-233EB6810A31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GottdesKrieges

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值