oracle11grac 安装shell

#!/bin/sh

#http://www.idevelopment.info/data/Oracle/DBA_tips/Oracle11gRAC/CLUSTER_12.shtml#iSCSI
SELFE_PRC=$0; export $SELFE_PRC
service iptalbes  stop
service ip6tables stop
service ntpd stop
service sendmail stop
#iscsiadm -m node -p  172.16.1.70  -T iqn.openfiler:70 -l -d 10
#iscsiadm -m discovery -t sendtargets -p 172.16.1.70:3260

chkconfig iptables  off
chkconfig ip6tables off
chkconfig sendmail  off
chkconfig ntpd      off
rm /etc/ntp.conf -f
mv /etc/ntp.conf to /etc/ntp.conf.org

echo '#-------------------------------------------定义参数'

RAC=rac1; export $RAC

ASM_NAME='+ASM1'  ; export $ASM_NAME
ORCL_NAME='orcl1' ; export $ORCL_NAME

GATEWAY_IP=172.16.1.39; export $GATEWAY_IP

RAC_IP1=172.16.1.31; export $RAC_IP1
RAC_IP2=172.16.1.32; export $RAC_IP2
RAC_IP3=172.16.1.33; export $RAC_IP3
RAC_VIP_IP1=172.16.1.41; export $RAC_VIP_IP1
RAC_VIP_IP2=172.16.1.42; export $RAC_VIP_IP2
RAC_VIP_IP3=172.16.1.43; export $RAC_VIP_IP3
RAC_PRIV_IP1=10.0.0.31; export $RAC_PRIV_IP1
RAC_PRIV_IP2=10.0.0.32; export $RAC_PRIV_IP2
RAC_PRIV_IP3=10.0.0.33; export $RAC_PRIV_IP3


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



echo '#--------------------------------------------修改DNS'
cat >/etc/hosts<<EOF
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1    localhost.localdomain localhost
::1          localhost6.localdomain6 localhost6
$RAC_IP1 rac1
$RAC_IP2 rac2
$RAC_IP3 rac3

$RAC_VIP_IP1 rac1-vip
$RAC_VIP_IP2 rac2-vip
$RAC_VIP_IP3 rac3-vip

$RAC_PRIV_IP1 rac1-priv
$RAC_PRIV_IP2 rac2-priv
$RAC_PRIV_IP3 rac3-priv

EOF

echo '#---------------------------------------------修改HOSTNAME'

cat >/proc/sys/kernel/hostname<<EOF
$RAC
EOF
hostname $RAC

echo '#---------------------------------------------------------'
cat >/etc/resolv.conf<<EOF
; generated by /sbin/dhclient-script
nameserver $GATEWAY_IP

EOF

cat >/etc/sysconfig/network<<EOF
NETWORKING_IPV6=no
HOSTNAME=$RAC
GATEWAY=$GATEWAY_IP

EOF

groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmoper
groupadd -g 506 asmdba
useradd  -g oinstall -G dba,asmdba,oper oracle
useradd  -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid



mkdir -p /u01/app/grid
chown -R grid:oinstall  /u01/app/grid

mkdir -p /u01/app/11.2.0/grid/product/db_1
chown -R grid:oinstall  /u01/app/11.2.0

mkdir -p /u01/app/oraInventory
chown -R grid:oinstall  /u01/app/oraInventory


mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall  /u01/app/oracle



echo '#--------------------------------------------------------修改用户密码passwd grid'
echo "111111" | passwd grid   --stdin > /dev/null 2>&1
echo "111111" | passwd oracle --stdin > /dev/null 2>&1


chown -R grid:oinstall /usr/local/grid 
chown -R oracle:oinstall /usr/local/database


echo '#----------------------------------------------------------vi /etc/security/limits.conf'

cat >>/etc/security/limits.conf<<EOF

#ORACLE SETTING
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

EOF
echo '#------------------------------------vi /etc/pam.d/login'

echo 'session required pam_limits.so' >>/etc/pam.d/login

echo '#------------------------------------ vi /etc/sysctl.conf'

cat  >> /etc/sysctl.conf <<EOF

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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 = 1048586

EOF

sysctl -p

