注,命令符前#为root用户操作,$表示oracle用户操作,##则表示注释信息。

1、硬件环境检查

1.1  检查内存相关项

  Oracle11gR2 要求系统不低于1g的物理内存,对于正式的产品服务器来说,这点需求相当小儿科,不过某些测试环境,或者是虚拟机环境下创建,可能内存达不到这一需求,没关系,事实证明即使物理内存低于1g,在安装ORACLE软件时只是出现警告,并不会影响软件的成功安装。当然啦,安装完成后数据库是否能够顺利运行,或者说是快速、稳定、高效的运行就另说了。

  检查服务器的内存,可以通过下列命令:

    [root@jssnode1 ~]#  grep MemTotal /proc/meminfo 

    MemTotal:      1027068 kB

  另外与内存相关的swap交换分区的设置也很重要,通常有下列的规则:

    实际内存 建议swap 交换空间大小

    -------------- -----------------------------

    1G-2G 1.5 倍于内存

    2G- 16 G 与内存相同

    超过 16 G 设置为16G即可

  查看当前服务器swap交换分区大小,可以通过下列命令:

    [root@jssnode1 ~]#  grep SwapTotal /proc/meminfo

    SwapTotal:     2064376 kB

  检查当前可用的内存和交换分区,可以通过free命令,例如:

    [root@jssnode1 ~]#  free

                 total       used       free     shared    buffers     cached

    Mem:       1027068     575116     451952          0       5908     462276

    -/+ buffers/cache:     106932     920136

    Swap:      2064376         76    2064300

· 关于自动内存管理(Automatic Memory Management)特性

  还有一点需要补充的是,ORACLE数据库从11g版本开始,引入了一个自动内存管理(Automatic Memory Management)特性,该特性需要更多的共享内存(/dev/shm),因此如果决定应用该特性的话,必须要确保共享内存大于ORACLE中初始化参数MEMORY_MAX_TARGET和MEMORY_TARGET(特别提示,这两个参数即自动内存管理特性对应的初始化参数)的值。

  如果在初始化参数中设置了MEMORY_MAX_TARGET和MEMORY_TARGET两参数为非0值,并且不符合系统共享内存,则ORACLE数据库启动时,就会触发ORA-00845: MEMORY_TARGET not supported on this system错误。

  查看系统当前共享内存,可以通过df命令,例如:

    [root@jssnode1 ~]#  df -h /dev/shm

    Filesystem            Size  Used Avail Use% Mounted on

    tmpfs                 502M     0  502M   0% /dev/shm

1.2  查看系统架构

  本步用来查看处理器的架构类型,需要确认ORACLE安装包与处理器架构相符,不然安装时必然报错。查看当前系统的处理器架构可以通过下列命令:

    [root@jssnode1 ~]#  uname -m

    x86_64

1.3  检查磁盘空闲空间

  首先/tmp至少要有1g的空闲空间,查看/tmp的磁盘空间,也可以通过df命令查看,例如:

    [root@jssnode1 ~]#  df -h /tmp

    Filesystem            Size  Used Avail Use% Mounted on

    /dev/mapper/VolGroup00-LogVol00

                          7.7G  2.6G  4.7G  36% /

  其次,ORACLE11gR2版本数据库的安装文件约占2.5G左右的空间,文件安装目录视安装的类型(比如企业版还是标准版),以及操作系统平台不同(比如32位还是64位),需要的空间也会有不同,实际占用的空间大致在3.5G-4.5G左右。另外数据库大小就要看你创建的数据库中各项文件具体占用的空间而定了。

  因此,在执行安装之前,建议执行df -h命令,查看当前是否有充裕的空闲空间来安装和创建数据库。

    [root@jssnode1 ~]#  df -h

    Filesystem            Size  Used Avail Use% Mounted on

    /dev/mapper/VolGroup00-LogVol00

                          7.7G  2.6G  4.7G  36% /

    /dev/sda1              99M   13M   82M  13% /boot

    tmpfs                 502M     0  502M   0% /dev/shm

    /dev/sdb1              15G  2.5G   12G  18% /data

