ITPub博客

首页 > 数据库 > 数据库开发技术 > 第 3 天:RHEL 7 安装 Oracle 11GR2 数据库

第 3 天:RHEL 7 安装 Oracle 11GR2 数据库

原创 数据库开发技术 作者:DBA学习之路 时间:2024-12-21 10:00:00 0 删除 编辑

前言

在第 2 天的课程中,我们提到 RHEL 6 是 Oracle 11GR2 最适配的操作系统版本。然而,为什么我还要写一篇 RHEL 7 系统安装 Oracle 11GR2 数据库呢?这是因为随着系统硬件的不断升级,RHEL 6 已逐渐被淘汰,新的硬件无法安装,因此不得不选择在 RHEL 7 上安装 Oracle 11GR2。这是技术发展的必然趋势,顺应时代、与时俱进才是明智之选!

好在,Oracle 官方已支持在 RHEL 7 上安装 11GR2 数据库。与 RHEL 6 相比,安装过程的差异主要体现在系统命令上的细微调整。接下来,让我们一起来看看具体的安装步骤吧!

Linux 系统安装

安装 RHEL 操作系统大同小异,参考第一天的课程进行安装即可。如果对操作系统的安装过程不熟悉,可以跳转进行学习:

第 1 天:VirtualBox 虚拟机安装 Linux 系统

安装完成 Linux 系统之后,接下来咱么正式进入 Oracle 数据库的安装环节!

环境信息

演示环境信息:

我这里虚拟机配置的是 8G 内存,大家按需配置。Oracle 11GR2 对内存的要求相对较低,配置 2G 内存即可满足学习环境的需求。这种配置既能顺利完成操作,又不至于对电脑系统资源造成过大压力,非常适合用于学习和练习。

安装前准备

Oracle 数据库的安装需要对 Linux 系统进行一些必要的配置。一方面,这些配置是为了遵循生产环境的最佳实践,另一方面是为了规避一些已知的 BUG。本教程基于 Oracle 官方文档并结合大量生产环境部署的实战经验,是一份标准的 SOP 文档,确保稳健可靠。

虽然一些“野路子”也能实现安装,但你敢把它用在生产环境吗?为了确保系统稳定性和可维护性,遵循规范化的配置步骤才是正确的选择。

配置网络

正常按照第一天的课程安装的操作系统,都已经配置好了网络信息。可以使用ip a 命令查看网络信息:

ip a | grep enp0s3

如上所示,说明网络已经配置好了。

如果在安装 Linux 系统的时候没有配置网络,在 RHEL 7 系统可以使用nmcli 命令进行配置网络:

nmcli connection show
nmcli connection modify enp0s3 ipv4.addresses 192.168.56.200/24 ipv4.gateway 192.168.56.1 ipv4.method manual autoconnect yes
nmcli connection up enp0s3

📢注意: 网卡连接方式要选择Host-Only 模式,否则无法识别 IP 地址进行连接!修改完之后需要重启主机生效。

远程连接主机

第二天实战中介绍过哪些连接工具可以连接,这里不做二次介绍了,我选择使用 ITerm 进行连接(Win 平台建议大家也可以使用MobaXterm):

ssh root@192.168.56.200

以上代表已经连接上数据主机了。

关闭防火墙

为确保数据库服务的正常运行,需要根据实际需求关闭系统防火墙或放开相关端口(1521)。这里提供两种可选方案。

1、关闭系统防火墙:

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

适用场景:网络环境安全可控,不依赖防火墙规则。

2、放开必要端口

如系统要求不可关闭防火墙,执行以下命令放开相关端口,放开1521 端口:

## root 用户下执行,本次不执行
firewall-cmd --permanent --zone=public --add-port=1521/tcp
firewall-cmd --reload

适用场景:防火墙必须启用,需放行数据库相关服务端口。

关闭 SELinux

为防止 SELinux 引发不必要的权限问题或影响服务正常运行,建议将其关闭:

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

修改完 SELinux 配置文件后,需要重启主机进行生效!

配置本地软件源

安装 Oracle 数据库需要一些系统依赖包,否则会安装失败,根据官方文档的建议进行安装依赖即可。依赖安装需要配置系统 yum 源,这里建议配置本地的 yum 源,配置 Linux 软件源可以参考为之前写的文章:

⭐️ DBA 必备:Linux 软件源配置全攻略

首先检查 ISO 镜像是否挂载,由于主机重启可能导致挂载断开,所以检查一下。如下图,代表已成功挂载 ISO 镜像源:

接下来就是配置 yum 源,先通过mount 挂载镜像源到本地/mnt 目录下:

mount /dev/cdrom /mnt

一键配置本地 yum 文件,直接执行即可:

mkdir /etc/yum.repos.d/bak -p
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
cat<<EOF>/etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOF

如上图所示,本地 yum 源就已经配置完成了。

安装依赖包

根据官方文档建议安装的依赖包,进行yum install 安装:

