Oracle 11g的Release 2版本自2009年8月份推出到现在已经有一段时间了,为使她真容得现,遂书此翔实记录以记之。供参考和体验。

1.操作系统和Oracle安装介质下载
1)操作系统安装介质下载地址
这里我使用的操作系统是目前,从Oracle官方网站上能够得到的最新版本:Oracle定制的Linux企业版5.4。
Oracle的Enterprise Linux Release 5 Update 4安装介质下载地址如下:
http://edelivery.oracle.com/

从下载列表中发现,只有CD版本的操作系统安装介质可以下载,DVD版本虽然赫然出现在列表之中,但是无法下载。因此需要刻录的光盘数无形中增加到了6张CD,使操作系统的安装变得更加繁琐。

操作系统安装介质大小约为3.2G。

2)Oracle 11gR2安装介质下载
在http://edelivery.oracle.com/上同样可以获得目前最新版本的Oracle安装介质——Oracle 11.2.0.1.0。
Oracle 11gR2的安装介质包含两个zip包,总大小约为2.3G(与早期版本相比有点“胖”!)。

2.安装操作系统
关于这个“穿盔甲的小企鹅”Linux版本(Oracle Enterprise Linux Release 5 Update 4)的安装过程,这里就不赘述了。以下谈一些有趣的事情:
1)操作系统的安装应该由谁来部署,SA?DBA?
一般情况下,如果您身边有可爱的SA,基本上OS层面的调优可以请SA来完成,不过我强烈建议DBA要对整套数据库环境了如指掌,因此这一步骤最好DBA“躬亲”。

2)操作系统安装过程中组件的选择问题
如 果在安装操作系统过程中对于rpm包的选择实在是不太确定,并且部署的仅仅是测试实验环境,您可以使用一般意义上“简单粗暴”的方法:本着“宁可错选全部 也不放过一个”的原则,将所有可选组件全部选择并安装。注意,选择组件的过程比较浪费鼠标,大约需要点击几百下,请做好思想上和体力上的准备,防止身心俱 疲。
从这里可以看出一个Junior和Senior的一点区别:Junior以“能行”为目的,Senior以“最优”为终极目标。

3)强烈呼吁操作系统介质的DVD单张版本可供下载
因为我使用的是6张CD版本的安装介质,因此我更换了5次光盘,最后,终于看到了那只可爱的“穿着盔甲的小企鹅”迎面向我走来。
如果只是一张安装介质光盘的话,至少有以下几个好处:
(1)减少光盘的浪费;
(2)减少往返于寒冷机房的次数;
(3)减少寻找特定rpm包的时间;
(4)提高生活质量。

4)附带的惊喜
使用Oracle定制的这个Linux操作系统安装完成后,系统中将会默认创建oracle用户。
验证一下oracle用户的存在性和可用性:
[root@secDB ~]# cat /etc/passwd | grep oracle
oracle:x:500:501::/home/oracle:/bin/bash

[root@secDB ~]# su - oracle
[oracle@secDB ~]$ id
uid=500(oracle) gid=501(oinstall) groups=500(dba),501(oinstall)

5)这里我们使用两种方法确认一下操作系统的版本
操作系统安装完成后,确认一下操作系统的版本(这里给出两种方法)。
[root@secDB ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)

[root@secDB ~]# cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.4 (Carthage)
Kernel \r on an \m

OK,从上面的两种方法得到的结果,操作系统的版本的确是Linux 5.4。

3.将本机上刚刚下载的Oracle 11gR2安装介质上传到服务器并解压
我习惯于在Linux操作系统root用户根目录下创建一个hsw_media目录,用来统一存放安装介质。
1)创建“/hsw_media”目录
[root@secDB ~]# mkdir -p /hsw_media

2)上传Oracle 11gR2的安装介质到服务器上
方法很多,可以使用ftp。因为我安装了Cygwin工具,所以可以使用更加熟悉的“scp”命令上传安装介质,命令如下:
$ scp * root@144.194.192.183:/hsw_media
root@144.194.192.183's password:
linux.x64_11gR2_database_1of2.zip 100% 1182MB   6.8MB/s   02:55
linux.x64_11gR2_database_2of2.zip 100% 1060MB   8.2MB/s   02:09

3)在服务器端解压安装介质,注意两个zip包需要分别解压,并保证解压后的内容均在同一个database的目录下
(1)先解压第一个安装包
[root@secDB hsw_media]# unzip linux.x64_11gR2_database_1of2.zip

