一、基础环境检查

1.软件环境:

操作系统:centos7.8最小化安装
数据库软件:LINUX.X64_193000_db_home.zip

2.硬件需求:

oracle安装硬件条件:
ram >=1G(内存最好给2G以上)
swap 1-2g 1.5倍
2-8 相等
大于16 16G
/tmp > 1G
software >10G
数据库软件大概要占用空间10g,但是oracle建议至少要预留100G的空间,避免日后软件目录不断扩大导致的空间不足。
19c需要运行在linux7.5以上的系统,7.5以下可能会存在bug

检查命令:

grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
df -h /tmp
df -h
grep "model name" /proc/cpuinfo
cat /etc/redhat-release

3.软件需求:

oracle 19C需要以下RPM依赖包(跟11g有些许不同了!)

yum -y install bc binutils gcc-c++ 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  kmod*

检查是否还有包未安装

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc binutils gcc-c++ 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  kmod kmod-libs kmod-kvdo test|grep not

RHEL7或CentOS7镜像文件中缺少compat-libstdc+±33-3.2.3
如果不使用 Oracle Text 那么可以忽略该包(Redhat 7或CentOS7的安装包中不含该包)。
不过最好还是安装,以免出现一些莫名奇妙的错误。
我们可以网上下载使用rpm安装或者使用外网yum源进行安装。

默认的"Minimal Install",只有基本服务,没有图形化组件,图形化桌面应该选“Server with GUI”.这里可以选择安装图形界面。
#yum groupinstall “X Window System”
#yum -y groupinstall “Server with GUI” \ 安装图形化程序组
启动桌面
#startx \ 启动xwindow 进入图形化桌面
#init 5
另外可以安装常用的工具

yum -y install tree net-tools unzip vnc-server* && yum -y groupinstall "Server with GUI"

二、配置安装环境

1.修改/etc/hosts文件

配置主机名和ip地址

hostnamectl set-hostname oracle1
nmcli connection modify ens33 ipv4.address 192.168.56.40/24 ipv4.gateway 192.168.56.1 ipv4.method manual autoconnect yes
echo "192.168.56.40 oracle1" >>/etc/hosts

2.创建oralce用户以及用户组

echo "create groups and users"
groupadd -g 601 oinstall  
groupadd -g 602 dba  
groupadd -g 603 oper  
groupadd -g 604 backupdba  
groupadd -g 605 dgdba  
groupadd -g 606 kmdba  
groupadd -g 607 racdba
useradd -u 601 -g oinstall -G dba,backupdba,dgdba,kmdba,oper,racdba oracle
echo "oracle" | passwd --stdin oracle
id oracle

3.创建目录结构

echo "create the necessary directory for oracle"
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/oracle/product/19.3.0/db_1
chown -R oracle:oinstall /u01/
chmod -R 775 /u01/
ls -al / |grep u01

4.修改oracle用户环境变量

su - oracle
vim /home/oracle/.bash_profile 
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LANG=en_US.UTF-8
export NLS_LANG=american_america.AL32UTF8

5.修改资源限制和核心参数

在这里插入图片描述
在这里插入图片描述

/etc/security/limits.conf

su - root
export time=`date +%Y%m%d%k%M%S`
echo "update limits.conf"
cp /etc/security/limits.conf /etc/security/limits.conf.$time
cat >> /etc/security/limits.conf <<EOF
oracle              soft    nproc   16384
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
oracle              soft    stack   10240
oracle              hard    stack   32768
EOF
cat /etc/security/limits.conf

网上的安装文档都需要修改20-nproc.conf这个文件,但是不修改,就能满足前面官方文档的需求,使用rpm安装好像也没有修改该文件。另外nproc的soft limit至少2047就可以了,不知道网上官方文档为什么都是16384

[grid@racdb2 ~]$ ulimit -Hu
16384
[grid@racdb2 ~]$ ulimit -Su
16384

vi /etc/security/limits.d/20-nproc.conf
#注释下面这行
#* soft nproc 1024
#增加下面一行
* - nproc 16384

/etc/pam.d/login

echo "update pam"
cp /etc/pam.d/login /etc/pam.d/login.$time
cat >> /etc/pam.d/login <<EOF
session    required     pam_limits.so
EOF
cat /etc/pam.d/login

/etc/profile

