Oracle 11gR2自动安装脚本

备注:
  机器配置不限,本脚本只是帮助把软件安装好及配置好监听和库,保证能用的前提,具体参数需要自行根据实际情况进行调整。
  安装时必须提前配置好yum环境,如需查看如何配置yum请看:http://www.cnblogs.com/zhushenke/articles/8966262.html
  机器的系统必须为6.x或者7.x版本
  如需博主提供的安装包,请移步:链接:https://pan我是点baidu.com/s/1vhzzs42v3MHC2XF3xzgjew 密码:kxqv
####################Steup 1 Install oracle software

1 #!/bin/bash
  2 export PATH=$PATH
  3 
  4 ###set firewalld&selinux
  5 os=`cat /etc/redhat-release|awk '{print $4}'|awk -F'.' '{print $1}'`
  6 if [ ${os} == "7" ];then
  7     systemctl disable firewalld && systemctl stop firewalld
  8         systemctl disable abrt-ccpp
  9         systemctl disable abrtd
 10         systemctl disable atd
 11         systemctl disable auditd
 12         systemctl disable cpuspeed
 13         systemctl disable cups
 14         systemctl disable dnsmasq
 15         systemctl disable firstboot
 16         systemctl disable lvm2-monitor
 17         systemctl disable netconsole
 18         systemctl disable netfs
 19         systemctl disable ntpd
 20         systemctl disable ntpdate
 21         systemctl disable portreserve
 22         systemctl disable postfix
 23         systemctl disable rdisc
 24         systemctl disable restorecond
 25         systemctl disable saslauthd
 26         systemctl disable wdaemon
 27         systemctl disable wpa_supplicant
 28         systemctl disable NetworkManager
 29         systemctl disable blk-availability
 30         systemctl disable cpuspeed
 31         systemctl disable lvm2-monitor
 32         systemctl disable restorecond
 33         systemctl disable netconsole
 34     if [ `getenforce` == "Enforcing" ];then
 35         setenforce 0
 36         sed -i "s!SELINUX=enforcing!SELINUX=disabled!g" /etc/selinux/config
 37     elif [ `getenforce` == "Permissive" ];then
 38         sed -i "s!SELINUX=enforcing!SELINUX=disabled!g" /etc/selinux/config
 39     else
 40         continue
 41     fi
 42 else
 43     chkconfig iptables off && chkconfig ip6tables off && service iptables stop && service ip6tables stop
 44         chkconfig abrt-ccpp off
 45         chkconfig abrtd off
 46         chkconfig atd off
 47         chkconfig auditd off
 48         chkconfig cpuspeed off
 49         chkconfig cups off
 50         chkconfig dnsmasq off
 51         chkconfig firstboot off
 52         chkconfig lvm2-monitor off
 53         chkconfig netconsole off
 54         chkconfig netfs off
 55         chkconfig ntpd off
 56         chkconfig ntpdate off
 57         chkconfig portreserve off
 58         chkconfig postfix off
 59         chkconfig rdisc off
 60         chkconfig restorecond off
 61         chkconfig saslauthd off
 62         chkconfig wdaemon off
 63         chkconfig wpa_supplicant off
 64         chkconfig NetworkManager off
 65         chkconfig blk-availability off
 66         chkconfig cpuspeed off
 67         chkconfig lvm2-monitor off
 68         chkconfig restorecond off
 69         chkconfig netconsole off
 70     if [ `getenforce` == "Enforcing" ];then
 71                 setenforce 0
 72                 sed -i "s!SELINUX=enforcing!SELINUX=disabled!g" /etc/selinux/config
 73         elif [ `getenforce` == "Permissive" ];then
 74                 sed -i "s!SELINUX=enforcing!SELINUX=disabled!g" /etc/selinux/config
 75         else
 76                 continue
 77         fi
 78 fi
 79 
 80 ###set the ip in hosts
 81 hostname=`hostname`
 82 ip=`ip a|grep 'inet '|grep -v '127.0.0.1'|awk '{print $2}'|awk -F '/' '{print $1}'`
 83 for i in ${ip}
 84 do
 85     a=`grep "${i}" /etc/hosts`
 86     if [ ! -n "${a}" ];then
 87         echo "${i} ${hostname}" >> /etc/hosts 
 88     else
 89         break
 90     fi
 91 done
 92 
 93 ###create group&user
 94 ora_user=oracle
 95 ora_group=('oinstall' 'dba' 'oper')
 96 for i in ${ora_group[@]}
 97 do
 98     a=`grep '${i}' /etc/group`
 99     if [ ! -n ${a} ];then
