【Install】Oracle database 11gr2 or 19c 自定义脚本预配置 for Linux x86-64

1. 基础环境:

名称说明
OS版本Red Hat Enterprise Linux Server release 7.9 (Maipo)
Oracle版本19c database
Oracle安装包oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
oracle-database-ee-19c-1.0-1.x86_64.rpm

2. 自动安装脚本:

参考:https://www.cnblogs.com/shipment/p/16214545.html

#!/bin/bash
#Author: Laura_Li
#Date: 2022/8/1
#Description: Oracle 11gr2(11.2.0.4) or 19c(19.3.0) for Linux Redhat7.9 + x86_64 

read -p "请输入sid:" sid
read -p "请输入数据库版本(11/19):" oravesion
read -p "是否为生产环境(Y/N):" isprod
if [ -z "$sid" -o -z "$oravesion" -o -z "$isprod" ]; then
echo "sid=$sid"
echo "oravesion=$oravesion"
echo "isprod=$isprod"
exit 0
else
echo "sid=$sid"
echo "oravesion=$oravesion"
echo "isprod=$isprod"
fi

#一、环境准备##########################################################################################################
#1.1 防火墙设置
echo "************************************************************firewalld******************************************************************"
#关闭防火墙
#systemctl stop firewalld
#systemctl disable firewalld
#systemctl status firewalld


#开放防火墙端口,监听端口和VNC端口(SA交付默认打开防火墙)
firewall-cmd --add-port=1521/tcp --permanent
firewall-cmd --add-port=1521/tcp
firewall-cmd --add-port=5901/tcp --permanent
firewall-cmd --add-port=5901/tcp
firewall-cmd --list-ports



#1.2 禁用SELinux
echo "************************************************************SELinux******************************************************************"
#将selinux=enforcing改为disabled(SA交付默认禁用selinux)
#sed 's,'SELINUX=enforcing','SELINUX=disabled',g' -i /etc/selinux/config???哪个更好
#sed -ir 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config???哪个更好
#setenforce 0
#查看SELinux状态
sestatus




#1.3 配置/etc/hosts文件
echo "************************************************************/etc/hosts******************************************************************"
#hostnamectl set-hostname ol7-db1	#修改主机名
echo "`hostname -I|awk '{print $1}'` `hostname`" >> /etc/hosts
cat /etc/hosts



#1.4 配置yum源(SA交付已配置yum源)
echo "************************************************************yum**************************************************************************"
#方式一:(以前使用)
#wget -O /etc/yum.repos.d/smecs.repo http://yum.smecs.com/7/smecs.repo

#方式二:
#cat >> /etc/yum.repos.d/smecs.repo << EOF
#[os]
#name=smecs yum repo - os
#baseurl=https://repo.smecs.com/repository/rehl/\$releasever/os/\$basearch/
#enable=1
#gpgcheck=0
#
#[updates]
#name=smecs yum repo - updates
#baseurl=https://repo.smecs.com/repository/rehl/\$releasever/updates/\$basearch/
#enable=1
#gpgcheck=0
#
#[extras]
#name=smecs yum repo - extras
#baseurl=https://repo.smecs.com/repository/rehl/\$releasever/extras/\$basearch/
#enable=1
#gpgcheck=0
#
#[epel]
#name=smecs yum repo - epel
#baseurl=https://repo.smecs.com/repository/yum-proxy-epel/\$releasever/\$basearch/
#enable=1
#gpgcheck=0
#
#[zabbix]
#name=smecs yum repo - zabbix
#baseurl=https://repo.smecs.com/repository/yum-zabbix-rehl/\$releasever/\$basearch/
#enable=1
#gpgcheck=0
#
#[local]
#name=smecs yum repo - local
#baseurl=https://repo.smecs.com/repository/yum-rehl-hosted/\$releasever/\$basearch/
#enable=1
#gpgcheck=0
#EOF

#yum clean all 
#yum makecache
yum repolist all




