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

Oracle 12.2集群安装基础环境配置脚本-持续优化中......

原创 袁长刚 2020-02-22
802
#linux执行因换行符兼容问题会报错,需要删除换行符,用如下命令:
#sed -i 's/\r$//' 脚本名

#全局变量配置
#主机名
HOST_NAME=rac1

#实例名
ORACLESID=racdb1

#软件安装主目录
INSTALL_DIRECTORY=/u01

#私有网卡名字
PRIV_CARD=enp0s8
#sga大小,单位GB,必需要小于hugepages,sga*1024/2+1024
SGA=5


#————————————————————脚本执行开始——————————————————————————————

#setup hostname
hostnamectl set-hostname $HOST_NAME

#清空/etc/hosts配置
cat /dev/null >/etc/hosts

#配置host IPV6地址
cat >> /etc/hosts <<EOF
::1 localhost.localdomain localhost

#public ip
fd17:625c:f037:2:d782:1527:c883:2211   rac1
fd17:625c:f037:2:553e:78bf:a220:b86b   rac2

#private ip
fd17:625c:f037:a801:51f6:635a:fa15:5831 rac1-priv
fd17:625c:f037:a801:392c:3f53:d008:9462  rac2-priv

#vip
fd17:625c:f037:2:bf7a:53c8:d92:e6b1  rac1-vip
fd17:625c:f037:2:b494:e9a5:c94c:bff7 rac2-vip

#scan ip
fd17:625c:f037:2:723f:5f7f:402e:18db  rac-scan

#网关地址
#fe80::5054:ff:fe12:3500

EOF

#setup /etc/sysconfig/network
echo "HOSTNAME=`hostname`">>/etc/sysconfig/network
echo "NOZEROCONF=yes">>/etc/sysconfig/network         

#setup /dev/shm
echo "tmpfs   /dev/shm                    tmpfs    rw,exec        0 0">>/etc/fstab

#setup /etc/sysctl.conf
HUGE=`bc -q << EOF
$SGA*1024/2+1024
EOF` 
echo "
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 30073741824
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.nr_hugepages = $HUGE

">> /etc/sysctl.conf && sysctl -p

#关闭并禁用防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

#可能会触发BUG,安装检测建议禁用
systemctl stop avahi-daemon.service
systemctl disable avahi-daemon.service



#关闭chronyd时间同步服务
systemctl stop chronyd
systemctl disable chronyd
mv /etc/chrony.conf /etc/chrony.conf.bak

#设置时区
timedatectl set-timezone Asia/Shanghai

#禁用selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config


#Linux 6 上的默认磁盘调度算法为CFQ(完全公平排队I/O调度算法),该算法的I/O分配是基于进程/线程平均分配的,
#并不适用于数据库这样希望大部分I/O都应用到数据库进程的系统。DEADLINE算法(截止时间调度)确保一个截止时间内服务请求,
#更适用与数据库系统。但是LINUX 7已经将默认的磁盘调度算法更改为DEADLINE。查看ASM磁盘的调度算法:

for i in b c d e f g h i;
do

echo deadline > /sys/block/sd$i/queue/scheduler
cat /sys/block/sd$i/queue/scheduler
done

#setup transparent huge pages 关闭透明大页
if cat /sys/kernel/mm/transparent_hugepage/enabled | grep "\[never\]" >> /dev/null
then
  echo "transparent huge pages readly closed!"
else
  sed -i 's/quiet/quiet transparent_hugepage=never/' /etc/default/grub
  grub2-mkconfig -o /boot/grub2/grub.cfg  
fi 

#check disk I/O scheduler
for i in `ls /sys/block|grep -v ^loop|grep -v ^ram`
do
     printf "%-20s %40s\n"  "$i" "`cat /sys/block/${i}/queue/scheduler`"
done


#start nscd
systemctl start nscd
systemctl enable nscd

#setup SSH
sed -i 's/#LoginGraceTime 2m/LoginGraceTime 0/' /etc/ssh/sshd_config

