Oracle12c 部署脚本

脚本实现自动化一键部署,包括创建用户、依赖安装、日志生成等。
脚本分为三个部分,执行脚本就一个,执行之前要配置主机映射、挂盘操作,默认挂盘目录为/u01
脚本适用Oracle Linux 以及 CentOS Linux,改动内容见README.txt
详细源码见百度云:
链接:https://pan.baidu.com/s/1mnxUr2qAmhAtuJ7nZqYc0A 评论领取提取码
附上脚本代码:
1、执行脚本Deploy_Oracle.sh :

#!/bin/sh
set -o errexit
#Set up Linux and oracle
echo "Deploying Oracle..."

if [[ "$1" != "" ]] ; then
        DEFAULT_PWD=$1
        echo "Using user specified default password"
else
        DEFAULT_PWD=passW0RD 
fi

echo "Install prereqs..."
sh prereq.sh
echo "Install prereqs...done."
echo "Install Oracle..."
sh install.sh $DEFAULT_PWD
echo "Install Oracle...done."
echo "Set up Oracle..."
sh setup_db.sh $DEFAULT_PWD
echo "Set up Oracle...done."
echo "Deploying Oracle...done."

2、步骤代码1:prereq.sh

#!/bin/sh
#set -o errexit
#This scripts configures Linux for Oracle 12c
echo "Configure Linux for Oracle 12c..."

#directories, assuming these exist
SCRIPTDIR=$(pwd)
oracle_path=/u01
ORACLE_INSTALL_FILES=${oracle_path}/install_files
rpm_packages=${oracle_path}/rpm_packages
oracle_install=${oracle_path}/oracle12cR2_install
#confgure SELINUX if needed
SELINUX_CFG=/etc/selinux/config
cat $SELINUX_CFG  |grep "SELINUX=enforcing" > /dev/null
if [[ $? -eq 0 ]] ; then
        sed -e 's/SELINUX=enforcing/SELINUX=disabled/g' $SELINUX_CFG  > $SELINUX_CFG.tmp && mv $SELINUX_CFG.tmp $SELINUX_CFG    
        #Set SELINUX to Permissive in this session
        setenforce 0
fi

function create_swap(){
info=`swapon -s`
if [ -z "$info" ]; then
    echo "create swap file to oracle"
# you can change the value of " of =   bs=  count= " 单位g
    dd if=/dev/zero of=/u01/swapfile bs=1024 count=8388608 &> /dev/null
sleep 1
echo "/u01/swapfile create file success......"
/sbin/mkswap /u01/swapfile & > /dev/null
sleep 1
echo "swapfile文件格式化并转换为swap分区......" 
/sbin/swapon /u01/swapfile & > /dev/null
sleep 1
echo "挂载并激活分区......"
chmod -R 0600 /u01/swapfile & > /dev/null
echo "请手动将新的swap分区添加到/etc/fstab里(/var/swapfile swap swap defaults 0 0)......"
free=`free -h | grep wap: | awk -F " " '{print $2}'`
echo "swap大小为$free"

fi
}

#install Oracle prereq RPM
#this one adds oracle-user and configure kernel values and such
#cd /etc/yum.repos.d
#wget --no-check-certificate https://public-yum.oracle.com/public-yum-ol6.repo
#wget --no-check-certificate https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
#yum install -y bind-utils bind-utils  compat-libstdc++-33 glibc-devel ksh libaio-devel libstdc++-devel net-tools nfs-utils psmisc smartmontools sysstat unzip xorg-x11-utils xorg-x11-xauth
cd $rpm_packages
yum install *.rpm -y
cd $oracle_install
rpm -ivh oracle-database-server-12cR2-preinstall-1.0-2.el7.x86_64.rpm
#cd $SCRIPTDIR

if [ ! -e $ORACLE_INSTALL_FILES ];then
  mkdir -p $ORACLE_INSTALL_FILES
fi

cd ${oracle_path}
#unzip database files
#cd $ORACLE_INSTALL_FILES
#unzip linuxamd64_12102_database_1of2.zip
#unzip linuxamd64_12102_database_2of2.zip
unzip -d $ORACLE_INSTALL_FILES linuxx64_12201_database.zip
#cd $SCRIPTDIR
echo "开始创建swap文件"
create_swap
echo "Linux configured." 