##1.5 修改共享内存/dev/shm???
##建议大于1.5G,默认的/dec/shm会配置系统内存的一半,通常oracle数据库服务器可以将这个值修改为0.75倍系统内存大小
##临时性更改:
#mount -t tmpfs shmfs -o size=1.5g /dev/shm
##永久更改:需写入挂载目录配置文件/etc/fstab
#temfs /dev/shm tmpfs size=1500M,defaults 0 0




#二、操作系统配置##########################################################################################################
#2.1 创建用户、组、目录
echo "************************************************************user directory******************************************************************"
if [ "$oravesion" = "11" ]; then
groupadd -g 2001 oinstall
groupadd -g 2002 dba
groupadd -g 2003 oper
useradd -u 2001 -g oinstall -G dba,oper oracle

#待确认???
elif [ "$oravesion" = "19" ]; then
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 54330 racdba
useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba -m oracle
fi
echo 'oraclepasswd'|passwd --stdin oracle
id oracle

if [ "$oravesion" = "11" ]; then
#创建软件安装目录(在用户下直接创建权限是755)
#/u01/app/oracle/product/11.2.0/dbhome_1在环境变量配置,安装数据库软件时会自动创建
mkdir -p /u01/app/oracle

elif [ "$oravesion" = "19" ]; then
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
fi
chown -R oracle:oinstall /u01
chmod -R 775 /u01

#创建数据文件目录(默认已挂载/oradata)
mkdir -p /oradata/"$sid"/ctl
mkdir -p /oradata/"$sid"/db
mkdir -p /oradata/"$sid"/redo
mkdir -p /oradata/"$sid"/arch
chown -R oracle:oinstall /oradata
chmod 775 -R /oradata




#2.2 配置内核参数
echo "************************************************************/etc/sysctl.conf******************************************************************"
cat >> /etc/sysctl.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 4194304
kernel.shmmax = 9000000000
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
#kernel.panic_on_oops = 1 ##???
#vm.nr_hugepages = 1600 ##???
EOF

#kernel.shmall = 5000000000 ##控制共享内存页数
#Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。简言之,该参数的值始终应该至少为:ceil(SHMMAX/PAGE_SIZE)
#当内存为16G时,=16G*1024*1024/4KB==4194304
#当内存为32G时,=32G*1024*1024/4KB==8388608
#当内存为64G时,=64G*1024*1024/4KB==16777216
#当内存为128G时,=128G*1024*1024/4KB==33554432
#当内存为256G时,=256G*1024*1024/4KB==67108864
#kernel.shmmax = 60000000000 ##单个共享内存段的最大值
#设置应该足够大,能在一个共享内存段下容纳下整个的SGA,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。
#至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。
#64位linux系统:可取最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte
#SGA和PGA取值???
#vm.nr_hugepages = 1600 ##生产环境LINUX必配,否则性能很差,物理内存大于8G一定要配,建议取值
#sga_max_size/2M+100=1600,本次搭建数据库计划sga设置为3000M,pga设置为750M,vm.nr_hugepages设置要容纳整个sga

#使内核参数立即生效
sysctl -p





#2.3 设置oracle用户shell限制
echo "************************************************************/etc/security/limits.conf******************************************************************"
if [ "$oravesion" = "11" ]; then
cat >> /etc/security/limits.conf << EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock unlimited
oracle soft memlock unlimited
EOF

elif [ "$oravesion" = "19" ]; then
cat >> /etc/security/limits.conf << EOF
oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    16384
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768
oracle   hard   memlock    134217728
oracle   soft   memlock    134217728
EOF
fi
#memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM
#memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM
cat /etc/security/limits.conf




#2.4 修改用户验证选项
echo "************************************************************/etc/pam.d/login******************************************************************"
cat >> /etc/pam.d/login << EOF
session required /lib64/security/pam_limits.so
session required pam_limits.so
EOF
cat /etc/pam.d/login



#2.5 修改/etc/profile文件
echo "************************************************************/etc/profile******************************************************************"
cat >> /etc/profile << EOF
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
   ulimit -p 16384
   ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
  fi
