首先得有一个response文件,这个文件可能从/staging/response中得到。当然还得做必要的修改。
可以根据需要做一些修改:
RESPONSEFILE_VERSION=2.2.1.0.0
FROM_LOCATION="../stage/products.xml"
ORACLE_HOME="/u01/app/oracle/product/10.1.0/db_1"
ORACLE_HOME_NAME="OUIHome1"
TOPLEVEL_COMPONENT={"oracle.server","10.1.0.3.0"}
DEINSTALL_LIST={"oracle.server","10.1.0.3.0"}
。。。
s_superAdminPasswdType="N"
b_useSamePassword=false
s_superAdminSamePasswd="oracle"
s_superAdminSamePasswdAgain="oracle"
sl_superAdminPasswds={"sys","system","oracle","oracle"}
sl_superAdminPasswdsAgain={"sys","system","oracle","oracle"}
接着在linux环境中还得做不好工作,当然这些都可以放到一个shell脚本中一次做完:
- 创建oraInst.loc文件,对于第一次安装,这是必要的
#if oracle was never installed in this machine, it is must
function create_oraInst_file()
{
#create file /etc/oraInst.loc
echo "Create oracle location file /etc/oraInst.loc"
echo
rm -f /etc/oraInst.loc
touch oraInst.loc
cat >> oraInst.loc << EOF
inventory_loc=${ORACLE_BASE}/oraInventory
inst_group=oinstall
EOF
cp oraInst.loc /etc/oraInst.loc
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
mkdir ${ORACLE_BASE}/oraInventory
chown oracle:oinstall ${ORACLE_BASE}/oraInventory
rm -f oraInst.loc
}
create user and group
#include groups: osinstall, dba, oper
#include use: oracle
function add_groups_and_user()
{
#add groups for installing oracle
echo
echo "check or add the groups for installing ORACLE "
echo
[ "`grep oinstall: /etc/group`" = "" ] && sudo /usr/sbin/groupadd oinstall
[ "`grep dba: /etc/group`" = "" ] && sudo /usr/sbin/groupadd dba
[ "`grep oper /etc/group`" = "" ] && sudo /usr/sbin/groupadd oper
! id oracle >&/dev/null && useradd oracle
usermod -g oinstall -G dba oracle
ORACLE_USER_DIR=$(get_user_directory oracle)
echo "User oracle directory: $ORACLE_USER_DIR"
cp /etc/sudoers /etc/sudoers.bak
sed '/.*/{/^( )*oracle/d}' /etc/sudoers > sudoers
cat >> sudoers <<EOF
oracle ALL=(ALL) NOPASSWD: ALL
EOF
cp -f sudoers /etc/
rm -f sudoers
}
#create oracle directory
function create_directory()
{
#make oracle_base
echo "make ORACLE_BASE:${ORACLE_BASE}"
echo
rm -rfv ${ORACLE_BASE}
mkdir -pv ${ORACLE_BASE}
mkdir -pv ${ORACLE_BASE}/oradata
chown -R oracle:oinstall ${ORACLE_BASE}
chmod -R 775 ${ORACLE_BASE}
#make directory /var/opt/oracle to contain files that describe various components of the
#Oracle server software installation
echo "make directory /var/opt/oracle to contain files that describe various components"
echo "of the Oracle server software installation"
echo
mkdir -pv /var/opt/oracle
chown oracle:dba /var/opt/oracle
chmod 755 /var/opt/oracle
}
#config system
function config_system_parameters()
{
echo "Config system parameters."
echo
cp /etc/sysctl.conf /etc/sysctl.conf.bak
sed '/.*/{/^kernel.shmall/d;/^kernel.shmmax/d;/^kernel.shmmni/d;/kernel.sem /d;/^fs.file-max/d;/^net.ipv4.ip_local_port_range/d}' /etc/sysctl.conf > sysctl.conf
cat >> sysctl.conf <<EOF
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
EOF
cp -f sysctl.conf /etc/
rm -f sysctl.conf
}
#need to change /etc/redhat-release
function config_release()
{
echo "Config OS release."
echo
[ -f /etc/redhat-release ] && mv /etc/redhat-release /etc/redhat-release.bak
cat >> redhat-release << EOF
Red Hat Enterprise Linux AS release 2.1 (Nahant Update 1)
EOF
cp -f redhat-release /etc/
rm -f redhat-release
}
function config_security_parameters()
{
echo "Config security parameters."
echo
cp /etc/security/limits.conf /etc/security/limits.conf.bak
sed '/.*/{/oracle/d}' /etc/security/limits.conf > limits.conf
cat >> limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
cp -f limits.conf /etc/security/limits.conf
rm -f limits.conf
cp /etc/pam.d/login /etc/pam.d/login.bak
if [ "`grep -c '^session.*required.*pam_limits.so' /etc/pam.d/login`" ]; then
echo "session required /lib/security/pam_limits.so" >> /etc/pam.d/login
fi
}
function config_user_parameters()
{
local user_name=$1
echo "Config $user_name user parameters."
echo
local user_dir=$(get_user_directory $user_name)
eval "sed '/.*/{/ORACLE/d}' ${user_dir}/.bashrc > bash_profile"
cat >> bash_profile <<EOF
[ -f /etc/bashrc ] && . /etc/bashrc
ORACLE_BASE=${ORACLE_BASE}
ORACLE_HOME=\$ORACLE_BASE/product/10.1.0/db_1
ORACLE_SID=bmcs
PATH=\$ORACLE_HOME/bin:\$PATH
LD_LIBRARY_PATH=\$ORACLE_HOME/jdk/jre/lib/i386
LD_LIBRARY_PATH=\$ORACLE_HOME/jdk/jre/lib/i386/server:\$LD_LIBRARY_PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH
EOF
eval "sed -n '/.*/w ${user_dir}/.bashrc' bash_profile"
. ${user_dir}/.bashrc
rm -f bash_profile
}
最后好好写安装命令,因为命令比较复杂也放到一个文件中了:
RETURN_CODE_ERROR_NET=101
RETURN_CODE_ERROR_CREATE_DB=102
RETURN_CODE_ERROR_OTHER=100
cmd="/home/oracle/Disk1/runInstaller -silent -responseFile /home/oracle/enterprise.rsp | awk \
'{if ( match(\$0,/^Check|Done|^Please check|successful|complete|succeed|in progress|^[^ ].*ing/) ) print \$0; \
if ( match(\$0,/^Launch.* Net.* Assistant/) ) {print \$0;print \"Config Oracle net ...\"};
if ( match(\$0,/^Launch.* Database.* Assistant/) ) {print \$0;print \"Create Database ...\"};
if ( endflag0 == 1 ) {exit endflag1}; \
if ( match(\$0,/Net Assistant .* unsucceed/) ) {endFlag1=$RETURN_CODE_ERROR_NET}; \
if ( match(\$0,/Database Assistant .* unsucceed/) ) {endFlag1=$RETURN_CODE_ERROR_NET}; \
if ( match(\$0,/The Installation .* successful/) ) {endFlag0=1;endFlag1=0}; \
if ( match(\$0,/The Installation .* unsuccessful/) ) {endFlag0=1;endFlag1=$RETURN_CODE_ERROR_OTHER} }'"
eval "$cmd"
retValue=$?
exit $retValue
OK了。
当然这个脚本还有很多需要完善,有空再做了。
分享到:
相关推荐
5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于...
5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于...
6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、...
5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于...
5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于...
使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标...
6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、...
5.5.1、静态包含 5.5.2、动态包含 5.6、跳转指令 5.7、实例操作:用户登陆程序实现(JSP + JDBC实现) 5.7.1、创建数据库表 5.7.2、程序实现思路 5.7.3、程序实现 5.8、本章摘要 5.9、开发实战讲解(基于...
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %> 23、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都...
6.4、response对象 6.4.1、设置头信息 6.4.2、页面跳转 6.4.3、操作Cookie 6.5、session对象 6.5.1、取得Session Id 6.5.2、登陆及注销 6.5.3、判断新用户 6.5.4、取得用户的操作时间 6.6、...
16 <br>0033 Return语句的使用 17 <br>0034 如何实现无限循环 17 <br>0035 巧用foreach语句控制控件 18 <br>0036 有效使用switch case语句 18 <br>2.3 运算符 19 <br>0037 如何使用...
# ZEN-SCAFFOLD ## 概述 ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
9.2.1 StreamWriter类实现写文件 368 9.2.2 通过File类创建文件 369 9.2.3 通过FileStream类创建文件 370 9.2.4 通过FileInfo类创建文件 370 9.2.5 追加文本 370 9.2.6 读取文本文件 371 9.2.7 读写二进制文件 372 ...
9.2.1 StreamWriter类实现写文件 368 9.2.2 通过File类创建文件 369 9.2.3 通过FileStream类创建文件 370 9.2.4 通过FileInfo类创建文件 370 9.2.5 追加文本 370 9.2.6 读取文本文件 371 9.2.7 读写二进制文件 372 ...
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %> 26、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都...
实际可以灵活设置参数,例如我们可以在方法中设置HttpServletRequest request,HttpServletResponse response,InMessage in, WeixinContext context等参数,这部分内容也放在使用参考部分说明。 本例中方法的返回...
1、方法一,在脚本前加入web_set_sockets_option("OVERLAPPED_SEND", "0"),禁用TTFB细分,问题即可解决,但是TTFB细分图将不能再使用,附图。 2、方法二,可以通过增加连接池和应用系统的内存,每次增加25%。 ...