步骤代码2 install.sh:

#!/bin/sh
#this script installs Oracle 12c database
#assumes unzipped Oracle 12c installfiles in dir /u01/install_files/database
#and Linux configured as per Oracle installation guide
#see script prereq.sh

echo "Silent Service: installing Oracle..."

if [[ "$1" != "" ]] ; then
        DEFAULT_PWD=$1
        echo "Using user specified default password"
else
        DEFAULT_PWD=passW0RD 
fi
SCRIPTDIR=$(pwd)
ORACLE_INSTALL_FILES=/u01/install_files

HOSTNAME=$(hostname -s)
DOMAINNAME=$(hostname -d)

ORCL_USR=oracle
ORCL_GRP=oinstall
ORCL_USR_GRP=$ORCL_USR:$ORCL_GRP
ORCL_HOME_DIR=/home/$ORCL_USR
ORCL_PORT=1521
ORCL_SID=orcl12c
ORCL_IGNORE_PREREQ=0

#change owner of /u01 directory
chown -R $ORCL_USR_GRP /u01
chmod -R 775 /u01

#set up oracle password
echo $DEFAULT_PWD | passwd --stdin $ORCL_USR > /dev/null

#modify default install response file
RESPONSE_FILE=db.rsp
sed -e "s/%HOSTNAME%/$HOSTNAME/g" $RESPONSE_FILE  > $RESPONSE_FILE.tmp && mv $RESPONSE_FILE.tmp $RESPONSE_FILE

cp $RESPONSE_FILE $ORCL_HOME_DIR/$RESPONSE_FILE
chown $ORCL_USR_GRP $ORCL_HOME_DIR/$RESPONSE_FILE

#install oracle silently using response file
if [[ $ORCL_IGNORE_PREREQ -eq 0 ]] ; then
      su - $ORCL_USR -c "cd $ORACLE_INSTALL_FILES/database;./runInstaller -silent -ignorePrereq -responseFile $ORCL_HOME_DIR/$RESPONSE_FILE" > runinstaller.log
else
      su - $ORCL_USR -c "cd $ORACLE_INSTALL_FILES/database;./runInstaller -silent -responseFile $ORCL_HOME_DIR/$RESPONSE_FILE" > runinstaller.log
fi

#wait until log dir exists
echo "Wait until log dir exists..."
ls -t /u01/app/oraInventory/logs &> /dev/null
while [[ $? -ne 0 ]] ; do
    ls -t /u01/app/oraInventory/logs &> /dev/null
done
LOGDIR=$(ls -t /u01/app/oraInventory/logs)
echo "Wait until log dir exists...done"

#wait until log dir is not empty
echo "Wait until log dir is not empty..."
while [[ -z $LOGDIR ]] ; do
    LOGDIR=$(ls -t /u01/app/oraInventory/logs)
done
echo "Wait until log dir is not empty...done"

LOGFILE=$(echo /u01/app/oraInventory/logs/$(ls -t /u01/app/oraInventory/logs | head -n 1))
echo "Waiting for Oracle installer to finish in background...."
echo "See log file $LOGFILE"
SHUTDOWN_TXT="Shutdown Oracle Database 12c"
grep -q "$SHUTDOWN_TXT" $LOGFILE
while [[ $? -ne 0 ]] ; do
        grep -q "$SHUTDOWN_TXT" $LOGFILE
done

echo "Executing oracle root scripts"
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/12.2.0/dbhome_1/root.sh
echo "Oracle is now installed"

echo "Set up environment variables for user oracle"

echo "#Oracle settings" >> $ORCL_HOME_DIR/.bash_profile
echo "export ORACLE_BASE=/u01/app/oracle" >> $ORCL_HOME_DIR/.bash_profile
echo "export ORACLE_SID=$ORCL_SID" >> $ORCL_HOME_DIR/.bash_profile
echo "export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1" >> $ORCL_HOME_DIR/.bash_profile
echo "export PATH=\$ORACLE_HOME/bin:\$PATH" >> $ORCL_HOME_DIR/.bash_profile
chown $ORCL_USR_GRP $ORCL_HOME_DIR/.bash_profile

