• RHEL5 X86-64上安装Oracle 11gR2演示样例与总结


    进入Oracle DBA行业也有好几年了,可是说到安装Oracle的经验,我还真不是特别多,印象中刚開始每次安装都有点磕磕碰碰,随着接触Oracle的时间越来越长,各方面的原理、机制也都有一定的了解后,如今安装Oracle已经非常少会遇到问题了。基本上我把自己安装Oracle的方式能够归为以下三个阶段
    1. 刚接触和学习Oracle,安装全然没有头绪,仅仅能依照网上或者书上有截图的方式一步一步照样安装,出错后,仅仅能协助,然后又一次安装
    2. 接触Oracle一段时间以后,安装的基本原理、步骤也都了解了,一般都是再网上搜索一个安装演示样例(不须要多复杂),然后进行安装(或者是曾经保存的安装宝典文档,以此进行安装),这个阶段,总会碰到一些莫名其妙的错误,对错误大部分也处于畏惧信息
    3. 近两年開始,每次安装Oracle,我都会对比Oracle MOS上的安装文档或者官方文档一步一步操作,这个阶段,安装时非常少会出现错误,即使出现错误,也都可以解决(搜MOS,google等),心态平和
    如今回过头来总结,安装时出现错误的情况,一般都是没有依照官方的操作流程才会导致,因此强烈建议,安装Oracle时,可以參考官方文档的操作流程,这些安装文档,至少阅读一遍,肯定可以帮助你避免一些安装时莫名其妙的错误。

    我把安装Oracle软件和安装一个普通的软件进行对照,发现事实上两者之间本质上根本没有多少差别,仅仅是非常多时候我们没有关注而已,例如以下
    序号 安装Oracle软件的需求 安装普通软件的需求 备注
    1 符合要求的操作系统 符合要求的操作系统 不论什么软件的执行都依赖操作系统,因此,不论什么软件都须要执行符合要求的操作系统中
    2 满足条件的文件系统空间
    特别注意/tmp文件夹空间
    满足条件的文件系统空间 一般软件都须要占用一定的空间,因此,不论什么软件的安装,都须要满足条件的文件系统空间
    3 物理内存和虚拟内存
    特别注意虚拟内存的要求
    物理内存和虚拟内存 不论什么软件的执行和安装都不能离开内存
    4 依赖组件(rpm包)
    这一步对linux特别重要
    肯定存在,仅仅是我们可能没有注意 不论什么软件都是代码构成,起码得有能解析和执行这些代码的组件。这也算是一种依赖组件
    5 有意义的主机名 有意义的主机名 尽管软件的安装、执行不依赖主机名,可是,一个有意义的主机名会为你兴许省略非常多麻烦事
    6 网络设置
    主要为/etc/hosts
    网络设置(须要网络连接的软件) 假设该软件须要被其它机器连接,一般都须要配置网络,只是我们非常少关注而已
    7 内核參数设置,配置软件执行的一些特性,比如,最大可使用共享内存段大小等等 肯定也有,仅仅是我们一般非常少关注到,一般都是默认。  
    8 创建软件执行的专属用户,一般为oracle 一般也都须要,windows除外 一般我们都会为软件创建一个专属的执行用户
    9 给执行软件的用户加入限制 一般也都存在,仅仅是我们非常少注意 肯定都存在,我们不可能让一个软件发起几千个进程什么的,这就是一个限制
    10 赋予执行软件的用户一些权限 一般也都存在,仅仅是我们非常少注意 软件的执行肯定须要一些权限,所以,我们一般都会赋予它一些特权
    11 给执行Oracle的用户加入一些自己的环境变量 一般都存在,仅仅是我们非常少注意 比如,每一个软件的执行必须有PATH变量,仅仅是非常多时候我们没有关注
    12 特定的需求,特定的配置,比如RAC下的ssh互信什么的 假设软件有一些特殊特性,那肯定通常会存在一些特殊需求  


    另外几点
    1. 对于新安装的Oracle,建议先安装补丁或者升级包,然后再创建数据库,避免安装完后还须要升级数据库
    2. 尽量使用custom database这种选项来创建数据库,仅仅安装必要的组件
    3. 注意为数据库选择一个正确的字符集(一旦选择,基本不可更改)
    4. 为数据库设置一个符合你环境的合理參数

    以下是我在linux 5.6 上安装Oracle 11gR1的一次工作总结(非RAC环境),主要參考MOS文档:Master Note For Oracle Database Server Installation (文档 ID 1156586.1),以下是安装步骤
    一、操作系统与Oracle版本号验证检查
    检查当前的linux版本号能否安装相应的Oracle版本号,比如,RHEL 5上安装Oracle 11gR2是否经过官方验证,详细每一个linux版本号相应的验证,详见MOS上的文档
    Certification Information for Oracle Database on Linux x86-64 (文档 ID 1304727.1)

    我们待安装的操作环境例如以下,可看到满足需求
    内核版本号:Linux localhost.localdomain 2.6.18-238.el5 #1 SMP Thu Jan 13 15:51:15 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
    操作系统版本号:RHEL 5.6

    二、硬件需求检查(来自MOS)

        a.) At least 1.0 Gb (1024MB) of physical RAM. Recommended, 2gb or more.
        b.) Swap disk space proportional to the system's physical memory as follows:

    RAM Swap Space
    Between 1 GB and 2 GB 1.5 times the size of RAM
    Between 2 GB and 16 GB equal to the size of RAM
    More than 16 GB 16 GB

        c.) 1024 Mb of disk space (and less than 2Tb of disk space) in the /tmp directory.    

        d.) approximately 4.4 Gb of local disk space for the database software. 
        e.) approximately 1.7 Gb of disk space for a preconfigured database that uses file system storage (optional) 

    我们待安装的环境数据例如以下,能够看到满足硬件方面的需求(内存16G,交换空间18G)

    [root@localhost ~]# free -m
                 total       used       free     shared    buffers     cached
    Mem:         16021      10078       5942          0         81        879
    -/+ buffers/cache:       9117       6903
    Swap:        18015          0      18015

    三、软件需求检查
    (1)RHEL 5.2或者更高版本号,内核版本号必须是2.6.18-92或者以上
    (2)操作系统组件需求检查(rpm包),以下这些rpm必须安装
    binutils-2.17.50.0.6-6.el5 (x86_64)
    compat-libstdc++-33-3.2.3-61 (x86_64)
    compat-libstdc++-33-3.2.3-61 (i386)
    elfutils-libelf-0.125-3.el5 (x86_64)
    glibc-2.5-24 (x86_64)
    glibc-2.5-24 (i686) 
    glibc-common-2.5-24 (x86_64)
    ksh-20060214-1.7 (x86_64)
    libaio-0.3.106-3.2 (x86_64) 
    libaio-0.3.106-3.2 (i386) 
    libgcc-4.1.2-42.el5 (i386)
    libgcc-4.1.2-42.el5 (x86_64) 
    libstdc++-4.1.2-42.el5 (x86_64)
    libstdc++-4.1.2-42.el5 (i386) 
    make-3.81-3.el5 (x86_64)
    unixODBC-2.2.14 (x86_64)
    unixODBC-2.2.14 (i386)
    unixODBC-devel-2.2.14 (x86_64)
    unixODBC-devel-2.2.14 (i386)
    elfutils-libelf-devel-0.125-3 (x86_64)
    elfutils-libelf-devel-static-0.125-3.el5.x86_64.rpm 
    gcc-4.1.2-42.el5 (x86_64)
    gcc-c++-4.1.2-42.el5 (x86_64)
    glibc-devel-2.5-24 (x86_64)
    glibc-devel-2.5-24 (i386) 
    glibc-headers-2.5-24 (x86_64)
    kernel-headers-2.6.18-92 (x86_64)
    libgomp-4.1.2-42 (x86_64) 
    libstdc++-devel-4.1.2-42 (x86_64)
    libaio-devel-0.3.106-3.2 (x86_64) 
    libaio-devel-0.3.106-3.2 (i386)
    sysstat-7.0.2-1 (x86_64)
    kernel-headers-2.6.18-92.el5.x86_64.rpm 
    libgomp-4.1.2-42.el5.x86_64.rpm 
     注意: 64位系统中须要部分32RPM包,检查系统时注意包的位数
    通过以下的命令能查看软件包架构及位数
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep binutils 
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep compat-libstdc++
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep elfutils-libelf
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep glibc
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep glibc-common
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep ksh
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep libaio
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep libgcc
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep libstdc++
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep make
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep elfutils-libelf-devel
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep gcc
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep gcc-c++
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep glibc-devel
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep glibc-headers
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep kernel-headers
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep libgomp
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep libstdc++-devel
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep libaio-devel
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep sysstat
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep elfutils-libelf-devel-static
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep kernel-headers
    rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH}) " | grep libgomp

    安装rpm包的方法类似例如以下(缺失的包能够通过安装光盘中找到)
    [root@ localhost  rpmpgk]# rpm -ivh libaio-devel-0.3.106-5.i386.rpm
    warning: libaio-devel-0.3.106-5.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
    Preparing...                ########################################### [100%]
       1:libaio-devel           ########################################### [100%]
    [root@ localhost  rpmpgk]# rpm -ivh libaio-devel-0.3.106-5.x86_64.rpm
    warning: libaio-devel-0.3.106-5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
    Preparing...                ########################################### [100%]
       1:libaio-devel           ########################################### [100%]
    .....省略一部分rpm安装过程.........

    四、创建用户、用于执行Oracle软件
    groupadd oinstall
    groupadd dba
    useradd -g oinstall -G dba oracle
    passwd oracle
    备注
    1.假设是RAC环境,建议全部的用户和组的id都一致,可避免一些安装问题
    2.对于执行oracle软件的用户,没有明白归档必须为"oracle"用户,能够选择其他username,其他username执行oracle软件更加安全。

    五、改动主机名(符合详细环境)
    1. 通过hostname命令改动(这样的方式重新启动后失效)
    2. 改动/etc/sysconfig/network文件里的Hostanme參数,永久生效
    3. 改动/etc/hosts文件,改动为新的主机名
    详细过程例如以下:
    [root@localhost /]# hostname javadb
    [root@localhost /]# hostname
    javadb
    [root@localhost /]# cp /etc/sysconfig/network /etc/sysconfig/network0527
    [root@localhost /]# cp /etc/hosts /etc/hosts0527
    [root@javadb ~]# cat /etc/sysconfig/network
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=javadb
    [root@javadb ~]# cat /etc/hosts
    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    127.0.0.1               javadb localhost.localdomain localhost
    ::1             localhost6.localdomain6 localhost6
    xx.xx.xx.xx     javadb

    六、操作系统环境设置
    (1)改动/etc/sysctl.conf文件里操作系统核心參数配置,以下这些參数设置例如以下(假设当前核心參数设置的值比以下的更大,则这些參数无需改动,当中net.ipv4.ip_local_port_range參数的值必须全然一样)
    kernel.shmall = 4294967296
    kernel.shmmax = 68719476736       --最大共享内存段,用于Oracle SGA,不能低于你准备设置的SGA大小
    kernel.shmmni = 4096 
    kernel.sem = 250 32000 100 128 
    fs.file-max = 6815744
    fs.aio-max-nr = 1048576
    net.ipv4.ip_local_port_range = 9000 65500 
    net.core.rmem_default = 262144 
    net.core.rmem_max = 4194304 
    net.core.wmem_default = 262144 
    net.core.wmem_max = 1048576
    备注:这是基于我的安装环境进行的核心參数配置,详细对于不同的安装环境须要详细配置,主要是kernel.shmmax和kernel.shmall两个參数可能须要又一次配置
    详细步骤
    cp /etc/sysctl.conf /etc/sysctl.conf0527   --备份
    vi /etc/sysctl.conf    /* 将上面的參数一一设置为上面的值(假设当前核心參数的值比上面的更大,则不用改动) */
    sysctl -p         /* 使改动的核心參数的配置生效 */
    (2)设置oracle用户的一些限制(针对执行oracle软件的用户)
    a. 在/etc/security/limits.conf文件里配置加入例如以下内容
    oracle soft nproc 2047 
    oracle hard nproc 16384 
    oracle soft nofile 1024 
    oracle hard nofile 65536 
    oracle soft stack 10240
    b. 在/etc/pam.d/login文件里加入例如以下内容
    session required pam_limits.so
    c. 在/etc/profile文件里加入例如以下内容
    if [ $USER = "oracle" ]; then 
       if [ $SHELL = "/bin/ksh" ]; then 
           ulimit -u 16384 
           ulimit -n 65536 
       else 
           ulimit -u 16384 -n 65536 
       fi 
    fi
    备注
    a.假设安装了Java package,取消Java相关的设置环境变量,比如JAVA_HOME
    b.操作系统默认安装的SELinux 为"enforcing"模式,这会影响兴许sqlplus的使用(安装阶段不会有问题),必须切换为"Permissive"模式

    详细步骤
    cp /etc/security/limits.conf /etc/security/limits.conf0527
    vi  /etc/security/limits.conf
    cp /etc/pam.d/login /etc/pam.d/login0527
    vi /etc/pam.d/login
    cp /etc/profile /etc/profile0527
    vi /etc/profile

    七、Oracle用户设置环境变量
    在oracle用户下的.bash_profile中设置例如以下环境变量
    TMP=/tmp; export TMP
    TMPDIR=$TMP; export TMPDIR
    ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME
    ORACLE_SID=javadb; export ORACLE_SID
    ORACLE_TERM=xterm; export ORACLE_TERM
    PATH=/usr/sbin:$PATH; export PATH
    PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/home/oracle/sh:/home/oracle/dh/scripts:$PATH; export PATH
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
    CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;        export CLASSPATH
    NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
    export EDITOR=vim
    export LANG=en_US.UTF-8
    export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

    详细步骤
    su - oracle
    cp .bash_profile .bash_profile0527
    vi .bash_profile

    八、启用linux的HUGEPAGES(大页面内存2M)特性来管理oracle数据库须要的内存(SGA大于8G,建议都通过linux大内存页面来管理)
    a) 在/etc/security/limits.conf 中设置memlock值(单位KB),该值小于OS内存大小, 
    *   soft   memlock    98474836
    *   hard   memlock    98474836
    b)又一次登录root和oracle用户,检查memlock  limit
    $ ulimit -l 
    98474836
    c)确保你的所有实例都已经启动(包含ASM) ,然后依据Document 401749.1 的hugepages_settings.sh去评估须要设置的Hugepages的大小。
    $ ./hugepages_settings.sh 
    d)编辑/etc/sysctl.conf 设置 vm.nr_hugepages參数:
     vm.nr_hugepages = 30000 (大于SGA所需内存,再多加一部分就可以)
    Sysctl –p(使配置生效)
    e)停止实例并重新启动OS系统
    f)检查设置是否生效
    系统重新启动后,启动所有的数据库,通过下面命令检查
    # grep HugePages /proc/meminfo 
    HugePages_Free< HugePages_Total 既说明Hugepages已经生效,同一时候HugePages_Rsvd不为“0”.
    注意:此需求仅仅有在linux中才须要,其他hp-ux、aix都不要配置大内存,也没有大内存页面这一说法。

    九、安装oracle软件
    解压安装包后进入到database文件夹
     ./runInstaller 
    图形界面,一步一步就可以!

    希望这篇文章能够对安装Oracle还处于磕磕碰碰的朋友有所帮助





  • 相关阅读:
    过滤字符串
    sql业务分割
    如何用core自动创建model,与数据库连接
    记录日志
    easyui获取选中行上一行的数据
    获取天气插件代码
    粘包问题
    网络编程
    异常处理
    isinstance和issubclass、元类、反射
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4255471.html
Copyright © 2020-2023  润新知