安装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

  参考文档:

posted on 2011-05-18 10:04  geewu  阅读(601)  评论(0编辑  收藏  举报