ITPub博客

首页 > 数据库 > Oracle > oracle 11g rhel6 单实例两键脚本(11gsetup.sh+dbcreate.sh)

oracle 11g rhel6 单实例两键脚本(11gsetup.sh+dbcreate.sh)

原创 Oracle 作者:we6100 时间:2018-05-24 13:35:05 0 删除 编辑
共两个脚本:
前提是配置好IP跟hostname
11gsetup.sh:环境准备+安装oracle软件
dbcreate.sh:创建数据库

本脚本在rhel6.7上测试通过

vi 11gsetup.sh
#!/bin/bash
#定义常量
SYSCTL=/etc/sysctl.conf
LIMITS=/etc/security/limits.conf
PAM=/etc/pam.d/login
PROFILE=/etc/profile
BASH_PROFILE=/home/oracle/.bash_profile
MEMORY_KB=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
MEMORY_BYTES=$[MEMORY_KB*1024]
#shmmax默认是数据库内存的一半
SHMMAX=$[MEMORY_KB*1024/2]
#shmall默认是数据库内存除以4096
SHMALL=$[MEMORY_KB*1024/4096]
IP=`ifconfig | grep "inet addr" |grep -v "127.0.0.1"| awk '{ print $2}' | awk -F: '{print $2}'`
HOSTNAME=`hostname`
#循环变量
i=1
#定义显示颜色
#颜色定义 信息(33黄色) 警示(31红色) 过程(36浅蓝)

usage()
{
    echo "Scripts: initialize the required env settings for Oracle 11gR2 installation on rhel 6.0+ x86_64"
    echo "Make sure you have prepared conditions list bellow:"
    echo -e "  \n\e[1;33m you must setup ip address first \e[0m"
    echo -e "  \n\e[1;33m yum, hosts, user oracle's passwd, oralce SID \e[0m"
    echo "The Script will backup config files with .ora_bak in case failure "
    echo "The Script will set the following change:"
    echo "  - add user oracle and group oinstall/dba/oper, etc."
    echo "  - make directory ORACLE_HOME and change owner"
    echo "  - modify oracle .bash_profile"
    echo "  - modify /etc/sysctl.conf kernel parameters like shmall/shmmax"
    echo "  - modify /etc/security/limits.conf "
    echo "  - install necessary packages like libgcc/libaio/unixODBC, etc."
    echo "  - IF anything goes wrong, you need to recover ora_bak files manually."
    echo -e "\n\e[1;33m please put oracle11g installation zip file into /soft directory and unzip \e[0m"
    echo -e "\n\e[1;33m Continue? (y/n [n]): \e[0m"
    read singal
    if [ $singal != "y" ]; then
        exit 0
    else
        echo "God Bless you! Settings started."
        echo ""
        echo ""
    fi
}


#判断执行用户是否root
isroot()
{
    if [ $USER != "root" ];then
        echo -e "\n\e[1;31m the user must be root,and now you user is $USER,please su to root. \e[0m"
        exit4
    else
        echo -e "\n\e[1;36m check root ... OK! \e[0m"
    fi
}
#挂在光盘到/mnt/cdrom目录下
mount_cdrom()
{
echo -e "\n\e[1;31m please insert RHEL to CDROM,press any key ...\e[0m"
read -n 1
if [ -d /mnt/cdrom ];then
     mount -t auto -o ro /dev/cdrom /mnt/cdrom
else
    mkdir -p /mnt/cdrom
    mount -t auto -o ro /dev/cdrom /mnt/cdrom
fi
if [ $? -eq 0 ];then
    echo -e "\n\e[1;36m CDROM mount on /mnt/cdrom ... OK! \e[0m"
fi
}

#修改/etc/hosts
hostsmodify()
{
grep $IP /etc/hosts>/dev/null
if [ $? -eq 0 ]; then
    echo "/etc/hosts has already been modified"
else
    echo "$IP $HOSTNAME" >> /etc/hosts
fi
}