2、软件环境检查

  操作系统就不说了,ORACLE11gR2支持的版本还是很多了,基本上RHEL4和5都支持,SUSE Linux10和11也都支持,至于Oracle Enterprise Linux就更没问题了,这里三思就是用的Oracle Enterprise Linux 5 Update3。

  如果你不知道(应该不至于),可以通过cat /etc/issue查看,例如:

    [root@jssnode1 ~]#  cat /etc/issue

    Enterprise Linux Enterprise Linux Server release 5.3 (Carthage)

    Kernel \r on an \m

2.1  检查内核版本

  安装Oracle11gR2,对于系统的内核版本也有要求,不同操作平台的要求也有不同,大致规则如下:

  • 对于Asianux 2, Oracle Enterprise Linux 4以及Red Hat Enterprise Linux 4,要求内核版本不低于2.6.9;
  • 对于Asianux 3, Oracle Enterprise Linux 5以及Red Hat Enterprise Linux 5,要求内核版本不低于2.6.18;
  • 对于SUSE Linux Enterprise Server 10,要求内核版本不低于2.6.16.21;
  • 对于SUSE Linux Enterprise Server 11,要求内核版本不低于2.6.27.19。

  查看内核版本可以通过uname命令,例如:

    [root@jssnode1 ~]#  uname -r

    2.6.18-128.el5

2.2  检查系统包

  不同的操作系统以及架构,所需要安装的系统包也不相同,这里仅以三思使用的64bit Oracle Enterprise Linux5为例,需要下列系统包:

  • binutils-2.17.50.0.6
  • compat-libstdc++-33-3.2.3
  • compat-libstdc++-33-3.2.3 (32 bit)
  • elfutils-libelf-0.125
  • elfutils-libelf-devel-0.125
  • gcc-4.1.2
  • gcc-c++-4.1.2
  • glibc-2.5-24
  • glibc-2.5-24 (32 bit)
  • glibc-common-2.5
  • glibc-devel-2.5
  • glibc-devel-2.5 (32 bit)
  • glibc-headers-2.5
  • ksh-20060214
  • libaio-0.3.106
  • libaio-0.3.106 (32 bit)
  • libaio-devel-0.3.106
  • libaio-devel-0.3.106 (32 bit)
  • libgcc-4.1.2
  • libgcc-4.1.2 (32 bit)
  • libstdc++-4.1.2
  • libstdc++-4.1.2 (32 bit)
  • libstdc++-devel 4.1.2
  • make-3.81
  • sysstat-7.0.2
  • unixODBC-2.2.11
  • unixODBC-2.2.11 (32 bit)
  • unixODBC-devel-2.2.11
  • unixODBC-devel-2.2.11 (32 bit)

  如果要查看其它操作系统平台需要安装的系统包,可以查阅官方文档:http://tahiti.oracle.com

  数了数还是相当多的,要检查是否确认安装指定了系统包,可以通过rpm -q命令,例如:

    [root@jssnode1 ~]# rpm -q gcc

    gcc-4.1.2-44.el5

    [root@jssnode1 ~]# rpm -q sysstat

    package sysstat is not installed

  如果已经安装了的话,就会显示出系统包的版本等信息,否则的话,就会提示未安装。

  对于尚未安装的系统包,也可以通过rpm 命令进行安装,例如安装sysstat系统包,执行操作如下(当然啦,rpm进行安装前首先要找到该包,一般是到操作系统的安装光盘中找,如果光盘中没有,也可以到操作系统网站查询):

    [root@jssnode1 Server]#  rpm -ivh sysstat-7.0.2-3.el5.x86_64.rpm 

    warning: sysstat-7.0.2-3.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159

    Preparing...                ########################################### [100%]

       1:sysstat                ########################################### [100%]

  如果仍有其它未安装的包,则使用rpm命令逐一进行安装即可。