(2)第一个安装包解压完成后顺手查看一下解压后介质大小。大约1.2G,仅仅解压完成一个安装包就与之前10g的安装包大小相同。
[root@secDB hsw_media]# du -sm database
1285    database

(3)再继续解压第二个安装包
[root@secDB hsw_media]# unzip linux.x64_11gR2_database_2of2.zip

(4)最后确认一下最终的安装介质的大小。一共大约是2.3G,真是一个“大块头”
[root@secDB hsw_media]# du -sm database
2372    database

(5)为了后面在oracle用户下图形化安装数据库,需要将安装目录的所有者修改为oracle
[root@secDB ~]# chown -R oracle:oinstall /hsw_media/database

4.检查服务器内存是否满足1G的要求
如果服务器真的没有满足这个1G的要求,对安装的影响也不是很大,只不过会在安装正式开始前收到一个先决条件检查不通过的“友情警告”信息。
下面给出两种查看系统内存的方法
1)常用查看方法
[root@secDB ~]# cat /proc/meminfo | grep MemTotal
MemTotal:      1784832 kB

2)取巧的查看方法
[root@secDB ~]# top | grep Mem
Mem:   1784832k total,  1762364k used,    22468k free,     9660k buffers

5.检查服务器的Swap是否满足要求
1)Swap交换区大小与物理内存大小的比例关系的一般规律如下
如果物理内存在1G到2G之间,Swap分配大小建议是物理内存的1.5倍;
如果物理内存在2G到16G之间,Swap建议与物理内存大小保持一致;
如果物理内存在16G以上,Swap大小建议保证有16G即可。

2)查看当前系统中Swap的大小
/proc/meminfo文件中同样记录了Swap大小的信息
[root@secDB ~]# cat /proc/meminfo | grep SwapTotal
SwapTotal:     4095992 kB

取巧的方法同样可以达到获得Swap大小的目的
[root@secDB ~]# top | grep Swap
Swap:  4095992k total,      248k used,  4095744k free,  1535268k cached

3)结论
物理内存是2G,Swap大小是4G,满足安装的需求。

6.确认所剩磁盘空间是否满足安装需求
Oracle软件安装所需要的磁盘大小一般不超过5G,所以保证磁盘可用空间在5G以上即可。但是将其他因素(如数据库文件所占用空间等)考虑进来,建议至少保证有25G的磁盘空间可用
[root@secDB ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup01-LogVol00

                      261G   12G  237G   5% /
/dev/cciss/c0d0p1      97M   27M   65M  30% /boot
tmpfs                 872M     0  872M   0% /dev/shm
none                  872M  104K  872M   1% /var/lib/xenstored

因为在安装过程中,有一部分数据会写入到“/tmp”目录下,建议该目录的空间大小不要小于1G
asd@asddevdb /exp$ df -h /tmp
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      127G   60G   61G  50% /

7.保证Oracle安装过程中所需要的rpm包均安装到位
以下是与此版本有关的rpm安装命令列表,在执行过程中,如果该rpm包已经部署过,将收到不必重新安装的提示,如果相应的rpm包未安装过,命令将会自动进行安装。
所以一次性执行一下这些命令比较稳妥。
这里,因为我在前期安装操作系统的时候,将所有的安装界面上可选的组件都选择并安装了,所以这一步骤的安装比较顺利。
[root@secDB server]# rpm -ivh rpm -ivh binutils-2.17.50.0.6*
[root@secDB server]# rpm -ivh compat-libstdc++-33-3.2.3*
[root@secDB server]# rpm -ivh elfutils-libelf-0.137*
[root@secDB server]# rpm -ivh elfutils*
[root@secDB server]# rpm -ivh gcc-4.1.2*
[root@secDB server]# rpm -ivh gcc-c++-4.1.2*
[root@secDB server]# rpm -ivh glibc-2.5-42*
[root@secDB server]# rpm -ivh glibc-common-2.5*
[root@secDB server]# rpm -ivh glibc-devel-2.5*
[root@secDB server]# rpm -ivh glibc-headers-2.5*
[root@secDB server]# rpm -ivh ksh-20080202*
[root@secDB server]# rpm -ivh libaio-0.3.106*
[root@secDB server]# rpm -ivh libaio-devel-0.3.106*
[root@secDB server]# rpm -ivh libgcc-4.1.2*
[root@secDB server]# rpm -ivh libstdc++-4.1.2*
[root@secDB server]# rpm -ivh libstdc++-devel-4*
[root@secDB server]# rpm -ivh make-3.81*
[root@secDB server]# rpm -ivh sysstat-7.0.2*
[root@secDB server]# rpm -ivh unixODBC-2.2.11*
[root@secDB server]# rpm -ivh unixODBC-devel-2.2.11*
[root@secDB server]# rpm -ivh libaio-devel-0.3.106-3.2.i386.rpm
[root@secDB server]# rpm -ivh unixODBC-devel-2.2.11-7.1.i386.rpm

8.配置系统核心参数
在 文件“/etc/sysctl.conf”中需要对如下所列这些核心参数格外关心并特殊照顾,重点关注“kernel.shmmax”参数的设置,其次关 注“fs.file-max”、“net.ipv4.ip_local_port_range”和“net.core.wmem_max”参数的设置。
[root@secDB ~]# vi /etc/sysctl.conf
fs.aio-max-nr = 3145728
fs.file-max = 6815744
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.shmmni = 4096
kernel.sem = 250 32000 100 142
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

9.使用“sysctl -p”命令使上面的修改生效,同时打印出所有当前的设置值
[root@secDB ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 8192
kernel.shmmax = 4398046511104
kernel.shmall = 1073741824
fs.file-max = 6815744
kernel.msgmni = 2878
kernel.sem = 250 32000 100 142
kernel.shmmni = 4096
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 3145728
net.ipv4.ip_local_port_range = 9000 65500

10.修改Shell Limits以便提高Oracle的执行效率
1)确认“/etc/security/limits.conf”文件中已经包含如下内容,此处我未做修改,保持了系统安装完成后的默认值
[root@secDB ~]# vi /etc/security/limits.conf
oracle   soft   nofile    131072
oracle   hard   nofile    131072
oracle   soft   nproc    131072
oracle   hard   nproc    131072
oracle   soft   core    unlimited
oracle   hard   core    unlimited
oracle   soft   memlock    50000000
oracle   hard   memlock    50000000

2)在文件“/etc/pam.d/login”添加如下一行信息
[root@secDB ~]# vi /etc/pam.d/login
session    required     pam_limits.so

