备注:
机器配置不限,本脚本只是帮助把软件安装好及配置好监听和库,保证能用的前提,具体参数需要自行根据实际情况进行调整。
安装时必须提前配置好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