暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

初始化linux系统7和8版本的oracle环境,可借鉴

原创 陈洋 2023-10-11
264

#!/bin/bash

echo -e "\x1B[01;96m --------1.关闭防火墙: \x1B[0m"
fw=`grep '^AllowZoneDrifting=' /etc/firewalld/firewalld.conf |awk -F= '{print $2}'`
if [ "$fw" == "no" ];then
echo AllowZoneDrifting=no
else
echo 变更为echo AllowZoneDrifting=no
sed -i '/AllowZoneDrifting/{s/'$fw'/no/}' /etc/firewalld/firewalld.conf
echo 修改结果:
grep '^AllowZoneDrifting=' /etc/firewalld/firewalld.conf
fi
systemctl restart firewalld
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------2.关闭selinux: \x1B[0m"
st=`grep '^SELINUX=' /etc/selinux/config |awk -F= '{print $2}'`

if [ "$st" == "disabled" ];then
echo 已经是disabled状态!
else
echo 变更为disabled状态!
sed -i '/SELINUX/{s/'$st'/disabled/}' /etc/selinux/config
echo 修改结果:
grep '^SELINUX=' /etc/selinux/config
fi
setenforce 0
echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------3.修改服务器主机名: \x1B[0m"
echo 现用主机名: `hostname`
echo \

read -t 120 -p "是否需要更改主机名 1.更改 2.不更改:" cnum
echo \

if [ $cnum == 1 ];then
read -t 120 -p "请输入服务器新主机名:" cname
echo $cname > /etc/hostname
echo 当前修改后主机名:
cat /etc/hostname
else
echo 不需要修改!
fi
echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------4.修改/etc/hosts文件: \x1B[0m"

net=`ifconfig | awk -F: '{print $1}' |awk 'NR==1'`
wip=`ifconfig $net | grep netmask | awk '{print $2}'`
wname=`cat /etc/hostname`
sed -i "/$wip/d" /etc/hosts
echo "$wip $wname" >> /etc/hosts
echo \
echo 修改之后的/etc/hosts文件内容:
cat /etc/hosts

echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------5.修改/etc/security/limits.conf文件 \x1B[0m"
echo \

mem=`grep MemTotal /proc/meminfo | awk '{print $2}'`
nnum=$(($mem/1024/1024))
nnumxs=`echo "scale = 1;$mem/1024/1024" | bc| awk -F. '{print $2}'`

if [ $nnumxs -ge 5 ];then
nnum=$(($nnum+1))
echo 内存大小为:$nnum G
fi

sed -i '/oracle/d' /etc/security/limits.conf
echo \

sganum=$(($nnum*8/10*8/10))
pganum=$(($nnum*8/10*2/10))
pgaxs=`echo "scale = 1;$nnum*8/10*2/10" | bc| awk -F. '{print $2}'`

if [ $pgaxs -ge 5 ];then
pganum=$(($pganum+1))
fi


shmax=$((($nnum*8/10+1)*1024*1024*1024))
shmall=$((($nnum*8/10+1)*1024*1024/4))
hugnum=$((($sganum*1024)/2+200))
mnum=$((($sganum*1024+200)*1048))

echo 开始修改/etc/security/limits.conf文件:
cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 32768
oracle hard stack 32768
oracle soft memlock $mnum
oracle hard memlock $mnum
EOF

echo --------修改完成
echo \
echo 参数修改后:
grep oracle /etc/security/limits.conf


echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------6.修改/etc/sysctl.conf参数文件 \x1B[0m"
echo \

echo 开始修改/etc/sysctl.conf参数文件!

sed -i '11,100d' /etc/sysctl.conf

cat >> /etc/sysctl.conf <<EOF
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.panic_on_oops = 1
kernel.pid_max = 16384
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.shmmax = $shmax
kernel.shmall = $shmall
kernel.shmmni = 4096
vm.nr_hugepages= $hugnum
vm.swappiness=10
vm.vfs_cache_pressure=200
EOF

echo 参数添加以后:
/sbin/sysctl -p

echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------7.关闭透明大页和禁用numa功能 \x1B[0m"
echo \

a=0
if [ -e /etc/default/grub ];then
echo 当前/etc/default/grub配置参数:
grep GRUB_CMDLINE_LINUX /etc/default/grub
b=`grep -i transparent_hugepage /etc/default/grub | wc -l`
if [ $b == 0 ];then
a=1
else
a=2
fi

else
echo 当前/etc/grub.conf配置参数:
grep GRUB_CMDLINE_LINUX /etc/grub.conf
b=`grep -i transparent_hugepage /etc/grub.conf | wc -l`
if [ $b == 0 ];then
a=1
else
a=2
fi

fi
echo \

bnum=$a
if [ $bnum == 1 ];then
if [ -e /etc/default/grub ];then
sed -i '/GRUB_CMDLINE_LINUX/{s/quiet/quiet transparent_hugepage=never numa=off/}' /etc/default/grub
echo 修改之后:
grep GRUB_CMDLINE_LINUX /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /etc/grub2-efi.cfg
else
sed -i '/GRUB_CMDLINE_LINUX/{s/quiet/quiet transparent_hugepage=never numa=off/}' /etc/grub.conf
echo 修改之后:
grep GRUB_CMDLINE_LINUX /etc/grub.conf
fi
else
echo 不需要修改!
fi
echo \

echo -e "\033[5;41;33m 参数修改之后重启服务器生效! \033[0m"
echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------8.修改/etc/pam.d/login文件 \x1B[0m"

ws=`uname -r | awk -F_ '{print $2}'`
pz=`grep /lib64/security/pam_limits.so /etc/pam.d/login | wc -l`

if [ $ws == 64 ];then
echo `uname -r` 检查是否需要修改!
if [ $pz == 0 ];then
echo 需要修改
cat >> /etc/pam.d/login <<EOF
session required /lib64/security/pam_limits.so
EOF
echo 修改完成!
else
echo 不需要修改!
fi

else
echo `uname -r` 检查是否需要修改!
if [ $pz == 0 ];then
echo 需要修改
cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF
echo 修改完成!
else
echo 不需要修改!
fi
fi

echo 检查修改结果:

grep /lib /etc/pam.d/login
echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------9.修改/etc/profile参数文件 \x1B[0m"
hs=`grep oracle /etc/profile | wc -l`

if [ $hs == 0 ];then
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
else
echo 不需要修改!
fi



echo 修改之后查看:
cat /etc/profile | grep -A 9 'oracle'
echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------10.配置yum源、安装依赖包 \x1B[0m"

read -t 120 -p "输入系统版本 1.centos7; 2.centos8:" vs
# iso文件请上传至/opt目录下
name=`find /opt -name *.iso | grep DVD`
nhs=`find /opt -name *.iso | grep DVD | wc -l`
i=1

umount /dev/loop0
umount /dev/sr0
mount /dev/sr0 /mnt || i=$((i+1))
if [ $i == 2 ];then
echo /dev/sr0未映射!
if [ $nhs == 0 ];then
echo 未查找到iso文件!请上传iso文件!
else
mount -o loop $name /mnt/ || echo 挂载失败请手动检查
fi
else
echo 挂载成功!
fi


if [ $vs == 1 ];then
echo centos7开始配置yum源
mv -f /etc/yum.repos.d /etc/yum.repos.dbak
mkdir -p /etc/yum.repos.d
touch /etc/yum.repos.d/yum.repo
cat >> /etc/yum.repos.d/yum.repo <<EOF
[server]
name=server
baseurl=file:///mnt
enable=1
gpgcheck=0
EOF

else
mv -f /etc/yum.repos.d /etc/yum.repos.dbak
mkdir -p /etc/yum.repos.d
touch /etc/yum.repos.d/yum.repo
cat >> /etc/yum.repos.d/yum.repo <<EOF
[LocalAppStream]
name=LA
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1

[LocalBaseOS]
name=LB
baseurl=file:///mnt/BaseOS
gpgcheck=0
enabled=1
EOF
fi

yum clean all
yum makecache
yum repolist all

yum install net-tools nfs-utils xterm unixODBC unixODBC-devel libXp e2fsprogs e2fsprogs-libs -y

yum install bc gcc gcc-c++ binutils compat-libcap1 compat-libstdc++ dtrace-modules dtrace-modules-headers dtrace-modules-provider-headers dtrace-utils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libdtrace-ctf-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb make smartmontools sysstat libnsl -y

rpm -ivh $com
rpm -ivh $rlw --nodeps

echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------11.建立oracle用户并配置oracle环境变量 \x1B[0m"

hs=`grep oracle /etc/passwd | wc -l`
maxg=`df -Th | grep G |awk '{print $3}' | awk 'BEGIN {max=0} {if ($1+0 > max+0) max=$1} END {print max}'`
hsg=`df -h|grep $maxg | wc -l`
hsb=`grep ORACLE_HOME /home/oracle/.bash_profile | wc -l`

read -t 120 -p "请输入数据库安装所在挂载磁盘(例如:/home):" maxd

if [ $hs -ge 1 ];then
echo 已存在oracle用户!
else
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
useradd -u 54321 -g oinstall -G dba,oper oracle
echo "oracle" | passwd --stdin oracle
fi

if [ $hsb -ge 1 ];then
echo 已存在oracle环境变量!
else
echo 创建oracle安装路径:
mkdir -p $maxd/app/oracle/product/19/db_1
chown -R oracle:oinstall $maxd/app
chmod -R 775 $maxd/app
echo 添加环境变量
read -t 120 -p "配置oracle实例名:" oname
cat >> /home/oracle/.bash_profile <<EOF
ORACLE_SID=$oname;export ORACLE_SID
ORACLE_UNQNAME=$oname;export ORACLE_UNQNAME
ORACLE_BASE=$maxd/app/oracle; export ORACLE_BASE
ORACLE_HOME=\$ORACLE_BASE/product/19/db_1; export ORACLE_HOME
NLS_DATE_FORMAT="YYYY:MM:DDHH24:MI:SS"; export NLS_DATE_FORMAT
# NLS_LANG=american_america.ZHS16GBK; export NLS_LANG
NLS_LANG=AMERICAN_AMERICA.AL32UTF8; export NLS_LANG
TNS_ADMIN=\$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=\$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:\${JAVA_HOME}/bin:\${PATH}:\$HOME/bin:\$ORACLE_HOME/bin:\$ORA_CRS_HOME/bin
PATH=\${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH
LD_LIBRARY_PATH=\$ORACLE_HOME/lib
LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:\$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=\$ORACLE_HOME/JRE
CLASSPATH=\${CLASSPATH}:\$ORACLE_HOME/jlib
CLASSPATH=\${CLASSPATH}:\$ORACLE_HOME/rdbms/jlib
CLASSPATH=\${CLASSPATH}:\$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
umask 022
EOF
su - oracle -lc "source /home/oracle/.bash_profile"
fi

echo 配置结果:
cat /home/oracle/.bash_profile
echo \
echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \



echo -e "\x1B[01;96m --------12.配置tmpfs \x1B[0m"

hst=`grep tmpfs /etc/fstab | wc -l`

if [ $hst -ge 1 ];then
echo 已存在tmpfs配置!
else
cat >> /etc/fstab <<EOF
tmpfs /dev/shm tmpfs defaults,size=$(($nnum/2))G 0 0
EOF
mount -o remount /dev/shm
fi

cat /etc/fstab
df -Th
echo -e "\x1B[01;91m 完成 \x1B[0m"
echo \


echo 内存:$nnum
echo sga: $sganum
echo pga: $pganum
echo kernel.shmmax: $shmax
echo kernel.shmall: $shmall
echo vm.nr_hugepages: $hugnum
echo memlock: $mnum

最后修改时间:2023-10-11 17:44:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论