11.创建Oralce的安装所需要的目录并给与755权限
[root@secDB ~]# mkdir -p /oracle/ora11gR2/product
[root@secDB ~]# mkdir -p /oracle/ora11gR2/oradata
[root@secDB ~]# chown -R oracle:oinstall /oracle
[root@secDB ~]# chmod -R 775 /oracle

12.配置oracle用户的配置文件“.bash_profile”
[root@secDB ~]# su - oracle
[oracle@secDB ~]$ vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/oracle/ora11gR2
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=secooler
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
set -o vi
alias vi=vim
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

13.因为稍后我们打算采用图形化方法安装数据库,为了远程操作方便,需要配置一下VNC软件(当然一切可以实现远程操作的工具都可以使用)
【实验】【VNC】Linux环境VNC服务安装、配置与使用
http://space.itpub.net/519536/viewspace-607549

14.图形化安装过程正式启动
使用VNC客户端登录到root用户的桌面。

15.在root用户下使用“xhost +”命令打开访问控制,以便允许在oracle用户下可以启动图形化安装界面
[root@secDB ~]# xhost +

16.切换到oracle用户,然后进入到Oracle安装介质的目录
[root@secDB database]# su - oracle
[oracle@secDB ~]$ cd /hsw_media/database/

17.执行“runInstaller”调出安装界面
安装界面与以往的版本相比有了较大的变化。在这个全新的安装引导界面里,我们可以很容易的从左侧的安装步骤列表中得到我们所处的具体环节。界面的右侧是可供选择的配置选项。下面我来详细的描述一下整个安装过程。

1)Configure Security Updates这一步骤,要求提供一个邮箱地址,这里我们选择不提供,点击“Next”。点击“Yes”确认不提供邮箱地址;

2)Installation Option这一步骤,保持默认选项“Create and configure a database”不变,点击“Next”;

3)System Class这一步骤,细节发现:每一个选项前面都有一个带问号的×××小灯泡,鼠标悬停在上面可以得到简略的提示信息,如果想得到详细的提示信息还可以点击 “more”。我们这里选择“Sever Class”,可以通过此选项得到更多的可配置项,另外一个选项“Desktop Class”是供快速简易部署使用的。点击“Next”;

4)Grid Options这一步骤,选择默认的“Single instance database installation”即可,另外一个选项“Real Application Cluster database installation”在RAC部署安装时使用,点击“Next”;

5)Install Type这一步骤,默认是“Typical install”,我为得到更多的细节,这里选择了“Advanced Install”,点击“Next”;

6)Product Languages这一步骤,最终也没能找到Chinese,只好使用默认设置“English”,点击“Next”;

