Oracle静默安装

 

#!/bin/sh
##installoralce
##根据rhel实现自动安装oracle
##根据需要修改以下变量

export ORACLE_APP=/u01/app/oracle
export ORACLE_DATA=/u02/oradata
ORACLE_PW="123456"
export ORACLE_HOME=$ORACLE_APP/product/10.2.0

SOURCE_DIR=安装包下载

SCRIPT_DIR=安装脚本下载

uninstall() {

rm -rf $ORACLE_APP/* /u02/oradata/*
rm -rf /opt/ORCLfmap 
rm -rf /etc/oracle /etc/inittab.cssd
rm -f /etc/oraInst.loc /etc/oratab
rm -f /usr/local/bin/oraenv
rm -f /usr/local/bin/coraenv
rm -f /usr/local/bin/dbhome
}

input_sid() {
##input SID
echo -n "Please input SID_NAME:"
read SID_NAME


if [ -z $SID_NAME ]
then SID_NAME=center
fi
ORACLE_SID=$SID_NAME
}

set_env()
{
##backup files
rm -fr /etc/oraInst.loc
rm -fr /etc/oratab
cp /etc/sysctl.conf /etc/sysctl.conf.oracle
cp /etc/security/limits.conf /etc/security/limits.conf.oracle
cp /etc/pam.d/login /etc/pam.d/login.oracle
cp /etc/profile /etc/profile.oracle
cp /etc/csh.login /etc/csh.login.oracle
cp /etc/selinux/config /etc/selinux/config.oracle
cp /home/oracle/.bash_profile /home/oracle/.bash_profile.oracle
cp /etc/redhat-release /etc/redhat-release.oracle

##安装依赖的包
for PACKAGE in lftp binutils compat-gcc-* compat-gcc-*-c++ compat-libstdc++-*  \
    control-center gcc gcc-c++ glibc glibc-common libstdc++ libstdc++-devel  \
    make pdksh openmotif setarch sysstat glibc-devel libgcc libaio compat-db libXtst libXp ;
do
    yum -y install $PACKAGE
done

##创建 Oracle 组和用户帐户
groupadd oinstall
groupadd dba
useradd -m -g oinstall -G dba oracle
id oracle

##设置 oracle 帐户的口令
echo $ORACLE_PW |passwd oracle --stdin

##创建目录
mkdir -p $ORACLE_APP
mkdir -p $ORACLE_DATA
chown -R oracle:oinstall $ORACLE_APP $ORACLE_DATA
chmod -R 775 $ORACLE_APP $ORACLE_DATA


##配置 Linux 内核参数
cat >> /etc/sysctl.conf <<EOF
#use for oracle
kernel.shmall = 2097152
#kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
EOF

/sbin/sysctl -p

##为 oracle 用户设置 Shell 限制
cat >> /etc/security/limits.conf <<EOF
#use for oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
EOF

cat >> /etc/pam.d/login <<EOF
#session required /lib/security/pam_limits.so
EOF

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
    umask 022
fi
EOF

cat >> /etc/csh.login <<EOF
if ( \$USER == "oracle" ) then
    limit maxproc 16384
    limit descriptors 65536
    umask 022
endif
EOF

##关闭SELIINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

##oracle 用户的环境变量
cat >> /home/oracle/.bash_profile <<EOF
export ORACLE_BASE=$ORACLE_APP
export ORACLE_HOME=\$ORACLE_BASE/product/10.2.0
export ORACLE_SID=$SID_NAME
export PATH=\$PATH:\$ORACLE_HOME/bin:\$HOME/bin
export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
EOF
 

##su - oracle -c ". home/oracle/.bash_profile"

##设置Oracle10g支持RHEL5的参数
echo "redhat-4" > /etc/redhat-release
}

install_soft() {
##下载oracle
SYSTEM=`uname -p`
if [ "$SYSTEM" = "x86_64" ]
then
    ##lftp -c "pget -n 10 $SOURCE_DIR/10201_database_linux_x86_64.cpio.gz"
    zcat 10201_database_linux_x86_64.cpio.gz |cpio -idmv
else
    ##lftp -c "pget -n 10 $SOURCE_DIR/10201_database_linux32.zip"       
    unzip 10201_database_linux32.zip
    sleep 1
fi

##取得静默安装oracle应答文件
wget $SCRIPT_DIR/myinstoracle.rsp \
-O /usr/local/src/myinstoracle.rsp

##执行静默安装oracle
su - oracle -c "/usr/local/src/database/runInstaller -silent -responseFile \
 /usr/local/src/myinstoracle.rsp"

echo "##########################################"
echo "安装完毕后以root身份执行如下命令:"
echo "/u01/app/oracle/oraInventory/orainstRoot.sh"
echo "/u01/app/oracle/product/10.2.0/root.sh"

echo "请使用su - oracle,登录到oracle后执行init_oracle.sh,继续完成oracle的初始化工作!"
echo "###########################################"
}

set_autorun() {
   
echo "${ORACLE_SID}:${ORACLE_HOME}:Y" >/etc/oratab

sed -i 's/\/ade\/vikrkuma_new\/oracle/\$ORACLE_HOME/g' $ORACLE_HOME/bin/dbstart
cat > /etc/init.d/oracle <<EOF

#!/bin/bash
#
# chkconfig: 345 90 05
# description: Oracle 10g Server
# /etc/init.d/oracle
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface

export ORACLE_BASE=$ORACLE_APP
export ORACLE_HOME=\$ORACLE_BASE/product/10.2.0
export ORACLE_SID=${SID_NAME}
export PATH=\$PATH:\$ORACLE_HOME/bin

ORA_OWNR="oracle"

# if the executables do not exist -- display error

if [ ! -f \$ORACLE_HOME/bin/dbstart -o ! -d \$ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display

case "\$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
#su \$ORA_OWNR -c "\$ORACLE_HOME/bin/lsnrctl start"
su \$ORA_OWNR -c \$ORACLE_HOME/bin/dbstart
touch /var/lock/oracle

#su \$ORA_OWNR -c "\$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su \$ORA_OWNR -c "\$ORACLE_HOME/bin/lsnrctl stop"
su \$ORA_OWNR -c \$ORACLE_HOME/bin/dbshut
rm -f /var/lock/oracle

#su \$ORA_OWNR -c "\$ORACLE_HOME/bin/emctl stop dbconsole"
echo "OK"
;;
reload|restart)
\$0 stop
\$0 start
;;
*)
echo "Usage: \`basename \$0\` start|stop|restart|reload"
exit 1
esac
exit 0

EOF

chmod a+x /etc/init.d/oracle

chkconfig oracle on
   
}

##########################################
##以下仅仅生成init_oracle.sh文件,需要手工执行
##########################################
create_init_oracle() 

{

##create init_oracle.sh file,for continue init oracle。
export ORA_HOME=`cat /etc/passwd |grep oracle |awk -F:  '{print $6}'`

cat > ${ORA_HOME}/init_oracle.sh <<EOF
#!/bin/bash
##oracle init script
##author: zhuct 2008.12

#configure listener
${ORACLE_HOME}/bin/netca /silent /responseFile /usr/local/src/database/response/netca.rsp

##create dump dir
mkdir -p \${ORACLE_BASE}/admin/\${ORACLE_SID}/adump
mkdir -p \${ORACLE_BASE}/admin/\${ORACLE_SID}/bdump
mkdir -p \${ORACLE_BASE}/admin/\${ORACLE_SID}/cdump
mkdir -p \${ORACLE_BASE}/admin/\${ORACLE_SID}/pdump
mkdir -p \${ORACLE_BASE}/admin/\${ORACLE_SID}/pfile
mkdir -p \${ORACLE_BASE}/admin/\${ORACLE_SID}/udump
 

mkdir -p /u02/oradata/\${ORACLE_SID}/archive

##download spfile
wget ${SCRIPT_DIR}/initcenter.ora -O \${ORACLE_HOME}/dbs/init\${ORACLE_SID}.ora
cp -af \${ORACLE_HOME}/dbs/init\${ORACLE_SID}.ora \
\${ORACLE_BASE}/admin/\${ORACLE_SID}/pfile
sed -i "s/center/\${ORACLE_SID}/g" \${ORACLE_HOME}/dbs/init\${ORACLE_SID}.ora

##download createdatabase.sql
wget ${SCRIPT_DIR}/createDatabase.sql -O \$HOME/createDatabase.sql
sed -i "s/center/\${ORACLE_SID}/g" \$HOME/createDatabase.sql

##create orapwd file
rm -fr \${ORACLE_HOME}/dbs/orapw${ORACLE_SID}
orapwd file=\${ORACLE_HOME}/dbs/orapw\${ORACLE_SID} password=zdsoft

##Now create database
 
sqlplus / as sysdba <<EEOF
startup nomount pfile=\${ORACLE_HOME}/dbs/init\${ORACLE_SID}.ora
@\$HOME/createDatabase.sql;
conn  sys/zdsoft as sysdba
@\$ORACLE_HOME/rdbms/admin/catalog.sql;
@\$ORACLE_HOME/rdbms/admin/catproc.sql;
create spfile from pfile;
conn system/manager
@\$ORACLE_HOME/sqlplus/admin/pupbld.sql;
EEOF

#echo "Oracle init succeed!"
EOF

chown oracle:oinstall ${ORA_HOME}/init_oracle.sh
chmod u+x ${ORA_HOME}/init_oracle.sh

}

RETVAL=0

case "$1" in
        setenv)
                input_sid
                set_env
                ;;
        install)

              input_sid

                set_env
                install_soft
                create_init_oracle               
                ;;
        localinstall)
                ;;
        uninstall)
                uninstall
                ;;
        reinstall)
                input_sid               
                install_soft
                create_init_oracle               
                ;;
        init)

              input_sid
              set_autorun
                ;;
        status)
                RETVAL=$?
                ;;
        *)
                echo $"Usage: $0 {install|uninstall|reinstall|init|status}"
                RETVAL=1
esac
exit $RETVAL
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值