echo "update profile"
cp /etc/profile /etc/profile.$time
cat >> /etc/profile <<EOF
if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then 
    if [ \$SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
    umask 022
fi
EOF
cat /etc/profile

/etc/sysctl.conf
kernel.shmmax一般为内存的一半-1
比如8G内存kernel.shmmax的值为:
8/210241024*1024-1=8589934591
kernel.shmall一般为kernel.shmmax值/4096(Linux共享内存页大小为4KB):
8589934591/4096=2097152

echo "update sysctl.conf"
cp /etc/sysctl.conf /etc/sysctl.conf.$time
cat >> /etc/sysctl.conf <<EOF
kernel.panic_on_oops = 1
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 8589934591
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
EOF
sysctl -p

6.关闭安全防护selinux和firewalld

SELINUX=`grep ^SELINUX= /etc/selinux/config`
if [ $SELINUX != "SELINUX=disabled" ];then
  cp /etc/selinux/config /etc/selinux/config.bak
  sed -i 's/^SELINUX=/#SELINUX=/g' /etc/selinux/config
  sed -i '$a SELINUX=disabled' /etc/selinux/config
else
  echo "SELINUX is already disabled"
fi

修改配置文件需要重启操作系统生效,为避免重启可以先临时修改为宽容模式。
#setenforce 0 
#getenforce
Permissive

systemctl stop firewalld
systemctl disable firewalld

7.其他选项

设置network中NOZEROCONF=yes、关闭avahi、关闭透明大页、关闭numa

设置network中NOZEROCONF=yes

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

关闭avahi

systemctl stop avahi-daemon.socket
systemctl disable avahi-daemon.socket
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service
systemctl status avahi-daemon.socket
systemctl status avahi-daemon.service
ps -ef|grep avahi-daemon

关闭透明大页THP

在线关闭
[root@oracle1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@oracle1 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
[root@oracle1 ~]# echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
[root@oracle1 ~]# echo "never" > /sys/kernel/mm/transparent_hugepage/defrag


查看thp是否已被禁用
[root@oracle1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@oracle1 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
[always]表示开启
[never]表示关闭
#grep -i HugePages /proc/meminfo
HugePages_Total值为0页表示已被禁用
#cat /proc/sys/vm/nr_hugepages
值为0也表示已禁用

永久关闭
方法一:
#echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
#echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
#chmod +x /etc/rc.d/rc.local 
方法二:
修改grub文件(如果先关闭numa再使用该方法numa的配置会重置)
#cp /etc/default/grub /etc/default/grub.bak
#vi /etc/default/grub
增加一行transparent_hugepage=never到rhgb quiet后面(中间需要空格)
GRUB_CMDLINE_LINUX=
"rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never

执行命令使其生效
#grub2-mkconfig -o /boot/grub2/grub.cfg

关闭numa

# grubby --default-kernel
/boot/vmlinuz-3.10.0-1127.el7.x86_64
# grubby --info /boot/vmlinuz-3.10.0-1127.el7.x86_64
index=0
kernel=/boot/vmlinuz-3.10.0-1127.el7.x86_64
args="ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8"
root=/dev/mapper/centos-root
initrd=/boot/initramfs-3.10.0-1127.el7.x86_64.img
title=CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)
# grubby --args=numa=off --update-kernel /boot/vmlinuz-3.10.0-1127.el7.x86_64
# grubby --info /boot/vmlinuz-3.10.0-1127.el7.x86_64
index=0
kernel=/boot/vmlinuz-3.10.0-1127.el7.x86_64
args="ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8 numa=off"
root=/dev/mapper/centos-root
initrd=/boot/initramfs-3.10.0-1127.el7.x86_64.img
title=CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)
# reboot
# grubby --info /boot/vmlinuz-3.10.0-1127.el7.x86_64
# grep -i numa /var/log/dmesg
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1127.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8 numa=off
[    0.000000] NUMA turned off
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-1127.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8 numa=off

三、安装数据库软件

数据库安装文件需要解压至ORACLE_HOME

unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/db_1
 chown -R oracle:oinstall /u01/app/oracle/product/19.3.0/db_1

oracle图形化安装直接按提示下一步就行了。这里只记录一下静默安装。

1.静默安装数据库软件

修改响应文件:

unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/db_1/
chown -R oracle:oinstall /u01/app/oracle/product/19.3.0/db_1/
su - oracle
cd $ORACLE_HOME/install/response
cp db_install.rsp db_install.rsp.bak
vi db_install.rsp
grep -v ^# db_install.rsp|grep -v "^$"

主要修改如下参数:
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.3.0/db_1
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

执行安装命令

cd $ORACLE_HOME
./runInstaller -silent -responseFIle /u01/app/oracle/product/19.3.0/db_1/install/response/db_install.rsp

按提示使用root用户执行下面2个脚本

/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/19.3.0/db_1/root.sh

查看相关日志如果没有错误,oracle软件安装就已经完成了

2.静默安装监听

19c各模板文件位置:
软件:
$ORACLE_HOME/response/db_install.rsp
监听:
$ORACLE_HOME/assistants/netca/netca.rsp
建库:
$ORACLE_HOME/assistants/dbca/dbca.rsp

netca -silent -responsefile /u01/app/oracle/product/19.3.0/db_1/assistants/netca/netca.rsp

3.静默建库

cd /u01/app/oracle/product/19.3.0/db_1/assistants/dbca
cp dbca.rsp dbca.rsp.bak
vim dbca.rsp
grep -v ^# dbca.rsp| grep -v "^$"

主要配置以下参数其他保持默认:

gdbName=orcl
sid=orcl
databaseConfigType=SI

createAsContainerDatabase=true
numberOfPDBs=1
pdbName=pdborcl

pdbAdminPassword=oracle

templateName=General_Purpose.dbc
sysPassword=oracle
systemPassword=oracle

characterSet=AL32UTF8

totalMemory=2000

执行命令安装(安装时间较长,虚拟机环境下大概15分钟)

dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.3.0/db_1/assistants/dbca/dbca.rsp

检查安装日志是否有报错。

静默删除数据库实例

dbca -silent -deleteDatabase -sourceDB orcl -sid orcl -sysDBAUserName sys -sysDBAPassword oracle

更多推荐