7)Database Edition这一步骤,有三个选项,我们选择默认的“Enterprise Edition”选项(提示:只有选择第一项,“Select Options...”按钮才可以点击并进行深入配置),点击“Next”;

8)Installation Location这一步骤,保持默认读取到的环境变量不变即可,点击“Next”;

9)Create Inventory这一步骤,保持默认,点击“Next”;

10)Configuration Type这一步骤,保持默认的“General Purpose / Transaction Processing”,点击“Next”;

11)Database Identifiers这一步骤,这里我将“Global database name”的内容从“orcl”修改成“secooler”,在修改该项的同时“Oracle Service Identifier”也会随之改变,点击“Next”;

12)Configuration Options这一步骤,可以配置内存分配、字符集、安全和是否创建样本数据。注意一下字符集的选择,这里我选择的是“Simplified Chinese ZHS16GBK”,其他的可以使用默认值,点击“Next”;

13)Management Options这一步骤,保持默认,不配置Database Control,点击“Next”;

14)Database Storage这一步骤,保持默认的“/oracle/ora11gR2/oradata”不变,如果想使用ASM也是在这里进行配置,点击“Next”;

15)Backup and Recovery这一步骤,在这一步骤里可以选择“Enable automated backups”选项启用自动备份,我这里为了简单一些,选择默认的“Do not enable automated backups”不启用自动备份。点击“Next”;

16)Schema Passwords这一步骤,为了系统安全,这里可以对SYS, SYSTEM, SYSMAN和DBSNMP系统用户单独设置登录密码,但我为了简化操作,统一设置为一个密码。在设置密码的过程中,Oracle对密码的复杂性也做了一 些限制,需要大写字母小写字母还有数字混合出现才能通过校验。点击“Next”;

17)Operating System Groups这一步骤,设置OSDBA组和OSOPER组,保持默认,点击“Next”

18)Prerequisite Checks这一步骤,Oracle将全面检查之前的配置是否满足安装需求。这一步骤中有关不满足安装先决条件的提示信息的可参考性是一个亮点,非常的人 性化,任何错误都会给出一个详细的说明。比如当缺少某些rpm包时,提示信息会给出具体的rpm包的名字;再如,当某一个系统变量设置得不正确时,会给出 现有错误设置和正确设置的对比信息。而且还有一个按钮叫做“Fix & Check again”可以自动纠正一些错误,这应该也算Oracle在安装过程中的一大进步。如果在这一步Oracle要求的所有安装的先决条件均满足了,安装界 面将自动跳转到下一页“Summary”;

19)Summary这一步骤,能够看到这一步,基本上开始安装就没有什么问题了。点击“Finish”进入正式安装阶段;

20)Install Product这一步骤,界面上的进度信息比较直观,更加值得称赞的是可以点击“Details”查看详细动态的安装日志,有一种像使用“tail -f”命令那样身临其境感觉,很爽,便于快速发现错误,这也是非常值得称赞的改进。这一步需要的时间最长,不过都是后台自动化操作,可以在这个时候小小的 休息一下。最后看到DBCA提示信息后,点击“OK”退出提示窗口,然后就会看到我们非常熟悉的提示手工执行两个脚本,在root用户下分别执行一下
[root@secDB server]# cd /oracle/oraInventory/
[root@secDB oraInventory]# ./orainstRoot.sh
[root@secDB oraInventory]# cd /oracle/ora11gR2/product/11.2.0/dbhome_1/
[root@secDB dbhome_1]# ./root.sh
脚本执行完成后,点击“OK”;

21)Finish这一步骤,终于到了最后一步,右侧窗口提示EM的URL,点击“Close”完成整个Oracle 11gR2的安装过程。好漫长,长舒一口气。

18.最后验证一下辛辛苦苦得来的Oracle 11gR2可用性
[oracle@secDB ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 28 00:59:54 2009

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
-------------------
2009-10-28 01:00:29

SQL>

夜已经深了,现在已经是凌晨1点了,吃个夜宵该回家了。
(以上操作的每一步骤均有截图,找时间再做一个图文并茂的吧,今天到此结束。晚安朋友们。)

19.小结
1)整个安装过程比较顺畅,安装界面比较简洁大方,对进度的友好提示是一大亮点;
2)每一步骤中的每一个选项都配有详细的注释信息(可以点击带问号的×××小灯泡);
3)在系统不满足安装先决条件时,提示信息很具有参考价值;
4)在漫长的后台自动安装过程中,实时日志显示是另外一个亮点;
5)11g的宣传图标很cool,有一种爆炸的冲击力。

Good luck.

-- The End –-