• Linux 常用工具小结:(3) Redhat 5.5 安装Oracle 11g


    安装Linux 11g Redhat 5.5

    • 登陆root

         # su root

    • 设置语言环境

      #export LANG=en_US.UTF-8

    • Oracle创建DBA组和用户

      创建安装配置

      cat >> /etc/oraInst.loc <<EOF

      > inventory_loc=oracle/oracle/oraInventory

      > inst_group=oinstall

      > EOF

      创建组:groupadd oradba

      创建组:groupadd oinstall

      创建用户:useradd -g oradba oracle

      确定oracle所在的组:

      usermod -g oinstall -G oradba oracle

    • 设定本地xhost访问权限

      xhost + 127.0.0.1

    • 编辑文件 /etc/sysctl.conf,修改以下项目,如果没有可以自己添加。

      kernel.shmall = 4194304 # 可以使用的共享内存的总量。我这里是64

      kernel.shmmax = 2147483648 # 最大共享内存段大小。
      kernel.shmmni = 4096 # 整个系统共享内存段的最大数目。
      kernel.sem = 250 32000 100 128 #
      每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。
      fs.file-max = 6815744 # 系统中所允许的文件句柄最大数目。
      net.ipv4.ip_local_port_range = 9000 65500 # 应用程序可使用的IPv4端口范围。
      net.core.rmem_default = 1048576 # 套接字接收缓冲区大小的缺省值
      net.core.rmem_max = 4194304 # 套接字接收缓冲区大小的最大值
      net.core.wmem_default = 262144 # 套接字发送缓冲区大小的缺省值
      net.core.wmem_max = 1048576# 套接字发送缓冲区大小的最大值

      fs.aio-max-nr = 1048576 #文件子系统

      使用/sbin/sysctl –p/sbin/sysctl –a验证。

      Oracle增加设置

      编辑文件:/etc/security/limits.conf

      添加以下内容:

      oracle           soft    nproc   2047

      oracle           hard    nproc   16384

      oracle           soft    nofile 1024

      oracle           hard    nofile 65536

    • 创建Orcale的安装目录

      创建Oracle系统目录:mkdir /oracle
      创建Oracle服务器主目录:mkdir /oracle/11g

    将该目录的所有者设置为oraclechown oracle /oracle -R
      编辑 /etc/profile,在后面追加以下两行
      ORACLE_BASE=/work/oracle/
      ORACLE_HOME=/work/oracle/11g

      ORACLE_SID=DB11G

      export ORACLE_BASE ORACLE_SID ORACLE_HOME

      去掉没用的配置

      unset ORACLE_HOME

      unset TNS_ADMIN

    • 按照默认缺失的库文件。

      将光盘放入光驱。

      Cd /media/cdrom

      Cd Server

      rpm –ivh libaio-devel*

      rpm –ivh sysstat*

      rpm –ivh unixODBC-2.2.11-7.1*

      rpm –ivh unixODBC-devel-2.2.11-7.1*

         配置基本profile。oracle用户的.bash_profile文件。

    # Oracle Settings
    TMP=/tmp; export TMP
    TMPDIR=$TMP; export TMPDIR

    ORACLE_HOSTNAME=oel55.localdomain; export ORACLE_HOSTNAME
    ORACLE_BASE=/work/oracle/; export ORACLE_BASE
    ORACLE_HOME=$ORACLE_BASE/11g; export ORACLE_HOME
    ORACLE_SID=DB11G; export ORACLE_SID
    ORACLE_TERM=xterm; export ORACLE_TERM
    PATH=/usr/sbin:$PATH; export PATH
    PATH=$ORACLE_HOME/bin:$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

    if [ $USER = "oracle" ]; then
      if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
        ulimit -n 65536
      else
        ulimit -u 16384 -n 65536
      fi
    fi
     

       

    • 安装

      cd /oracle/database

      su oracle

      ./runinstall

        


    •     错误处理

         当发生以下错误时的处理方法。

    Oracle Net Services Configuration:

    # An unexpected error has been detected by HotSpot Virtual Machine:
    #
    # SIGSEGV (0xb) at pc=0xa4a4974e, pid=2228, tid=3086813392
    #
    # Java VM: Java HotSpot(TM) Client VM (1.5.0_17-b02 mixed mode)
    # Problematic frame:
    # C [libclntsh.so.11.1+0x42974e] snlinGetAddrInfo+0x1b2
    #
    # An error report file with more information is saved as hs_err_pid2228.log
    #
    # If you would like to submit a bug report, please visit:
    # http://java.sun.com/webapps/bugreport/crash.jsp

    解决方法:

     修改/etc/sysconfig/network

    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=redhatdatabase   #这里是localhost.localdomain  ,必须改成新的名称。我这里是redhatdatabase
    GATEWAY=10.2.0.1

    修改/etc/hosts

    10.2.0.191      localhost.localdomain localhost redhatdatabase

    在命令行中输入。

    hostname redhatdatabase

    退出oracle重新进入

     #exit

    #su - oracle

    #netca #运行命令成功。  


    http://blog.zol.com.cn/1084/article_1083499.html

    http://hi.baidu.com/yuzhoublog/blog/item/0de38f0ab449fd1495ca6b8e.html

    http://space.itpub.net/9880886/viewspace-444266

    http://www.hack520.org/linux-oracle-config

    http://space.itpub.net/9880886/viewspace-444266

    http://download.oracle.com/docs/cd/B28359_01/install.111/b32281/toc.htm#CHDFFBIF

    修改内核的参数解释:

    kernel.shmmax

    SHMMAX Available physical memory Defines the maximum allowable size
    of one shared memory segment. The SHMMAX setting should be large enough
    to hold the entire SGA in one shared memory segment. A low setting can
    cause creation of multiple shared memory segments which may lead to
    performance degradation.

    Shmmax





       












          






          




    是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值, shmmax 设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降http://www.itpub.net/showthread.php?threadid=551229&pagenumber论坛上的一些说法: SHMMAX 仅仅是在共享内存段被创建的时候用来比较的一个数字,当共享内存段被一个进程(Process)创建,操作系统检查是否被要求的共享内存段的值大于shmmax 的值,如果是,那么将会抛出一个错误。这个时候系统会创建另外的一个或多个共享内存段满足进程的需求。一般来说,共享内存段个数和系统性能没有太直接的关系,也不会对性能产生太大的影响。     Steve Adams 在他的小册子中说过,在实例启动以及Server Process 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响)但是其他时候都不会有影响。这意味着如果你的程序不是经常Create Processes(以及 Destroy Them,性能方面就不是考虑的问题。当然Oralce 的建议是希望一个大的共享内存段能容纳整个SGA,这样在任何时候都不会有甚至轻微的性能下降的隐患。       Oracle 安装文档建议 32Bit Linux 系统设置shmmax 32Bit 最大的限制值 (setting shmmax to the 32-bit number limit),也就是4G 所以一般来说,1-4G 的物理内存,可以直接设置shmmax 为最大物理内存即可,那SGA 肯定在一个共享内存段中,32Bit Linux 系统物理内存大于4G 的设置为4G 即可总之,一般设置shmmax >=SGA (32Bit 系统是否支持到1.7G 以上SGA 需要注意) 如果是64Bit Linux 操作系统,shmmax 设置为大于SGA_MAX_SIZE 即可。 (仅供参考)




    http://download-west.oracle.com/docs/html/A96167_01/pre.htm#CHDHDABJhttp://www.itpub.net/551203,1.html Ipcs  -sa 可以看到共享内存段个数

    kernel.shmall






    ----
    kernel.shmall 参数是控制共享内存页数Linux 共享内存页大小为4KB, 共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是 16GB/4KB=16777216KB/4KB=4194304 (页),也就是64Bit 系统下 16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求(几乎是原来设置2097152
    的两倍)。这时可以将shmmax 参数调整到 16G 了,同时可以修改SGA_MAX_SIZE SGA_TARGET 12G(您想设置的SGA 最大大小,当然也可以是2G~14G 等,还要协调PGA
    参数及OS 等其他内存使用,不能设置太满,比如16G)。 kernel.shmmni ----
    shmmni 内核参数是共享内存段的最大数量(注意这个参数不是 shmmin, shmmni, shmmin 表示内存段最小大小shmmni 缺省值 4096 ,一般肯定是够用了

    Kernel.sem

    的参数解释

    在安装

    oracle 之前通常需要设置kernel.sem这个参数,下面对些作简单介绍

    sem

    其实是semaphores的缩写,查看当前设置 [oracle@test oracle]$ cat /proc/sys/kernel/sem
    250 32000 100 128
    4个数据分别对应 SEMMSL SEMMNS SEMOPM SEMMNI


    如当

    oracle DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEMAPHORES设置SEMMSL应该设置为服务器中各个实例中最大的PROCESSES参数+10,例如,当最大的PROCESSES参数为5000时,SEMMSL应设置为5010


    SEMMNS

    参数应设置为SEMMSL*SEMMNI,接上例SEMMSL5010SEMMNS参数应为(5010*128=641280SEMOPM参数应设置与SEMMSL参数相同,接上例此处应设置为5010
    更改当前SEMAPHORES参数设置:

    kernel.sem

    是对semaphore的定义,何为semaphore?请参考http://www.dbfan.cn/2009/02/03/linux%E4%B8%AD%E7%9A%84%E7%9B%B8%E5%85%B3kernel%E5%8F%82%E6%95%B0/

    可以理解为

    semaphore为每个进程通讯需要的信号灯或者IPC标志,每个连接的process都要分配一个semaphore,那么 semaphore的设置跟process的数量有关系.

    semaphors

    的相关设置在REHLOEL中可通过kernel.sem参数定义.通过下面的任何一种方法都可以查看sem的值:

    [root@dbtest vm]# sysctl -p|grep kernel.sem kernel.sem = 250 35000 100 128

    或者

    [root@dbtest vm]# cat /proc/sys/kernel/sem 250 35000 100 128

    或者

    [root@dbtest vm]# ipcs -sl ------ Semaphore Limits -------- max number of arrays = 128 max semaphores per array = 250 max semaphores system wide = 35000 max ops per semop call = 100 semaphore max value = 32767

    这个参数有四个值

    , 其实这四个不同的值又分别对应了另外四个不同的参数,按照上面值的顺序排列

    SEMMSL: Maximum number of semaphores per set SEMMNS: Maximum number of semaphores system-wide SEMOPM: Maximum number of semaphore operations per system call SEMMNI: Maximum number of semaphore sets for the entire Linux system

    Suse Linux中这几个参数是独立存在的.  

    Oracle(

    包括9i/10g/11g)推荐将sem设置为250 32000 100 128或更高的值.在一个并发很高的数据库中这个值可以设置为PROCESSES+10,SEMMNI也要相应的增加.目的是减少IPC通讯时 semaphore的争用. SEMOPM定义了每次IPC调用时影响的semaphore,建议设置SEMOPM=SEMMSL,SEMMNS定义为(SEMMSL *  SEMMNI).

    实际上每个系统都对上述参数有各自推荐的配置

    .

    最后可以参考

    MetaLink: Note:187405.1 Note:184821.1242529.1


    [oracle@test oracle]$ su

    Password:
    [root@test oracle]# echo "5010 641280 5010 128" > /proc/sys/kernel/sem
    [root@test oracle]# cat /proc/sys/kernel/sem
    5010 641280 5010 128


    如需启动时自动应用,可在

    /etc/sysctl.conf增加: kernel.sem =5010 641280 5010 128

      参考文档:

  • 相关阅读:
    Kafka(3)--kafka消息的存储及Partition副本原理
    Kafka(2)--kafka基本原理之消息的分发与接收
    Kafka(1)--kafka基础知识
    ActiveMQ(4)---ActiveMQ原理分析之消息消费
    ActiveMQ(3)---ActiveMQ原理分析之消息持久化
    ActiveMQ(2)---ActiveMQ原理分析之消息发送
    Appium的常用定位方法
    appium报错信息:Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"]”
    mysql服务启动不了解决方法
    Node.js安装及环境配置之Windows篇
  • 原文地址:https://www.cnblogs.com/GeeWu/p/linux_installOracle11g.html
Copyright © 2020-2023  润新知