fi
EOF
#使配置立即生效
source /etc/profile





#2.6 配置环境变量
echo "************************************************************/home/oracle/.bash_profile******************************************************************"
if [ "$oravesion" = "11" ]; then
cat >> /home/oracle/.bash_profile << EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=$sid
export PATH=\$PATH:\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF
elif [ "$oravesion" = "19" ]; then
cat >> /home/oracle/.bash_profile << EOF
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=$sid
export PATH=\$PATH:\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF
fi
cat /home/oracle/.bash_profile

#使配置立即生效
source /home/oracle/.bash_profile




#2.7. 关闭透明大页和numa
echo "************************************************************transparent_hugepage numa******************************************************************"
#a. 查看透明大页和numa是否开启
cat /sys/kernel/mm/transparent_hugepage/enabled
dmesg | grep -i numa

#b. 编辑/etc/default/grub,在GRUB CMDLINE LINUX参数最后添加:
sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub
cat /etc/default/grub

#c. 重新生成 /etc/grub2.cfg 配置文件
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
grub2-mkconfig -o /boot/grub2/grub.cfg
ll /boot/grub2

#d. 需重启OS生效:shutdown -r now 或reboot,脚本最后执行

#e. 重启OS后验证
#cat /proc/cmdline
#cat /sys/kernel/mm/transparent_hugepage/enabled
#dmesg | grep -i numa




#三、软件包安装##########################################################################################################
#3.1 安装其他软件包
echo "******************************************************************Install Other package(Options)**************************************************************"
yum install -y \
net-tools \
nfs-utils \
python \
unzip \
lrzsz \
wget \
tree \
telnet \
tigervnc-server

echo "******************************************************************Not Installed Other package(Options)**************************************************************"
rpm -q \
net-tools \
nfs-utils \
python \
unzip \
lrzsz \
wget \
tree \
telnet \
tigervnc-server | grep "not installed"




#3.2 安装Oracle必需依赖(11g:pdksh替换ksh,19c:ksh)
echo "******************************************************************Install Oracle Library***************************************************************"
yum install -y \
bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
fontconfig-devel \
gcc \
gcc-c++ \
glibc \
glibc-devel \
libaio \
libaio-devel \
libXrender \
libXrender-devel \
libX11 \
libXau \
libXi \
libXtst \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
smartmontools \
sysstat \
unixODBC \
unixODBC-devel

echo "******************************************************************Not Install Oracle Library**************************************************************"
#检查依赖包安装情况
rpm -q \
bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
elfutils-libelf \
elfutils-libelf-devel \
fontconfig-devel \
gcc \
gcc-c++ \
glibc \
glibc-devel \
pdksh \
libaio \
libaio-devel \
libXrender \
libXrender-devel \
libX11 \
libXau \
libXi \
libXtst \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
make \
smartmontools \
sysstat \
unixODBC \
unixODBC-devel | grep "not installed"

echo "******************************************************************Install Oracle Library pdksh or ksh**************************************************************"
if [ "$isprod" = "Y" ]; then
#单独安装pdksh
mkdir -p /opt/oracle
chown -R oracle:oinstall /opt/oracle
cd /opt/oracle
wget file.is.smecs.com/oracle/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
elif [ "$oravesion" = "19" ]; then
yum -y install ksh
fi
echo "******************************************************************libaio Version**************************************************************"
#查看libaio版本???
#libaio库版本不能大于0.3.109,libaio版本太高,会造成编译错误
rpm -qa libaio




#3.3 安装备份软件Veeam
echo "******************************************************************Install Veeam***************************************************************"
if [ "$isprod" = "Y" ]; then
cd /opt
wget file.is.smecs.com/oracle/VeeamPluginforOracleRMAN-11.0.101.1264-1.x86_64.rpm
rpm -ivh VeeamPluginforOracleRMAN-11.0.101.1264-1.x86_64.rpm
fi