#setup user and group 
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 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
groupadd -g 54330 racdba
useradd -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba oracle
useradd -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid
echo "oracle"|passwd oracle --stdin
echo "grid"|passwd grid --stdin


#setup /etc/security/limits.conf
echo "
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 65536
oracle hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft nofile 65536
grid hard nofile 65536
oracle  soft    stack  10240
oracle  hard    stack  32768
grid    soft    stack  10240
grid    hard    stack  32768

oracle soft memlock -1
oracle hard memlock -1
grid   soft memlock -1
grid   hard memlock -1
root   soft memlock -1
root   hard memlock -1" >>/etc/security/limits.conf


#setup /etc/profile
echo "
if [ \$USER = \"oracle\" ] || [ \$USER = \"grid\" ] || [ \$USER = \"root\" ]; then
        if  [ \$SHELL = \"/bin/ksh\" ];  then
              ulimit -p 16384
              ulimit -n 65536
        else
              ulimit -u 16384 -n 65536
        fi
fi">>/etc/profile


#create directory
mkdir -p $INSTALL_DIRECTORY/app/12.2.0/grid
mkdir -p $INSTALL_DIRECTORY/app/grid
mkdir -p $INSTALL_DIRECTORY/app/oracle
chown -R grid:oinstall $INSTALL_DIRECTORY
chown oracle:oinstall $INSTALL_DIRECTORY/app/oracle
chmod -R 775 $INSTALL_DIRECTORY




#setup user profile
echo "export PATH
export ORACLE_BASE=$INSTALL_DIRECTORY/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_SID=$ORACLESID
export PATH=\$ORACLE_HOME/bin:\$PATH
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMP=/tmp
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export NLS_OS_CHARSET=ZHS16GBK
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
set -o vi
stty erase ^h
if [ -t 0 ]; then
   stty intr ^C
fi
umask 022">>/home/oracle/.bash_profile

echo "export PATH
export ORACLE_BASE=$INSTALL_DIRECTORY/app/grid
export ORACLE_HOME=$INSTALL_DIRECTORY/app/12.2.0/grid
export ORACLE_SID=+ASM1
export PATH=\$ORACLE_HOME/bin:\$PATH
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMP=/tmp
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export NLS_OS_CHARSET=ZHS16GBK
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
set -o vi
stty erase ^h
if [ -t 0 ]; then
   stty intr ^C
fi
umask 022" >>/home/grid/.bash_profile

#install soft
umount /dev/cdrom
mount /dev/cdrom /mnt
echo "
[LOCAL]
name = LOCAL
baseurl=file:///mnt/
gpgcheck=0
enabled=1">/etc/yum.repos.d/local.repo

yum install binutils.x86_64 compat-libcap1.x86_64 glibc.x86_64 glibc.i686 glibc-devel.i686 glibc-devel.x86_64 ksh libaio.x86_64 libaio.i686 libaio-devel.i686 libaio-devel.x86_64 libgcc.x86_64 libgcc.i686 libstdc++.x86_64 libstdc++.i686 libstdc++-devel.x86_64 libstdc++-devel.i686 libxcb.i686 libxcb.x86_64 libX11.x86_64 libX11.i686 libXau.i686 libXau.x86_64 libXi.x86_64 libXi.x86_64 libXtst.x86_64 libXtst.i686 make.x86_64 net-tools.x86_64 smartmontools.x86_64 gcc-c++ nscd -y

#挂载磁盘
partprobe
udevadm control --reload-rules
udevadm trigger --type=devices --action=change


#检查nscd状态
systemctl list-unit-files | grep nscd
systemctl -all | grep nscd

#检查透明大页是否关闭
cat /sys/kernel/mm/transparent_hugepage/enabled 

#时区检查
timedatectl | grep "Asia/Shanghai"
复制

注意:请将上面的文本复制到shell脚本中通过文件执行,直接复制在命令行执行,部份变量可能会被错误替换。

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

评论