2.3  配置核心参数

  下列将要进行配置的核心参数均拥有默认值(或者说最小值),需要对其进行配置的原因,是为了获得更好了性能,因此对于产品服务器来说,务必根据实际情况进行配置,不适当的值反倒可能适得其反。

  使用vi命令编辑 /etc/sysctl.conf  文件,例如:

    [root@jssnode1 Server]#  vi /etc/sysctl.conf 

  将下列内容加入该文件:

    fs.aio-max-nr = 1048576

    fs.file-max = 6815744

    kernel.shmall = 2097152

    kernel.shmmax = 536870912

    kernel.shmmni = 4096

    kernel.sem = 250 32000 100 128

    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 = 1048586

  注意,某些参数可能已经存在于该文件,注意修改参数值即可。这里各参数所指定的值仅供参考,请根据实际情况进行修改,一般来说只需要对kernel.shmmax这个参数的参数值进行修改即可,该参数建议修改为物理内存的一半(以字节为单位)。

  编辑完之后存盘退出,然后运行下列命令重新加载并验证参数是否正确:

    [root@jssnode1 ~]#  sysctl -p

2.4 Fixup Scripts

  安装系统包以及配置核心参数可能让你头痛不已(特指那些初次接触Linux/Unix环境,或者很多系统包均未安装的朋友,请务必对号入座),在Oracle11gR2版本中,ORACLE终于提供了一项无数SA、DBA呼唤已久的功能:Fixup Scripts。

  该特性是在ORACLE软件安装过程中,检查系统环境时提供的,拥有下列功能:

  • 检查以及自动重设相关的核心参数;
  • 设置Oracle Inventory Directory的存取权限;
  • 重置ORACLE软件安装属主,所属的主用户组及附属用户组;
  • 设置virtual IP以及private IP(RAC环境下适用);
  • 设置Shell Limites;
  • 安装Cluster Verification Utility包(RAC环境下适用)。

  上述提的几条都没看懂是吧,那三思就说的更明白点儿,本文第2.3步中提到的操作,以及后面用户组相关的操作均可以跳过,大家可以选择在安装ORACLE软件时由ORACLE自动进行配置,这下大家明白了吧,没错,这就是Fixup Scripts的功能。

3、创建相关用户组和用户

  如果这是第一次安装ORACLE数据库软件,那么在安装前,需要创建相关的系统用户和用户组。ORACLE建议在操作系统中单独创建用户,专门用来处于ORACLE相关的任务,通常情况下,我们会创建一个名为oracle的用户来执行安装(未来运行oracle数据库,也是通过该用户),以及几个相关的用户组。

3.1  创建用户组

  创建OSDBA组,对于初次安装ORACLE数据库的服务器,本步为必须执行的操作,该组用来标记拥有SYSDBA权限的系统用户。在ORACLE内部编码中,该组名为dba。

  使用groupadd命令创建组,操作如下:

    [root@jssnode1 ~]#  groupadd -g 502 dba

  然后创建Oracle Inventory组,该组组名通常定义为oinstall,创建命令如下:

    [root@jssnode1 ~]#  groupadd oinstall

  另外,如果要安装Guid Control以及ASM的话,还需要创建其它几个相关的组,这里无此需求,就不演示创建的操作了。

3.2  创建用户

  创建ORACLE的owner用户,一般也命令为oracle,操作如下:

    [root@jssnode1 ~]#  useradd -u 502 -g oinstall -G dba oracle

  然后为该用户设置密码,操作如下:

    [root@jssnode1 ~]#  passwd oracle

    Changing password for user oracle.

    New UNIX password: 

    BAD PASSWORD: it is based on a dictionary word

    Retype new UNIX password: 

    passwd: all authentication tokens updated successfully.