#------------------------------------------------------修改profile
cat >> /etc/profile <<EOF
if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then 
    if [ \$SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
    umask 022
fi
EOF

#--------------------------------------------------------修改 csh.login

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




echo '#------------------------------------------修改gird 用户的.bash_profile 文件:'

cat  >> /home/grid/.bash_profile <<EOF

# ---------------------------------------------------
# ORACLE_SID
# ---------------------------------------------------
ORACLE_SID=$ASM_NAME; export ORACLE_SID

# ---------------------------------------------------
# JAVA_HOME
# ---------------------------------------------------
#JAVA_HOME=/usr/local/java; export JAVA_HOME

# ---------------------------------------------------
# ORACLE_BASE
# ---------------------------------------------------
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE

# ---------------------------------------------------
# ORACLE_HOME
# ---------------------------------------------------
ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME

# ---------------------------------------------------
# ORACLE_PATH
# ---------------------------------------------------
ORACLE_PATH=/u01/app/oracle/common/oracle/sql; export ORACLE_PATH

# ---------------------------------------------------
# SQLPATH
# ---------------------------------------------------
# Specifies the directory or list of directories that
# SQL*Plus searches for a login.sql file.
# ---------------------------------------------------
# SQLPATH=/u01/app/common/oracle/sql; export SQLPATH

# ---------------------------------------------------
# ORACLE_TERM
# ---------------------------------------------------
ORACLE_TERM=xterm; export ORACLE_TERM

# ---------------------------------------------------
# NLS_DATE_FORMAT
# ---------------------------------------------------
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"; export NLS_DATE_FORMAT

# ---------------------------------------------------
# TNS_ADMIN
# ---------------------------------------------------
TNS_ADMIN=\$ORACLE_HOME/network/admin; export TNS_ADMIN

# ---------------------------------------------------
# ORA_NLS11
# ---------------------------------------------------
ORA_NLS11=\$ORACLE_HOME/nls/data; export ORA_NLS11

# ---------------------------------------------------
# PATH
# ---------------------------------------------------

PATH=.:\${JAVA_HOME}/bin:\${PATH}:\$HOME/bin:\$ORACLE_HOME/bin
PATH=\${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=\${PATH}:/u01/app/common/oracle/bin
export PATH

# ---------------------------------------------------
# LD_LIBRARY_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
# ---------------------------------------------------
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
# ---------------------------------------------------
THREADS_FLAG=native; export THREADS_FLAG

# ---------------------------------------------------
# TEMP, TMP, and TMPDIR
# ---------------------------------------------------
export TEMP=/tmp
export TMPDIR=/tmp

# ---------------------------------------------------
# UMASK
# ---------------------------------------------------
if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then
 if [ \$SHELL = "/bin/ksh" ]; then
   ulimit -p 16384
   ulimit -n 65536
 else
   ulimit -u 16384 -n 65536
fi
  umask 022
fi


EOF


echo '#-----------------------------oracle 用户配置文件ORACLE_HOSTNAME 请自行设置'
# Oracle Settings oracle
cat >> /home/oracle/.bash_profile<<EOF
# ---------------------------------------------------
# ORACLE_SID
# ---------------------------------------------------
ORACLE_SID=$ORCL_NAME; export ORACLE_SID

# ---------------------------------------------------
# ORACLE_UNQNAME
# ---------------------------------------------------
ORACLE_UNQNAME=racdb; export ORACLE_UNQNAME

# ---------------------------------------------------
# JAVA_HOME
# ---------------------------------------------------
#JAVA_HOME=/usr/local/java; export JAVA_HOME

# ---------------------------------------------------
# ORACLE_BASE
# ---------------------------------------------------
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

# ---------------------------------------------------
# ORACLE_HOME
# ---------------------------------------------------
ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME

# ---------------------------------------------------
# ORACLE_PATH
# ---------------------------------------------------
ORACLE_PATH=/u01/app/common/oracle/sql; export ORACLE_PATH
# SQLPATH=/u01/app/common/oracle/sql; export SQLPATH

# ---------------------------------------------------
# ORACLE_TERM
# ---------------------------------------------------
ORACLE_TERM=xterm; export ORACLE_TERM

# ---------------------------------------------------
# NLS_DATE_FORMAT
# ---------------------------------------------------
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"; export NLS_DATE_FORMAT

# ---------------------------------------------------
# TNS_ADMIN
# ---------------------------------------------------
TNS_ADMIN=\$ORACLE_HOME/network/admin; export TNS_ADMIN

# ---------------------------------------------------
# ORA_NLS11
# ---------------------------------------------------
ORA_NLS11=\$ORACLE_HOME/nls/data; export ORA_NLS11

# ---------------------------------------------------
# PATH
# ---------------------------------------------------
PATH=.:\${JAVA_HOME}/bin:\${PATH}:\$HOME/bin:\$ORACLE_HOME/bin
PATH=\${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=\${PATH}:/u01/app/common/oracle/bin
export PATH

# ---------------------------------------------------
# LD_LIBRARY_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
# ---------------------------------------------------
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
# ---------------------------------------------------
THREADS_FLAG=native; export THREADS_FLAG

# ---------------------------------------------------
# TEMP, TMP, and TMPDIR
# ---------------------------------------------------
export TEMP=/tmp
export TMPDIR=/tmp

# ---------------------------------------------------
# UMASK
# ---------------------------------------------------

             
if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then
 if [ \$SHELL = "/bin/ksh" ]; then
   ulimit -p 16384
   ulimit -n 65536
 else
   ulimit -u 16384 -n 65536
fi
  umask 022
fi

EOF

echo '#------------------------------------------------------------ YUM 环境,安装需要的包'

mkdir /mnt/cdrom -p
mount /dev/cdrom /mnt/cdrom

cat >/etc/yum.repos.d/mycdrom.repo<<EOF

[Server]
name=rhel6server
baseurl=file:///mnt/cdrom/Server
enable=1
gpcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
#gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-oracle

EOF


#yum groupinstall -y "gnome desktop environment"
#yum groupinstall -y "x window system"

yum groupinstall -y "chinese support"
yum install -y elfutils-libelf* gcc-* make* binutils* libaio* glibc* compat-libstdc++* libgcc* libstdc++* sysstat* unixODBC* ksh* expect* iscsi*


echo '#---------------------------------------------------------ssh-keygen 环境'


rm -f /home/oracle/.ssh/*;
rm -f /home/grid/.ssh/*;

su - grid   -c 'ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""'
su - oracle -c 'ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""'

su - grid   -c 'cp /home/grid/.ssh/id_rsa.pub   /home/grid/.ssh/authorized_keys'
su - oracle -c 'cp /home/oracle/.ssh/id_rsa.pub /home/oracle/.ssh/authorized_keys'

#  安装 ASM 支持包 

rpm -ivh /mnt/hgfs/oracle11g/oracleasm-support-2.1.7-1.el5.x86_64.rpm
rpm -ivh /mnt/hgfs/oracle11g/oracleasm-2.6.18-194.el5-2.0.5-1.el5.x86_64.rpm
rpm -ivh /mnt/hgfs/oracle11g/oracleasmlib-2.0.4-1.el5.x86_64.rpm


echo '#------------------------------------------------拷贝文件,并在RAC上自动执行'
auto_scp () {
    expect -c "set timeout -1;
                spawn scp -o StrictHostKeyChecking=no ${@:2};
                expect {
                    *assword:* {send -- $1\r;
                                 expect { 
                                    *denied* {exit 1;}
                                    eof
                                 }
                    }
                    eof         {exit 1;}
                }
                " 
    return $?
}

auto_ssh () {
    expect -c "set timeout -1;
                spawn ssh -o StrictHostKeyChecking=no $2 $3;
                expect {
                    *assword:* {send -- $1\r;
                                 expect {
                                    *denied* {exit 2;}
                                    eof
                                 }
                    }
                    eof         {exit 1;}
                }
                "
    return $?
}




echo '#--------------------------------------------建立可执行文件'

cat >/root/s0 <<EOF

auto_ssh_copy_id () {
    expect -c "set timeout -1;
                spawn ssh-copy-id -i \$1 \$2;
                expect {
                    *(yes/no)* {send -- yes\r;exp_continue;}
                    *assword:* {send -- 111111\r;exp_continue;}
                    eof        {exit 0;}
                }";
}

auto_ssh_copy_id /home/grid/.ssh/id_rsa.pub grid@rac1
auto_ssh_copy_id /home/grid/.ssh/id_rsa.pub grid@rac2
auto_ssh_copy_id /home/grid/.ssh/id_rsa.pub grid@rac3

auto_ssh_copy_id /home/oracle/.ssh/id_rsa.pub oracle@rac1
auto_ssh_copy_id /home/oracle/.ssh/id_rsa.pub oracle@rac2
auto_ssh_copy_id /home/oracle/.ssh/id_rsa.pub oracle@rac3

su - grid   -c 'ssh -o StrictHostKeyChecking=no rac1 date'
su - grid   -c 'ssh -o StrictHostKeyChecking=no rac2 date'
su - grid   -c 'ssh -o StrictHostKeyChecking=no rac3 date'

su - oracle   -c 'ssh -o StrictHostKeyChecking=no rac1 date'
su - oracle   -c 'ssh -o StrictHostKeyChecking=no rac2 date'
su - oracle   -c 'ssh -o StrictHostKeyChecking=no rac3 date'

EOF

chmod 755 /root/s0

if [ $RAC = 'rac1' ] ;  then


  rm /root/s2 -f
  rm /root/s3 -f

  cp /root/$SELFE_PRC /root/s2
  cp /root/$SELFE_PRC /root/s3

  sed -i s#RAC=rac1#RAC=rac2#g#      /root/s2
  sed -i s#RAC=rac1#RAC=rac3#g#      /root/s3

  sed -i s#ASM1#ASM2#g#      /root/s2
  sed -i s#ASM1#ASM3#g#      /root/s3

  sed -i s#orcl1#orcl2#g#      /root/s2
  sed -i s#orcl1#orcl3#g#      /root/s3
  
  
  chmod 755 /root/s?;
 

  auto_scp 111111 /root/s2  root@$RAC_IP2:/root/s2
  auto_ssh 111111 root@$RAC_IP2 /root/s2

  auto_scp 111111 /root/s3  root@$RAC_IP3:/root/s3
  auto_ssh 111111 root@$RAC_IP3 /root/s3


  echo '#-------------------------------------------配制 	SSH-KEYGEN'
  auto_ssh 111111 root@$RAC_IP1 /root/s0
  auto_ssh 111111 root@$RAC_IP2 /root/s0
  auto_ssh 111111 root@$RAC_IP3 /root/s0  

  rm /root/s2 -f
  rm /root/s3 -f
  rm /root/s0 -f
fi

  

原文地址:https://www.cnblogs.com/yuchunju/p/2530896.html