shell编程oracle10g安装在rhel6.4前的准备工作

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

shell编程oracle10g安装在rhel6.4前的准备工作的相关文章

oracle10g安装到rhel6.3(详细)

目 录 一.测试环境及软件   二.系统安装注意    三.安装Oracle10g前的系统准备工作    四.安装Oracle10g并进行相关设置    五.升级Oracle10g 七.新建实例 八.设置监听 九.安装后可能出现的问题 注意:本文默认:#前缀为root用户输入的命令,$前缀为数据库用户输入的命令 ****本文借用了几张其他同事的截图,特此感谢该同事允许我引用. 一.测试环境及软件 系统平台:rhel 6.3 x86_64(ESX下的 vmware 虚拟机) rhel-6.3-x8

Linux Shell编程实战---计算特定目录下前10个大文件

计算特定目录下前10个大文件 在给定的目录下,想知道有哪些大文件存在,取前十个,按文件大小排行 (1).使用awk来实现 #!/bin/bash path=/root/shell find $path-type f | awk '{ var=$0 "ls -l "var |getline var1 split(var1,a," ") filename=a[9] filesize=a[5] printf("%s %s\n",filename,fil

实验四 shell 编程(2)

一.实验步骤 1.shell 变量基本用法及常用符号使用 (1)将 主提示符改为 用户的主目录名 export PS=$HOME (2)将字符串 DOS file c:>\$student\*赋值给变量 x,并显示出来 (3)在 shell 命令终端输入 likes=(cosmos galaxy moon); likes[6]=mars,然后使用 echo 分别显示以下表达式的值,并结合结果,写出表达式的作用. likes=(cosmos galaxy moon); likes[6]=mars:

centos shell编程5LANMP一键安装脚本 第三十九节课

centos shell编程5LANMP一键安装脚本  第三十九节课 上半节课 下半节课 f

linux shell编程

1.什么是shell 2. 还是hello world程序 3. shell中的变量 3.1 系统变量 3.2 用户定义变量 3.2.1 用户定义变量规则 3.2.3 shell如何使用变量 3.2.3 全局变量 vs 局部变量 4. shell编程中的控制结构 4.1 条件判定 4.1.1 简单条件判定 4.1.2 组合判定 4.2  if - else 4.3 for 4.4 while 4.5 case 5. shell中的函数 5.1 函数声明和定义 5.2 函数调用 6. shell脚

SHELL编程学习笔记

本文描述unix shell的各种应用实例,根据查阅资料和自我总结,作为自己今后复习的模板.本文搜集整理常用的shell应用实例,以例子详述unixshell部分命令的使用,着重于正则表达式以及grep.sed.awk等命令,涵盖业务开发中需要使用到的unix shell编程命令,供查阅或者自测使用,面向已经熟悉UNIX基本操作的开发人员. 注:   文中大部分表达式在sco-unixunixware 7下使用sh测试通过,有些规则或表达式不能通过测试或结果不正确,在本文档中使用波浪下划线将其标

合格linux运维人员必会的30道shell编程面试题及讲解

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/1632876 超深度讲解shell高级编程实战,截至目前shell编程课程国内培训机构最细的课程,不信请看学员表现的水平. 课程牛不牛,不是看老师.课表,而是看培养的的学生水平,目前全免费中伙伴们赶紧看啊. http://edu.51cto.com/course/course_id-5257.html 企业合格的lin

Linux Shell编程讲解

Shell编程总结 Seq命令总结用法: 选项: -f, --format=格式使用printf 样式的浮点格式 -s, --separator=字符串使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同实例 来自: http://man.linuxde.net/seq 1.横着打印数字 2.竖着打印数字: 3.用seq输出,交给bc命令计算 注:可以计算加减乘除,浮点数,进制转换 Echo命令用法总结: echo 选项列表 选项 描述 -n

Linux Shell编程基础

在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐藏  -R 显示文件夹内的内容  -c 按照最后一次修改时间排序  -t 按照修改时间排序输出 echo 显示  -n 不换行 touch  创建一个文件,或者修改文件的访问时间和修改时间 touch -a file 只更改访问时间 -m之更改修改实际那 -t指定特定时间 cp  复制文件 -a 保