yum install -y bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
elfutils-libelf \
elfutils-libelf-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat \
e2fsprogs \
e2fsprogs-libs \
fontconfig-devel \
expect \
unzip \
openssh-clients \
readline* \
psmisc --skip-broken

安装过程太长,不展示了,安装完之后检查一下是否都安装成功:

rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline

RHEL 7 需要手动安装compat-libstdc++ 依赖包:

rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

如上图,所有的依赖包都已成功安装!

配置 hosts 文件

建议配置主机 hosts 文件,监听如果配置为主机名时,需要通过 hosts 文件进行解析:

cat <<EOF >>/etc/hosts
192.168.56.200 Lucifer       
EOF

创建用户和组

Oracle 数据库不建议使用 root 用户进行安装,官方建议创建oracle 用户和对应的组:

## 创建 oinstall dba oper 组
/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
## 创建 oracle 用户
/usr/sbin/useradd -u 54321 -g oinstall -G dba,oper oracle
## 修改 oracle 用户密码为 oracle
echo oracle | passwd --stdin oracle
## 检查 oracle 用户
id oracle

创建安装目录

在安装 Oracle 数据库前,需要提前创建相关目录,并正确设置权限,确保oracle 用户对安装和数据目录具有完全的读写权限:

mkdir -p /u01/app/oracle/product/11.2.0/db
mkdir -p /u01/app/oraInventory
mkdir -p /oradata
mkdir -p /archivelog
chown -R oracle:oinstall /oradata
chown -R oracle:oinstall /archivelog
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app

配置 avahi-deamon

官方文档建议关闭 avahi-deamon,没有安装可以先安装在关闭,防止日后被安装:

systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
systemctl disable avahi-daemon.socket

## 关闭 NOZEROCONF
cat <<EOF >>/etc/sysconfig/network
NOZEROCONF=yes
EOF

关闭透明大页和 numa

官方建议关闭透明大页和 numa,有一些 BUG 是由于这两个特性导致,并且打开对数据库的性能提升不大,因此直接关闭即可。

RHEL 7 可以直接修改内核来关闭透明大页和 numa:

sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg

透明大页和 numa 的配置需要重启主机生效,这里先不重启,等全部配置完之后再重启主机!

配置系统参数文件

我已经根据官方文档将参数整合成一个脚本命令,直接复制下方命令执行即可:

DAYTIME=$(date +%Y%m%d)
mv /etc/sysctl.conf /etc/sysctl.conf.${DAYTIME}
memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
totalMemory=$((memTotal / 2048))
shmall=$((memTotal / 4))
if [ $shmall -lt 2097152 ]; then
  shmall=2097152
fi
shmmax=$((memTotal * 1024 - 1))
if [ "$shmmax" -lt 4294967295 ]; then
  shmmax=4294967295
fi
cat <<EOF >/etc/sysctl.conf
##shmmal's Calculation formula: physical memory 8G:(8*1024*1024*1024)/4096=2097152
##shmmax's Calculation formula: physical memory 8G:(8/2)*1024*1024*1024 -1=4294967295
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF

sysctl -p

配置系统资源限制

cat <<EOF >>/etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard memlock 134217728
oracle soft memlock 134217728
EOF

配置 pam.d

cat <<EOF >>/etc/pam.d/login
session required pam_limits.so 
session required /lib64/security/pam_limits.so
EOF

配置 /dev/shm

cp /etc/fstab /tmp/fstab
memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
shmTotal=$(df -k /dev/shm | awk '{print $2}' | head -n 2 | tail -n 1)
if [ "$(grep -E -c "/dev/shm" /etc/fstab)" -eq 0 ]; then
 cat <<EOF >>/etc/fstab
tmpfs /dev/shm tmpfs size=${memTotal}k 0 0
EOF
 mount -o remount /dev/shm
else
if [ "$shmTotal" -lt "$memTotal" ]; then
    shmTotal=$memTotal
    line=$(grep -n "/dev/shm" /etc/fstab | awk -F ":"'{print $1}')
    sed -i "${line} d" /etc/fstab
    cat <<EOF >>/etc/fstab
tmpfs /dev/shm tmpfs size=${memTotal}k 0 0
EOF
fi
 mount -o remount /dev/shm
fi

配置用户环境变量

## 配置 root 用户
cat <<EOF >>/root/.bash_profile
alias so='su - oracle'
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]# '
EOF

## 配置 oracle 用户
cat <<EOF >>/home/oracle/.bash_profile
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db
export ORACLE_HOSTNAME=Lucifer
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=orcl
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sas='sqlplus / as sysdba'
export PS1="[\`whoami\`@\`hostname\`:"'\$PWD]\$ '
EOF

至此,Linux 操作系统的配置就完成了,重启主机确保配置没有!重启成功后检查一下 Selinux,透明大页和 numa:

cat /etc/selinux/config
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /proc/cmdline

安装 Oracle 软件

Oracle 安装介质上传

Oracle 11GR2 安装包官方网站已经不提供下载,不过我给大家提供了下载方式:

原文作者:DBA学习之路;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2024-09-16

  • 博文量
    39
  • 访问量
    37218