脚本分为 3 个核心函数 + 执行逻辑,整体流程:
int_profile():复制 bash 配置文件到/app目录,统一环境配置;install_oracle_client():下载并安装 Oracle 11gR2 客户端,包含用户 / 组创建、安装目录准备、环境变量配置、TNS 配置、静默安装等;jdk_install():下载并安装 JDK 1.6.0_45,配置全局环境变量;- 最后删除自身脚本文件,完成部署。
#!/bin/bash
int_profile() {
cd /app
\cp -rvf /home/yewu/.bash* /app
}
int_profile
install_oracle_client() {
cd /app
#下载文件
rm -rf client
wget -N http://172.16.0.123:80/SRCS/linux.x64_11gR2_client.zip
unzip linux.x64_11gR2_client.zip &>/dev/null
cd -
#建立用户与用户组
if [[ -z "$(id oracle 2>/dev/null)" ]]; then
sudo groupadd oinstall &>/dev/null
sudo groupadd dba &>/dev/null
sudo useradd -g oinstall -G dba oracle
sudo echo -e "Gaoyangsray\nGaoyangsray" | passwd oracle
else
echo "oracle用户已经存在"
fi
#建立安装目录
if [[ -d "/app/oracle" ]]; then
echo "/app/oracle已经存在"
backupfile="oracle_$(date +'%Y%m%d_%H%M%Si').tar.bz2"
echo "自动归档备份为$backupfile"
cd /app
#sudo tar cjf ./$backupfile oracle &>/dev/null
echo "初始化安装目录"
sudo \rm -rf /app/oracle/* &>/dev/null
else
sudo mkdir -p /app/oracle &>/dev/null
fi
sudo chown -R oracle:oinstall /app/oracle
sudo chmod -R 755 /app/oracle
#设置环境变量1
backupfile=".bash_profile_$(date +'%Y%m%d_%H%M%S').tar.bz2"
echo "自动归档备份为$backupfile"
sudo cat >/home/oracle/.bash_profile <<EOF
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=\$PATH:\$HOME/bin
# Oracle Settings
# Oracle Settings
TMP=/tmp
export TMP
TMPDIR=\$TMP
export TMPDIR
ORACLE_BASE=/app/oracle
export ORACLE_BASE
ORACLE_HOME=\$ORACLE_BASE/product/11.2/client_1
export ORACLE_HOME
export TNS_ADMIN=\$ORACLE_BASE/network/admin
ORACLE_SID=pro
export ORACLE_SID
ORACLE_TERM=xterm
export ORACLE_TERM
PATH=\$ORACLE_HOME/bin:\$PATH
export PATH
LD_LIBRARY_PATH=\$HOME/lib:\$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib:.
export CLASSPATH
export LD_ASSUME_KERNEL
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG
if [ \$USER = "oracle" ] || [ \$USER = "app" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
EOF
#设置环境变量2
backupfile=".bash_profile_$(date +'%Y%m%d_%H%M%S').tar.bz2"
echo "自动归档备份为$backupfile"
sudo cat >/app/.bash_profile <<EOF
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=\$PATH:\$HOME/bin
# Oracle Settings
# Oracle Settings
TMP=/tmp
export TMP
TMPDIR=\$TMP
export TMPDIR
ORACLE_BASE=/app/oracle
export ORACLE_BASE
ORACLE_HOME=\$ORACLE_BASE/product/11.2/client_1
export ORACLE_HOME
export TNS_ADMIN=\$ORACLE_BASE/network/admin
ORACLE_SID=pro
export ORACLE_SID
ORACLE_TERM=xterm
export ORACLE_TERM
PATH=\$ORACLE_HOME/bin:\$PATH
export PATH
LD_LIBRARY_PATH=\$HOME/lib:\$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib:.
export CLASSPATH
export LD_ASSUME_KERNEL
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG
if [ \$USER = "oracle" ] || [ \$USER = "app" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
EOF
#建立oraInst.loc文件
sudo cat >/etc/oraInst.loc <<EOF
inventory_loc=/app/oracle/oraInventory
inst_group=oinstall
EOF
sudo chmod 664 /etc/oraInst.loc
sudo mkdir -p /app/oracle/oraInventory
sudo chown -R oracle:oinstall /app/oracle
sudo chmod -R 755 /app/oracle
#修改rsp文件
sudo cat >/app/client/response/client.rsp <<EOF
oracle.install.responseFileVersion=/oracle/install/rspfmt_clientinstall_response_schema_v11_2_0
ORACLE_HOSTNAME=JSNJ-IVR-CS-LIN.10.2
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/app/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/app/oracle/product/11.2/client_1
ORACLE_BASE=/app/oracle
oracle.install.client.installType=Administrator
oracle.install.client.customComponents="oracle.sqlj:11.2.0.1.0","oracle.rdbms.util:11.2.0.1.0","oracle.javavm.client:11.2.0.1.0","oracle.sqlplus:11.2.0.1.0","oracle.dbjava.jdbc:11.2.0.1.0","oracle.ldap.client:11.2.0.1.0","oracle.rdbms.oci:11.2.0.1.0","oracle.precomp:11.2.0.1.0","oracle.xdk:11.2.0.1.0","oracle.network.aso:11.2.0.1.0","oracle.assistants.oemlt:11.2.0.1.0","oracle.oraolap.mgmt:11.2.0.1.0","oracle.network.client:11.2.0.1.0","oracle.network.cman:11.2.0.1.0","oracle.network.listener:11.2.0.1.0","oracle.ordim.client:11.2.0.1.0","oracle.ons:11.2.0.0.0","oracle.odbc:11.2.0.1.0","oracle.has.client:11.2.0.1.0","oracle.dbdev:11.2.0.1.0","oracle.rdbms.scheduler:11.2.0.1.0"
oracle.install.client.oramtsPortNumber=
oracle.install.client.schedulerAgentHostName=
oracle.install.client.schedulerAgentPortNumber=
EOF
#设置文件
mkdir -pv /app/oracle/network/admin/
cat >/app/oracle/network/admin/tnsnames.ora <<EOF
pro1=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.64.31)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = IVRPRO)
(SID=IVRPRO1)
)
)
pro2=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.64.32)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = IVRPRO)
(SID=IVRPRO1)
)
)
pro=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.64.41)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = IVRPRO)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
EOF
#安装client
\rm -f /tmp/oksilent.lock
su - oracle <<EOF
/app/client/runInstaller -silent -responseFile /app/client/response/client.rsp 2>/dev/null
if [[ "$(ps aux | grep -c "[r]unInstaller")" == "0" ]];then
echo "ok" >/tmp/oksilent.lock
fi
EOF
while :; do
if [[ -s "/tmp/oksilent.lock" ]]; then
echo "Next"
break 1
fi
echo "Wait oracle client silent install"
sleep 1
done
#root用户执行脚本
/app/oracle/product/11.2/client_1/root.sh 2>/dev/null
#测试
#sqlplus dbp/jsnjivrdbp@pro1
}
jdk_install() {
cd /tmp
wget -N -c "http://172.16.0.123/SRCS/jdk-6u45-linux-x64.bin"
if [[ -d "/tmp/jdk1.6.0_45" ]]; then
\rm -rf /tmp/jdk1.6.0_45
fi
chmod 755 ./jdk-6u45-linux-x64.bin && ./jdk-6u45-linux-x64.bin
\rm -f /tmp/jdk-6u45-linux-x64.bin
if [[ -d "/app/jdk1.6.0_45" ]]; then
\rm -rf /app/jdk1.6.0_45
fi
\mv /tmp/jdk1.6.0_45 /app/
cat >>/app/.bash_profile <<EOF
#JDK1.6
JAVA_HOME=/app/jdk1.6.0_45
PATH=\$JAVA_HOME/bin:\$PATH
CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
EOF
cat >>/home/oracle/.bash_profile <<EOF
#JDK1.6
JAVA_HOME=/app/jdk1.6.0_45
PATH=\$JAVA_HOME/bin:\$PATH
CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
EOF
}
install_oracle_client
jdk_install
rm -f /app/install.sh
Categories:
数据库运维