100         groupdel ${i} && groupadd ${i}
101     else    
102         groupadd ${i}
103     fi
104 done
105 a=`grep 'oracle' /etc/passwd`
106 if [ ! -n ${a} ];then
107     userdel -r ${ora_user} && useradd -u 501 -g ${ora_group[0]} -G ${ora_group[1]},${ora_group[2]} ${ora_user}
108 else
109     useradd -u 501 -g ${ora_group[0]} -G ${ora_group[1]},${ora_group[2]} ${ora_user}
110 fi
111 echo "wincenter" | passwd --stdin ${ora_user}
112 ###create directory and grant priv
113 count=0
114 while [ $count -lt 3 ]
115 do
116     read -p "Please input the ORACLE_SID(e.g:orcl):" S1
117     read -p "Please input the ORACLE_SID again(e.g:orcl):" S2
118     if [ "${S1}" == "${S2}" ];then
119         export ORACLE_SID=${S1}
120         break
121     else
122         echo "You input ORACLE_SID not same."
123         count=$[${count}+1]
124     fi
125 done
126 count=0
127 while [ $count -lt 3 ]
128 do
129         read -p "Please input the ORACLE_BASE(e.g:/oracle/app):" S1
130         read -p "Please input the ORACLE_BASE again(e.g:/oracle/app):" S2
131         if [ "${S1}" == "${S2}" ];then
132                 export ORACLE_BASE=${S1}
133                 break
134         else    
135                 echo "You input ORACLE_BASE not same."
136                 count=$[${count}+1]
137         fi 
138 done
139 count=0
140 while [ $count -lt 3 ]
141 do
142         read -p "Please input the ORACLE_HOME(e.g:/oracle/app/db):" S1
143         read -p "Please input the ORACLE_HOME again(e.g:/oracle/app/db):" S2
144         if [ "${S1}" == "${S2}" ];then
145                 export ORACLE_HOME=${S1}
146                 break
147         else        
148                 echo "You input ORACLE_HOME not same."
149                 count=$[${count}+1]
150         fi      
151 done
152 if [ ! -d ${ORACLE_HOME} ];then
153     mkdir -p ${ORACLE_HOME}
154 else
155     continue
156 fi
157 if [ ! -d ${ORACLE_BASE}/data ];then
158     mkdir -p ${ORACLE_BASE}/data
159 else
160     continue
161 fi
162 if [ ! -d ${ORACLE_BASE}/recovery ];then
163     mkdir -p ${ORACLE_BASE}/recovery
164 else
165     continue
166 fi
167 ora_dir=`echo ${ORACLE_HOME}|awk -F '/' '{print $2}'`
168 last_dir=`echo ${ORACLE_HOME}|awk -F '/' '{print $NF}'`
169 
170 ###install require packages
171 yum -y install elfutils-libelf-devel binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel zip unzip tree
172 
173 ###set the sysctl,limits and profile
174 a=`grep 'fs.aio-max-nr' /etc/sysctl.conf`
175 if [ ! -n "${a}" ];then
176 cat << EOF >> /etc/sysctl.conf
177 fs.aio-max-nr = 1048576
178 fs.file-max = 6815744
179 kernel.shmall = 2097152
180 kernel.shmmax = 4294967295
181 kernel.shmmni = 4096
182 kernel.sem = 250 32000 100 128
183 net.ipv4.ip_local_port_range = 9000 65500
184 net.core.rmem_default = 262144
185 net.core.rmem_max = 4194304
186 net.core.wmem_default = 262144
187 net.core.wmem_max = 1048576
188 EOF
189 else
190     continue
191 fi
192 a=`grep 'oracle' /etc/security/limits.conf`
193 if [ ! -n "${a}" ];then
194 cat << EOF >> /etc/security/limits.conf
195 oracle soft nproc 2047
196 oracle hard nproc 16384
197 oracle soft nofile 1024
198 oracle hard nofile 65536
199 oracle soft stack 10240
200 EOF
201 else
202     continue
203 fi
204 a=`grep 'ORACLE_SID' /home/${ora_user}/.bash_profile`
205 if [ ! -n "${a}" ];then
206 cat << EOF >> /home/${ora_user}/.bash_profile
207 export ORACLE_SID=${ORACLE_SID}
208 export ORACLE_BASE=${ORACLE_BASE}
209 export ORACLE_HOME=\$ORACLE_BASE/${last_dir}
210 export PATH=\$PATH:\$ORACLE_HOME/bin
211 EOF
212 else
213     continue
214 fi
215 a=`grep 'oracle' /etc/profile`
216 if [ ! -n "${a}" ];then
217 cat << EOF >> /etc/profile
218 if [ \$USER = "oracle" ];then
219     if [ \$SHELL = "/bin/ksh" ];then
220         ulimit -p 16384
221         ulimit -n 65536
222     else
223         ulimit -u 16384 -n 65536
224     fi
225 else
226     continue
227 fi
228 EOF
229 else
230     continue
231 fi
232 a=`grep 'pam_limits.so' /etc/pam.d/login`
233 if [ ! -n "${a}" ];then
234 cat << EOF >> /etc/pam.d/login
235 session   required    /lib/security/pam_limits.so   
236 session   required    pam_limits.so 
237 EOF
238 else
239     continue
240 fi
241 sysctl -p && source /home/${ora_user}/.bash_profile
242 
243 ###unzip the install package and set response file
244 count=0
245 while [ $count -lt 3 ]
246 do
247     read -p "Please input the zip file location(e.g:/oracle/db.zip):" zfile
248     if [ ! -f ${zfile} ];then
249         echo "You input location not found zip file."
250         count=$[${count}+1]
251     else
252         export zfile=${zfile}
253         break
254     fi
255 done
256 unzip ${zfile} -d /${ora_dir} && chown -R ${ora_user}:${ora_group[0]}  /${ora_dir} && chmod -R 775 /${ora_dir}
257 
258 free_m=`free -m | grep 'Mem:'|awk '{print $2}'`
259 db_response_file=`find / -type f -name db_install.rsp`
260 data_dir=${ORACLE_BASE}/data
261 recovery_dir=${ORACLE_BASE}/recovery
262 cd `find / -type f -name db_install.rsp | sed -n 's:/[^/]*$::p'` && cd ../
263 install_dir=`pwd`
264 sed -i "s!oracle.install.option=!oracle.install.option=INSTALL_DB_SWONLY!g" ${db_response_file}
265 sed -i "s!ORACLE_HOSTNAME=!ORACLE_HOSTNAME=${hostname}!g" ${db_response_file}
266 sed -i "s!UNIX_GROUP_NAME=!UNIX_GROUP_NAME=${ora_group[0]}!g" ${db_response_file}
267 sed -i "s!INVENTORY_LOCATION=!INVENTORY_LOCATION=${ORACLE_BASE}/oraInventory!g" ${db_response_file}
268 sed -i "s!SELECTED_LANGUAGES=en!SELECTED_LANGUAGES=en,zh_CN!g" ${db_response_file}
269 sed -i "s!ORACLE_HOME=!ORACLE_HOME=${ORACLE_HOME}!g" ${db_response_file}
270 sed -i "s!ORACLE_BASE=!ORACLE_BASE=${ORACLE_BASE}!g" ${db_response_file}
271 sed -i "s!oracle.install.db.InstallEdition=!oracle.install.db.InstallEdition=EE!g" ${db_response_file}
272 sed -i "s!oracle.install.db.DBA_GROUP=!oracle.install.db.DBA_GROUP=${ora_group[1]}!g" ${db_response_file}
273 sed -i "s!oracle.install.db.OPER_GROUP=!oracle.install.db.OPER_GROUP=${ora_group[2]}!g" ${db_response_file}
274 sed -i "s!oracle.install.db.config.starterdb.type=!oracle.install.db.config.starterdb.type=GENERAL_PURPOSE!g" ${db_response_file}
275 sed -i "s!oracle.install.db.config.starterdb.globalDBName=!oracle.install.db.config.starterdb.globalDBName=${ORACLE_SID}!g" ${db_response_file}
276 sed -i "s!oracle.install.db.config.starterdb.SID=!oracle.install.db.config.starterdb.SID=${ORACLE_SID}!g" ${db_response_file}
277 sed -i "s!oracle.install.db.config.starterdb.characterSet=AL32UTF8!oracle.install.db.config.starterdb.characterSet=ZHS16GBK!g" ${db_response_file}
278 sed -i "s!oracle.install.db.config.starterdb.memoryLimit=!oracle.install.db.config.starterdb.memoryLimit=$[free_m*8/10]!g" ${db_response_file}
279 sed -i "s!oracle.install.db.config.starterdb.password.ALL=!oracle.install.db.config.starterdb.password.ALL=wincenter!g" ${db_response_file}
280 sed -i "s!oracle.install.db.config.starterdb.storageType=!oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE!g" ${db_response_file}
281 sed -i "s!oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=!oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=${data_dir}!g" ${db_response_file}
282 sed -i "s!oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=!oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=${recovery_dir}!g" ${db_response_file}
283 sed -i "s!oracle.installer.autoupdates.option=!oracle.installer.autoupdates.option=SKIP_UPDATES!g" ${db_response_file}
284 sed -i "s!SECURITY_UPDATES=!SECURITY_UPDATES=true!g" ${db_response_file}
285 su - oracle -c "${install_dir}/runInstaller -silent -ignoreDiskWarning -ignoreSysPrereqs -ignorePrereq -responseFile ${db_response_file}"