3.3  配置Shell Limits

  下列配置同样是为了提高性能,因为某些参数虽然拥有默认值,但默认值偏低,影响ORACLE软件的执行效率。

  修改主要集中在下列两处:

  使用vi命令编辑/etc/security/limits.conf,补充下列下列内容:

    oracle              soft    nproc   2047

    oracle              hard    nproc   16384

    oracle              soft    nofile  1024

    oracle              hard    nofile  65536

  使用vi命令编辑/etc/pam.d/login,补充下列内容:

    session    required     pam_limits.so

3.4  配置软件安装目录

  创建用户和组完成,Shell Limits也配置好了,下面需要给ORACLE数据库指定一个安装目的地,说白了就是创建目录,目录位置根据自己情况确定,当然注意要确保有充裕的空闲空间。

  需要创建的目录和ORACLE软件的安装目录,ORACLE数据文件的存储目录,以及ORACLE安装文件的存储目录,这里三思将其均创建到/data目录下:

    [root@jssnode1 ~]# mkdir /data/ora11g

    [root@jssnode1 ~]# mkdir /data/ora11g/product

    [root@jssnode1 ~]# mkdir /data/ora11g/oradata

    [root@jssnode1 ~]# mkdir /data/software

  友情提醒,此时可以顺手使用unzip命令,将下载到的ORACLE安装文件:linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip解压缩到/data/software目录下,注意两个文件要解压到相同路径。

  最后使用chown命令修改目录的所有者为oracle用户:

    [root@jssnode1 ~]# chown -R oracle:oinstall /data/ora11g

    [root@jssnode1 ~]# chown -R oracle:oinstall /data/software

3.5  配置oracle用户环境变量

  使用vi命令编辑/home/oracle/.bash_profile,补充下列内容:

    export TMP=/tmp 

    export TMPDIR=$TMP 

    export ORACLE_BASE=/data/ora11g

    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 

    export ORACLE_SID=jssdb

    export ORACLE_TERM=xterm 

    export PATH=/usr/sbin:$PATH 

    export PATH=$ORACLE_HOME/bin:$PATH 

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64/ 

    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib 

    export LD_ASSUME_KERNEL=2.6.18 

    export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK" 

    umask 022 

    if [ $USER = "oracle" ]; then

      if [ $SHELL = "/bin/ksh" ]; then

        ulimit -p 16384

        ulimit -n 65536

      else

        ulimit -u 16384 -n 65536

      fi

    fi

4、执行安装

  经过一番准备,终于正式进入到安装步骤了。这里我们使用OUI来安装ORACLE,因此操作需要在视窗界面下进行。以oracle用户启动到视窗状态,打开一个终端。

    提示:

    如果是以root用户启动的话,需要首先执行:

    [root@jssnode1 ~]#  xhost +

    Access control disabled, clients can connect from any host

    [root@jssnode1 ~]#  su - oracle

    [oracle@jssnode1 ~]$ 

  进入到oracle软件的安装目录下,执行runInstall即可:

    [oracle@jssnode1 ~]$ cd /data/software/database/

    [oracle@jssnode1 database]$ ./runInstaller 

    Starting Oracle Universal Installer...

  等待片刻,弹出安装界面如下:

  11gR2 的安装界面大变(便?变?随你理解吧),接下来就是点击下一步的工作了,中间过程不再过多描述。补充说明一下关于ORACLE安装检查的部分,如下所示:

  可以看到某个核心参数"shmmax"的期望值与实际值并不相符括弧其实是俺故意改错的,这里可以直接通过Fix按钮,让ORACLE自动进行修改,当然啦,软件包还是需要手动处理的。不过安装packages时并不需要退出安装界面,随时通过rpm命令对所需的package进行安装,完成后点击Check Again或Fix&Check Again按钮即可。

  以上图为例,全面修正后点击Check Again,弹出界面如下:

  物理内存和交换分区大小就无能为力了,只能选择Ignore忽略,然后进入下一步了。

  点击Finish按钮,等待复制文件完成后,按照提示运行指定脚本即可。整个ORACLE软件安装完毕。

全文完,PDF版本下载请到:http://www.5ienet.com/mydesign/list.asp