OS:rhel6.4
oracle:10.2.0.1
因为oracle10g出来的时间较长,很多10g使用到的包已经更新到了新的版本,所以在安装过程中会出现许多奇怪的问题。
比如64为系统需要许多32位的包,比如按照以下步骤走完之后,在安装软件过程中仍然会有
Bug 8993720 : ERROR INVOKING TARGET ‘COLLECTOR‘ OF MAKEFILE ‘$O_H/SYSMAN/LIB/INS_EMDB.MK‘
出现,但可以直接continue忽略即可。
#!/bin/bash #author:wjf #date:2015/04/22 #desc:before install oracle 10g on rhel6.3 echo "此版本适用于在rhel 6.4平台安装oracle 10g" v_install_user=oracle v_curr_date=`date +%Y%m%d%H%M` rpm -q binutils-2.* compat-db-4.* control-center-2.* gcc-* gcc-c++-* glibc-2.* glibc-common-2.* libstdc++-* libstdc++-devel-* make-3.* pdksh-5.\* sysstat-* compat-libstdc++-33-* >/tmp/wjf_rpm.txt rpm -q libXp libXt libXtst glibc-devel |grep i686 >>/tmp/wjf_rpm.txt v_not_installed_packages_tmp=`cat /tmp/wjf_rpm.txt |grep not |grep installed |cut -d ' ' -f 2` v_not_installed_packages=`echo -ne ${v_not_installed_packages_tmp}|sed 's/ //g'` if [ -n "${v_not_installed_packages}" ] then echo ${v_not_installed_packages} echo "请安装以上包后重新运行安装程序" else #=======用户(组)检查建立 echo "开始用户(组)建立……" for v_is_group in "dba" "oper" "oinstall" do v_is_group_exist=`cut -d ':' -f 1 /etc/group |grep ${v_is_group}` if [ -z "${v_is_group_exist}" ] then groupadd ${v_is_group} echo " 添加${v_is_group}组完成" else echo " ${v_is_group}组已存在" fi done if [ -z `cat /etc/passwd |grep ${v_install_user}` ] then echo " 增加用户${v_install_user}" useradd -g oinstall -G dba,oper ${v_install_user} passwd ${v_install_user} else echo " 用户${v_install_user}已存在" fi #===========内核参数调整 echo "开始内核参数调整" echo " 备份内核参数文件/etc/sysctl.conf至/etc/sysctl.conf.${v_curr_date}.bak" cp /etc/sysctl.conf /etc/sysconfig.conf.${v_curr_date}.bak echo " 修改内核参数至/etc/sysctl.conf" echo -ne "kernel.shmall = 2097152\nkernel.shmmax = 2147483648\nkernel.shmmni = 4096\nkernel.sem = 250 32000 100 128\nfs.file-max = 65536\nnet.ipv4.ip_local_port_range = 1024 65000\nnet.core.rmem_default = 262144\nnet.core.rmem_max = 262144\nnet.core.wmem_default = 262144\nnet.core.wmem_max = 262144\n" >>/etc/sysctl.conf sysctl -p >NULL #===========调整用户资源限制 echo "开始用户资源限制调整" echo " 备份用户资源限制文件/etc/security/limits.conf至/etc/security/limits.conf.${v_curr_date}.bak" cp /etc/security/limits.conf /etc/security/limits.conf.${v_curr_date}.bak echo " 备份/etc/pam.d/login文件至/etc/pam.d/login.${v_curr_date}.bak" cp /etc/pam.d/login /etc/pam.d/login.${v_curr_date}.bak echo " 调整用户资源限制" echo -ne "oracle soft nproc 16384\noracle hard nproc 16384\noracle soft nofile 65536\noracle hard nofile 65536\n" >>/etc/security/limits.conf echo "session required pam_limits.so" >>/etc/pam.d/login #===========安装目录建立 echo "开始安装目录调整" echo " 请输入oracle的安装目录" read v_install_path echo " 建立安装目录" mkdir -p ${v_install_path} echo " 更改目录属主(组)" chown -R ${v_install_user}:oinstall ${v_install_path} echo " 更改目录权限至755" chmod 755 ${v_install_path} #=============环境变量更改 echo "开始更改用户环境变量" echo -ne "export ORACLE_BASE=${v_install_path}\nexport ORACLE_HOME=\${ORACLE_BASE}/product/10.2.0/db_1\nexport LD_LIBRARY_PATH=\${ORACLE_HOME}/lib\nexport PATH=\${PATH}:\${ORACLE_HOME}/bin\n" >>/home/${v_install_user}/.bash_profile echo "所有设置完成,请直接运行oracle安装脚本" fi
输出结果
[[email protected] wjf_scripts]# bash pre-install-oracle.sh 此版本适用于在rhel 6.4平台安装oracle 10g 开始用户(组)建立…… dba组已存在 oper组已存在 oinstall组已存在 用户oracle已存在 开始内核参数调整 备份内核参数文件/etc/sysctl.conf至/etc/sysctl.conf.201504231800.bak 修改内核参数至/etc/sysctl.conf 开始用户资源限制调整 备份用户资源限制文件/etc/security/limits.conf至/etc/security/limits.conf.201504231800.bak 备份/etc/pam.d/login文件至/etc/pam.d/login.201504231800.bak 调整用户资源限制 开始安装目录调整 请输入oracle的安装目录 /oracle 建立安装目录 更改目录属主(组) 更改目录权限至755 开始更改用户环境变量 所有设置完成,请直接运行oracle安装脚本 [[email protected] wjf_scripts]#
未完善的地方
1、通过更改文件的方式更改内核存数和资源限制,如果在同一环境中重复执行此脚本,则文件内容出现重复。
总结下知识点
1、sed流编辑器的使用
删除匹配行 sed /匹配内容/d /tmp/ceshi.txt 它只会把结果输出出来,并不会更改原文件。
替换制定内容 sed s/替换掉的内容/替换后的内容/g /tmp/ceshi.txt 它会把所有匹配字符都替换掉,即默认全局
-i 把内容保存在文件中,比如 sed /匹配内容/d -i /tmp/ceshi.txt
2、grep匹配多个条件
grep -E ‘A|B|C‘
3、mkdir已存在目录
若目录已存在,则会直接报错。
加上参数“-p”则不会报错,但是-p参数作用为创建父目录,使用该参数不会重新创建目录,即原目录下的文件不会被删除。
4、cut命令回顾
cut -d ‘:‘ -f 2 /tmp/123.txt
5、date命令回顾
date设置时间显示格式。
时间: 2024-11-03 21:29:28