#3.4 安装Oracle软件
if [ "$oravesion" = "11" ]; then
echo "******************************************************************Oracle Software******************************************************************"
#下载Oracle软件包
cd /opt/oracle
wget file.is.smecs.com/oracle/p13390677_112040_Linux-x86-64_1of7.zip
wget file.is.smecs.com/oracle/p13390677_112040_Linux-x86-64_2of7.zip
#下载Oracle OPatch和Patch包
wget file.is.smecs.com/oracle/opatch/p6880880_112000_Linux-x86-64.zip
wget file.is.smecs.com/oracle/psu/p31537677_112040_Linux-x86-64\(DB\).zip

echo "******************************************************************Unzip Oracle Software******************************************************************"
#解压Oracle软件包
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
chown -R oracle:oinstall database

echo "******************************************************************Unzip Oracle Patch******************************************************************"
#解压Oracle Patch包
unzip p31537677_112040_Linux-x86-64\(DB\).zip
chown -R oracle:oinstall 31537677



elif [ "$oravesion" = "19" ]; then
echo "******************************************************************Oracle Software******************************************************************"
#下载Oracle软件包
cd /u01/app/oracle/product/19.3.0/dbhome_1
wget file.is.smecs.com/oracle/LINUX.X64_193000_db_home.zip
#下载Oracle OPatch和Patch包
cd /opt/oracle
wget file.is.smecs.com/oracle/opatch/p6880880_190000_Linux-x86-64.zip 
wget file.is.smecs.com/oracle/psu/p35042068_190000_Linux-x86-64\(DB\).zip 

echo "******************************************************************Unzip Oracle Software******************************************************************"
#解压Oracle软件包
unzip /u01/app/oracle/product/19.3.0/dbhome_1/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1
chown -R oracle:oinstall /u01/app/oracle/product/19.3.0/dbhome_1

echo "******************************************************************Unzip Oracle Patch******************************************************************"
#解压Oracle Patch包
unzip /opt/oracle/p35042068_190000_Linux-x86-64\(DB\).zip -d /opt/oracle
chown -R oracle:oinstall 35042068
fi

echo "******************************************************************Apply Oracle Patch******************************************************************"
#11g
#升级Oracle OPatch(安装数据库后升级OPatch和打补丁)
#mv /u01/app/oracle/product/11.2.0/dbhome_1/OPatch /u01/app/oracle/product/11.2.0/dbhome_1/OPatch.bak
#unzip p6880880_112000_Linux-x86-64.zip -d /u01/app/oracle/product/11.2.0/dbhome_1
#chown -R oracle:oinstall /u01/app/oracle/product/11.2.0/dbhome_1/OPatch
#查看OPatch版本(Oracle用户)
#opatch version

#安装Oracle Patch(Oracle用户)
#cd /opt/oracle/31537677
#opatch apply
#cd $ORACLE_HOME/rdbms/admin
#sqlplus /nolog
#SQL> CONNECT / AS SYSDBA
#SQL> STARTUP
#SQL> @catbundle.sql psu apply
#SQL> @utlrp.sql



#19c
#升级Oracle OPatch(安装数据库后升级OPatch和打补丁)
#mv /u01/app/oracle/product/19.3.0/dbhome_1/OPatch /u01/app/oracle/product/19.3.0/dbhome_1/OPatch.bak
#unzip /opt/oracle/p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/dbhome_1
#chown -R oracle:oinstall /u01/app/oracle/product/19.3.0/dbhome_1/OPatch
#查看OPatch版本(Oracle用户)
#opatch version

#安装Oracle Patch(Oracle用户)
#cd /opt/oracle/35042068
#opatch apply
#cd $ORACLE_HOME/rdbms/admin
#sqlplus /nolog
#SQL> CONNECT / AS SYSDBA
#SQL> STARTUP
#SQL> quit
#cd $ORACLE_HOME/OPatch
#./datapatch -verbose
#$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql


#四、重启OS##########################################################################################################
#关闭透明大页和numa需重启OS生效
reboot
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值