####################Steup 2 Confiture oracle listener&dbca
 1 #!/bin/bash
 2 export PATH=$PATH
 3 
 4 PASSWORD="wincenter"
 5 ORACLE_SID=`su - oracle -c 'source ~/.bash_profile && echo $ORACLE_SID'`
 6 ORACLE_BASE=`su - oracle -c 'source ~/.bash_profile && echo $ORACLE_BASE'`
 7 ORACLE_HOME=`su - oracle -c 'source ~/.bash_profile && echo $ORACLE_HOME'`
 8 
 9 temp=`ls ${ORACLE_BASE}|grep 'data'`
10 if [ ! -n ${temp} ];then
11         mkdir ${ORACLE_BASE}/data
12         export DATAFILE=${ORACLE_BASE}/data
13 else
14         export DATAFILE=${ORACLE_BASE}/data
15 fi
16 temp=`ls ${ORACLE_BASE}|grep 'area'`
17 if [ ! -n ${temp} ];then
18         mkdir ${ORACLE_BASE}/flash_recovery_area
19         export RECOVERY=${ORACLE_BASE}/flash_recovery_area
20 else
21         export RECOVERY=${ORACLE_BASE}/flash_recovery_area
22 fi
23 NETCA=`find / -type f -name netca.rsp`
24 sed -i "s!INSTALL_TYPE=""typical""!INSTALL_TYPE=""custom""!g" ${NETCA}
25 MEM=`free -m|grep 'Mem:'|awk '{print $2}'`
26 TOTAL=$[MEM*8/10]
27 
28 ###set listener&tnsnames
29 su - oracle << EOF
30 source ~/.bash_profile
31 ${ORACLE_HOME}/bin/netca -silent -responsefile ${NETCA}
32 dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -sysPassword ${PASSWORD} -systemPassword ${PASSWORD} -responseFile NO_VALUE -datafileDestination ${DATAFILE} -redoLogFileSize 1000 -recoveryAreaDestination ${RECOVERY} -storageType FS -characterSet ZHS16GBK -nationalCharacterSet AL16UTF16 -sampleSchema false -memoryPercentage 80 -totalMemory $TOTAL -databaseType OLTP -emConfiguration NONE
33 EOF

 

 

 

posted @ 2018-04-28 10:13  YasinZhu  阅读(2606)  评论(0编辑  收藏  举报