#设置yum本地光盘源
yum_repo()
{
    rm -rf /etc/yum.repos.d/* && cat <> /etc/yum.repos.d/Server.repo
[Server]
name=MyRPM
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
#gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
EOF
if [ $? -eq 0 ];then
echo -e "\n\e[1;36m  /etc/yum.repos.d/Server.repo  ... OK! \e[0m"
fi
}
#添加oracle用户,添加oracle用户所属组oinstall及附加组dba
ouseradd()
{
    if [[ `grep "oracle" /etc/passwd` != "" ]];then
        userdel -r oracle
    fi
    if [[ `grep "oinstall" /etc/group` = "" ]];then
        groupadd -g 501 oinstall
    fi
    if [[ `grep "dba" /etc/group` = "" ]];then
        groupadd -g 502 dba
        groupadd -g 503 oper
#        groupadd -g 504 asmadmin
#        groupadd -g 506 asmdba
#        groupadd -g 505 asmoper
    fi
    useradd oracle -g oinstall -G dba,oper && echo $1 |passwd oracle --stdin
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m oracle's password updated successfully  --- OK! \e[0m"
    else
        echo -e "\n\e[1;31m oracle's password set faild.   --- NO!\e[0m"
    fi
}
#检查oracle所需软件包并安装
packagecheck()
{
for package in binutils compat-libcap1 compat-libstdc++-33  compat-libstdc++-33*i686 gcc elfutils-libelf* elfutils-libelf-devel*  gcc-c++ glibc glibc-2*i686 glibc-devel glibc-devel-2*i686  glibc-headers-2.* libgcc libgcc-4*i686 libstdc++ libstdc++-4*i686 libstdc++-devel libstdc++-devel-4*i686 libaio-0* libaio-0*i686 libaio-devel libaio-devel-0*i686 unixODBC unixODBC-2*i686 unixODBC-devel unixODBC-devel-2*i686 make sysstat
do
    rpm -q $package 2> /dev/null
    if [ $? != 0 ];then
        yum -y install $package 2> /dev/null
        echo  -e "\n\e[1;36m $package is installed ... OK! \e[0m"
    fi
done
}
#安装桌面套件 X Window System / Desktop
xdesk()
{
    LANG=C yum -y groupinstall "X Window System" "Desktop"
    if [ $? -eq 0 ];then
        echo  -e "\n\e[1;36m $package is already installed ... OK! \e[0m"
    fi
}
#系统环境检查
oscheck()
{
#查看内存大小是否大于1G
echo -e "\n check MEM Size ..."
if [ `cat /proc/meminfo | grep MemTotal | awk '{print $2}'` -lt 1048576 ];then
    echo  -e "\n\e[1;33m Memory Small \e[0m"
    exit 1
else
    echo -e "\n\e[1;36m Memory checked PASS \e[0m"
fi
#查看tmp空间大小
echo -e "\n check tmpfs Size ..."
cp /etc/fstab{,.ora_bak}
while true;do
if [ `df | awk '/tmpfs/ {print $2}'` -lt 1048576 ];then
    echo -e "\n\e[1;33m tmpfs Smaill \e[0m"
    sed -i '/tmpfs/s/defaults/defaults,size=1G/' /etc/fstab && mount -o remount /dev/shm
    if [ $? != 0 ];then
    i=i+1
        if [ $i -eq 3 ];then
            echo -e "\n\e[1;31m set tmpfs faild. \e[0m"
            exit 3
        fi
    else
        echo -e "\n\e[1;36 tmpfs updated successfully. \e[0m"
        break
    fi
else
    echo -e "\n\e[1;36m tmpfs checked PASS \e[0m"
    break
fi
done
}


# 设置内核参数
# shmall 物理内存<8G =2097152     >8G MemTotal/4kb
# shmmax 物理内存<8G = 4294967296 >8G 16GMemTotal = 10G=10*1024^3
kernelset()
{
    cp $SYSCTL{,.ora_bak} && cat <>$SYSCTL
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $SHMALL
kernel.shmmax = $SHMMAX
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
EOF
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m kernel parameters updated successfully --- OK! \e[0m"
    fi
sysctl -p
}
#设置oracle资源限制
oralimit()
{
    cp $LIMITS{,.ora_bak} && cat <> $LIMITS
oracle      soft    nproc   2047
oracle      hard    nproc   16384
oracle      soft    nofile  1024
oracle      hard    nofile  65536
oracle      soft    stack   10240
EOF
    if [ $? -eq 0 ];then
        echo  -e "\n\e[1;36m $LIMITS updated successfully ... OK! \e[0m"
    fi
cat $LIMITS | grep '^o'
}
#设置login文件
setlogin()
{
    cp $PAM{,.ora_bak} && cat <>$PAM
session     required    pam_limits.so
EOF
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m  $PAM updated successfully ... OK! \e[0m"
    fi
}
#设置profile文件
setprofile()
{
    cp $PROFILE{,.ora_bak} && cat <>$PROFILE
if [ $USER = "oracle" ];then
    if [ $SHELL = "/bin/ksh" ];then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
EOF
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m  $PROFILE updated successfully ... OK! \e[0m"
    fi
}
#设置oracle的profile文件
setbash_profile()
{
    cp $BASH_PROFILE{,.ora_bak} && cat <> $BASH_PROFILE
umask 022

#oracle settings
TMP=/tmp; export TMP
TMPDIR=\$TMP; export TMPDIR
ORACLE_BASE=$1/oracle
ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db_1
ORACLE_SID=$2
PATH=\$ORACLE_HOME/bin/:\$PATH
LANG=en_US.UTF-8
ORACLE_TERM=xterm
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM
LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib;
export LD_LIBRARY_PATH
CLASSPATH=\$ORACLE_HOME/jre:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
export CLASSPATH

EOF
    if [ $? -eq 0 ];then
        echo -e "\n\e[1;36m $BASH_PROFILE updated successfully ... OK! \e[0m"
    fi
#su - oracle -c source $BASH_PROFILE
}




usage
#停止NetworkManager
service NetworkManager stop
chkconfig NetworkManager off
#停止防火墙IPTABLES
service iptables stop
chkconfig iptables off
#关闭SELINUX
cp /etc/selinux/config{,.ora_bak} && sed -i '/SELINUX/s/enforcing/disabled/;/SELINUX/s/permissive/disabled/'   /etc/selinux/config
setenforce 0
#执行以上函数
isroot
hostsmodify
oscheck
yum_repo
mount_cdrom
packagecheck
#xdesk
kernelset
oralimit
setlogin
setprofile
echo -e "\n\e[1;33m please input oracle's user passwd: \e[0m"
read oraclepw
ouseradd $oraclepw

echo -e "\n\e[1;33m please input oracle install PATH (default /u01/app) \e[0m"
read oraclepath
if [ -z $oraclepath ];then
    oraclepath=/u01/app
fi
if [ ! -x "$oraclepath" ];then
    mkdir -p "$oraclepath"
    chown oracle.oinstall $oraclepath
    echo -e "\n\e[1;36 $oraclepath created. \e[0m"
fi

echo -e "\n\e[1;33m  please input oracle_sid, just for env (default orcl) \e[0m"
read orasid
if [ -z "$orasid" ];then
    orasid=orcl
fi
setbash_profile $oraclepath $orasid
mkdir -p $oraclepath/oracle/product/11.2.0/db_1 && chown -R oracle:oinstall $oraclepath && chmod -R 755 $oraclepath

#oracle安装响应文件
cat << eof >> /home/oracle/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=test
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=false
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.config.starterdb.characterSet=
oracle.install.db.config.starterdb.memoryOption=false
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
eof

unset i

#设置DISPLAY
#echo -e "\n\e[1;33m please input where to display the X Window (default 127.0.0.1:0.0) \e[0m"
#read xdpy
#if [ -z $xdpy ];then
#    xdpy=127.0.0.1:0.0
#fi
#su - oracle -c export DISPLAY=$xdpy && host +
#echo -e "\n\e[1;35m Oracle install pre-setting finish! && please run oracle installer as user oracle \e[0m"

echo -e "\n\e[1;35m Now begin to install oracle 11g. Please run root.sh manually after finish installation \e[0m"
sleep 5s
su - oracle -c "sh /soft/database/runInstaller -silent -noconfig -ignoreSysPrereqs -ignorePrereq -responseFile /home/oracle/db_install.rsp"


vi dbcreate.sh
#!/bin/bash
#dbca响应文件
HOSTNAME=`hostname`
#设置oracle sid
echo -e "\n\e[1;33m  please input oracle sid(default orcl) \e[0m"
read orasid
if [ -z "$orasid" ];then
    orasid=orcl
fi

#设置oracle sys&system密码
echo -e "\n\e[1;33m  please input oracle user sys&system password (default oracle) \e[0m"
read password
if [ -z "$password" ];then
    password=oracle
fi

#设置数据文件安装路径
echo -e "\n\e[1;33m  please input oracle datafile full path (default /oradata) \e[0m"
read dbfilepath
if [ -z "$dbfilepath" ];then
    dbfilepath=/oradata
fi
mkdir -p $dbfilepath/flash_recovery_area
chown -R oracle:oinstall $dbfilepath

#设置内存使用率
echo -e "\n\e[1;33m  please input oracle memory percent from host memory (default 50%) \e[0m"
read mempercent
if [ -z "$mempercent" ];then
    mempercent=50
fi

cat << eof >> /home/oracle/dbca.rsp
[GENERAL]
RESPONSEFILE_VERSION = "11.2.0"
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
GDBNAME = "$orasid.$HOSTNAME"
SID = "$orasid"
TEMPLATENAME = "General_Purpose.dbc"
SYSPASSWORD = "$password"
SYSTEMPASSWORD = "$password"
EMCONFIGURATION = "NONE"
STORAGETYPE=FS
DATAFILEDESTINATION = "$dbfilepath"
RECOVERYAREADESTINATION= "$dbfilepath/flash_recovery_area"
MEMORYPERCENTAGE = "$mempercent"
CHARACTERSET = "AL32UTF8"
eof

echo -e "\n\e[1;35m Now begin to create database \e[0m"
sleep 5s
su - oracle -c "dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp"
su - oracle -c "lsnrctl start"


参考文档:https://yq.aliyun.com/articles/47290

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31382913/viewspace-2155038/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2016-09-02

  • 博文量
    1
  • 访问量
    976