#create database
echo "Creating oracle database"
RESPONSE_FILE=dbca.rsp
#GDBNAME=$HOSTNAME.$DOMAINNAME
GDBNAME=$ORCL_SID
sed -e "s/%GDBNAME%/$GDBNAME/g" $RESPONSE_FILE  > $RESPONSE_FILE.tmp && mv $RESPONSE_FILE.tmp $RESPONSE_FILE
sed -e "s/%PWD%/$DEFAULT_PWD/g" $RESPONSE_FILE  > $RESPONSE_FILE.tmp && mv $RESPONSE_FILE.tmp $RESPONSE_FILE
sed -e "s/%SID%/$ORCL_SID/g" $RESPONSE_FILE  > $RESPONSE_FILE.tmp && mv $RESPONSE_FILE.tmp $RESPONSE_FILE
cp $RESPONSE_FILE $ORCL_HOME_DIR/$RESPONSE_FILE
chown $ORCL_USR_GRP $ORCL_HOME_DIR/$RESPONSE_FILE
su - $ORCL_USR -c "dbca -silent -createDatabase -responseFile $ORCL_HOME_DIR/$RESPONSE_FILE"

#create network listener
echo "Creating network listener"
RESPONSE_FILE=netca.rsp
sed -e "s/%PORT%/$ORCL_PORT/g" $RESPONSE_FILE  > $RESPONSE_FILE.tmp && mv $RESPONSE_FILE.tmp $RESPONSE_FILE
cp $RESPONSE_FILE $ORCL_HOME_DIR/$RESPONSE_FILE
chown $ORCL_USR_GRP $ORCL_HOME_DIR/$RESPONSE_FILE
su - $ORCL_USR -c "export DISPLAY=$HOSTNAME:0.0;netca -silent -responseFile $ORCL_HOME_DIR/$RESPONSE_FILE"

#Open firewall for Oracle
echo "Configuring firewall..."
iptables -I INPUT 1 -p tcp -m tcp --dport $ORCL_PORT -j ACCEPT 
iptables -I INPUT 1 -p tcp -m tcp --sport $ORCL_PORT -j ACCEPT 
iptables -I OUTPUT 1 -p tcp -m tcp --sport $ORCL_PORT -j ACCEPT
iptables -I OUTPUT 1 -p tcp -m tcp --dport $ORCL_PORT -j ACCEPT
#save firewall rules
/sbin/service iptables save 
/sbin/service iptables restart

echo "Silent Service: installing Oracle... done." 

步骤代码3:setup_db.sh

#!/bin/sh

#set up Oracle database
if [[ "$1" != "" ]] ; then
        DEFAULT_PWD=$1
        echo "Using user specified default password"
else
        DEFAULT_PWD=passW0RD 
fi
ORCL_USR=oracle
ORCL_GRP=oinstall
ORCL_USR_GRP=$ORCL_USR:$ORCL_GRP
ORCL_HOME_DIR=/home/$ORCL_USR


#add user to database
echo "Add user '$ORCL_USR' to database..."
ORCL_DB_USR=$ORCL_USR
SQLFILE=$ORCL_HOME_DIR/createuser.txt
echo "CONNECT sys/$DEFAULT_PWD as sysdba;" >> $SQLFILE
echo "CREATE USER $ORCL_DB_USR IDENTIFIED BY $DEFAULT_PWD;" >> $SQLFILE
echo "GRANT CONNECT TO $ORCL_DB_USR;" >> $SQLFILE
echo "GRANT RESOURCE TO $ORCL_DB_USR;" >> $SQLFILE
echo "GRANT CREATE VIEW TO $ORCL_DB_USR;" >> $SQLFILE
echo "DISCONNECT;" >> $SQLFILE
echo "QUIT;" >> $SQLFILE
chown $ORCL_USR_GRP $SQLFILE
su - oracle -c "cat $SQLFILE | sqlplus /nolog" > sql.log
echo "Add user '$ORCL_USR' to database...done."

脚本内容待完善,欢迎大家给予见解,互相进步!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值