处变不惊,处忧不虑,不争一年的兴衰,但看十年的功过。笑中千关过,愁内百事哀,挣胜是祸,繁华似梦,平淡是福。

  IT博客 :: 首页 :: 联系 :: 聚合  :: 管理
  65 Posts :: 1 Stories :: 24 Comments :: 0 Trackbacks
目前Oracle公司发行的10g数据库版本并未提供对所有Linux操作系统的支持,但是在主流
的Linux平台,包括Mandrake和RedHat上都已经可以进行安装。不过由于Linux环境和Wind
ows的区别,安装的工作要困难得多,不但要求安装者对Linux系统相当熟悉,还要求安装
者能够灵活地进行用户环境的建立与配置。这一节里着重介绍Oracle10g(10.1.0)在Red
 Hat Linux企业版高级服务器3.0、2.1版本(Enterprise Linux Advanced Server,以下
简称RHELAS)和Red Hat Linux 9.0(以下简称RH9)上的安装,版本不同的参数配置是不
同的。在Linux Mandrake 8.0上的安装请参考在Red Hat 9.0上的配置。



I-2-1    安装前的准备工作
安装前的准备工作主要是针对Linux系统所做的兼容性配置,从硬盘空间、安装环境、运行
环境、Linux内核参数配置、系统用户设置等诸方面进行一系列较为复杂的设置工作,使操
作系统可以顺利地安装并运行Oracle10g数据库。

■    检查内存和交换空间
Oracle公司宣称在Linux下安装Oracle10g数据库至少要有512MB的内存和至少1GB或者两倍
内存大小的交换空间,对于系统内存大于2GB的服务器,交换空间可以介于2GB—4GB之间。

如果是为了在一台仅有256M内存的普通PC机上试用Oracle10g(例如使用其通用版General
 Purpose Database),在分配了1GB左右的交换空间的情况下,也可以正常运行Oracle数
据库。
要检查内存空间,登录进入Linux,在命令行方式(bash环境)下执行如下命令:
grep MemTotal /proc/meminfo
要检查交换空间,在命令行下执行如下命令:
grep SwapTotal /proc/meminfo

如果系统原有交换空间过小,可以通过如下途径增加系统的临时交换空间:
1. 以root用户登录系统
$ su – root
2. 创建临时交换空间文件
# dd if=/dev/zero of=tmpswap bs=1k count=900000
# chmod 600 tmpswap
# mkswap tmpswap
# swapon tmpswap

■    临时硬盘空间
Oracle10g安装程序在安装过程中需要400M以上的临时硬盘空间,建议使用“/tmp”文件夹
作为零时文件夹,如果“/tmp”文件没有足够的空间,可以新创建一个文件夹作为安装的
临时目录,之后设置环境变量TEMP和TMPDIR指向相应的位置,详见下面的操作代码。

登录进入Linux,在命令行方式(bash环境)下执行如下命令检查“/tmp”文件的空间:

$ df /tmp

如果“/tmp”文件空间不足,可以执行如下命令在另一个文件系统中创建“/tmp”文件:

$ su - root
# mkdir /<AnotherFilesystem>/tmp        //如 # mkdir /home/temp
# chown root.root /<AnotherFilesystem>/tmp
# chmod 1777 /<AnotherFilesystem>/tmp
# export TEMP=/<AnotherFilesystem>
//如 # TEMP=/home/temp; export TEMP
# export TMPDIR=/<AnotherFilesystem>
//如 # TMPDIR=/home/temp; export TMPDIR

这样,在完成Oracle10g的安装之后,就可以通过如下命令删除先前创建的临时文件:
$ su - root
# rmdir /<AnotherFilesystem>/tmp
# unset TEMP
# unset TMPDIR

■    虚拟x-windows软件
现在流行的x-windows软件有exceed、x-win32等软件,可以使用虚拟x-windows软件在图形
界面下安装Oralce9i。一般标准安装Linux系统后缺省都会装好x-windows环境。

■    检查软件包(RPMs)
在正式安装Oracle10g之前,请检查安装所需的软件包,例如在Red Hat Linux企业版高级
服务器3.0版本上选择默认安装,类似gcc、 redhat-release和其他的一些必需的软件包是
不被安装的。
1.检查内核(kernel)软件包
对于RHELAS2.1而言,内核软件包的版本非常重要,只有高于2.4.9的内核版本才可以正常
安装Oracle10g。可以通过如下命令检查内核软件包的版本:
$ uname -a

2.检查glibc软件包
RHELAS3和RH9的glibc软件包版本可以通过Oracle10g安装前的自检测试,但是RHELAS2.1必
须升级其glibc软件包版本方可通过自检。Oracle10g的安装要求glibc软件包版本至少为2
.2.4.31.7。
如果用户的系统是RHELAS2.1,可以下载最新的glibc软件包,同时执行如下命令:
$ su - root
# rpm -Uvh glibc-2.2.4-32.11.i686.rpm glibc-common-2.2.4-32.11.i386.rpm

3.检查gcc、make和binutils软件包
确认下列软件包已经安装:
Ÿ 对于RHELAS3和RHELAS2.1:make-3.79或更高版本;
Ÿ 对于RHELAS3和RHELAS2.1:binutils-2.11.90.0.8-12或更高版本;
Ÿ 对于RHELAS3:gcc-3.2.3-2或更高版本;
Ÿ 对于RHELAS2.1:gcc-2.96-108.1或更高版本。
执行如下命令进行检查:
# rpm -q gcc make binutils

RHELAS3系统的用户通常可以在第3张系统安装光盘中找到这些软件包,在命令行下执行如
下命令即可进行安装:
$ su - root
# rpm -Uvh gcc-3.2.3-20.i386.rpm \
         glibc-devel-2.3.2-95.3.i386.rpm \
         glibc-headers-2.3.2-95.3.i386.rpm \
         glibc-kernheaders-2.4-8.34.i386.rpm

RHELAS2.1系统的用户在缺省安装的状态下是不安装binutils和gcc软件包的,在命令行下
执行如下命令即可进行安装:
$ su - root
# rpm -ivh gcc-2.96-108.1.i386.rpm \
         binutils-2.11.90.0.8-12.i386.rpm \
         cpp-2.96-108.1.i386.rpm \
         glibc-devel-2.2.4-32.11.i386.rpm \
         kernel-headers-2.4.9-e.3.i386.rpm

RH9系统的用户为了确保使用的这些软件包版本合适,也可以通过执行如下命令安装最新的
软件包:
$ su - root
# rpm -Uvh gcc-3.2.2-5.i386.rpm \
         glibc-devel-2.3.2-5.i386.rpm \
         cpp-3.2.2-5.i386.rpm \
         glibc-kernheaders-2.4-8.10.i386.rpm \
         binutils-2.13.90.0.18-9.i386.rpm

4.检查openmotif软件包
确认下列软件包已经安装:
Ÿ 对于RHELAS3:openmotif-2.2.2-16或更高版本;
Ÿ 对于RHELAS2.1:openmotif-2.1.30-11或更高版本。
执行如下命令进行检查:
# rpm -q openmotif

RHELAS3系统的用户可以通过执行如下命令安装该软件包:
$ su - root
# rpm -ivh openmotif-2.2.2-16.i386.rpm

RHELAS2.1系统的用户可以通过执行如下命令安装该软件包:
$ su - root
# rpm -ivh openmotif-2.1.30-11.i386.rpm

RH9系统的用户可以通过执行如下命令安装该软件包:
$ su - root
# rpm -Uvh openmotif-2.2.2-14.i386.rpm

5.检查setarch软件包
确认下列软件包已经安装:
Ÿ 对于RHELAS3:setarch-1.3-1或更高版本。
执行如下命令进行检查:
# rpm -q setarch

RHELAS3系统的用户可以通过执行如下命令安装该软件包:
$ su - root
# rpm -Uvh setarch-1.3-1.i386.rpm


注意  在RHELAS2.1和RH9系统中不含setarch软件包。


6.检查redhat-release软件包
执行如下命令进行检查:
# rpm -q redhat-release

RHELAS3系统的用户可以通过执行如下命令安装该软件包:
$ su - root
# rpm -ivh redhat-release-3AS-1.i386.rpm

RHELAS2.1系统的用户可以通过执行如下命令安装该软件包:
$ su - root
# rpm -ivh redhat-release-as-2.1AS-4.noarch.rpm

RH9系统的用户必须编辑“/etc/redhat-release”文件以确保Oracle10g监测到它是运行在
一个RHELAS3平台之上。通过如下命令可以改变这个文件的内容:
$ su - root
# cp /etc/redhat-release /etc/redhat-release.backup
# cat > /etc/redhat-release << EOF
Red Hat Enterprise Linux AS release 3 (Taroon)
EOF
当完成Oracle10g的安装后,可以通过如下命令撤销先前所作的修改:
$ su - root
# cp /etc/redhat-release.backup /etc/redhat-release 
注意  在Oracle10g的安装过程中,redhat-release软件包发挥着关键性的作用,没有它,
Oracle安装程序将无法识别系统是否支持自身的运行。对于RHELAS3系统用户,在进行系统
缺省安装时,这个软件包是不被安装的。
不推荐使用“./ runInstaller -ignoreSysPrereqs”命令来运行Oracle10g的安装程序,
这样会忽略其他系统可能导致Oracle10g无法正常运行的一些错误。


■    JDK
要安装Oracle HTTP Server还需要用到 http://www.blackdown.org/ 提供的JDK1.5.1,可
以到地址 ftp://sunsite.dk/mirrors/java/java-linux/ 下载JDK1.5.1(教育网的读者可
以到 ftp://ftp.youngcow.dhs.org 站点下载其最新版本),文件名为j2sdk-1.5.0-RC1-
linux-i386.tar.bz2。

■    配置内核参数
Oracle10g使用Linux的共享内存、交换区等资源进行工作,如果系统的内核参数设置不能
满足Oracle的要求,那在安装Oracel10g或使用的过程中就会频频出现问题,因此配置系统
内核的参数十分关键。
通过如下命令可以查看系统的内核参数:
$ su - root
# sysctl –a

对于Oracle10g而言,下列内核参数值是必需的,建议系统内核参数大于或等于这些值。
shmmax  = 2147483648    //通过命令检查:cat /proc/sys/kernel/shmmax
shmmni  = 4096        //通过命令检查:cat /proc/sys/kernel/shmmni
shmall  = 2097152      //通过命令检查:cat /proc/sys/kernel/shmall
shmmin  = 1           //通过命令检查:ipcs -lm |grep "min seg size"
shmseg  = 10          //在内核中的固定值

semmsl  = 250            //通过命令检查:cat /proc/sys/kernel/sem | awk '{prin
t $1}'
semmns  = 32000        //通过命令检查:cat /proc/sys/kernel/sem | awk '{print
$2}'
semopm  = 100            //通过命令检查:cat /proc/sys/kernel/sem | awk '{prin
t $3}'
semmni  = 128            //通过命令检查:cat /proc/sys/kernel/sem | awk '{prin
t $4}'

file-max = 65536        //通过命令检查:cat /proc/sys/fs/file-max

ip_local_port_range = 1024 65000
                        //通过命令检查:cat /proc/sys/net/ipv4/ip_local_port_r
ange


注意  Oracle10g推荐将ip_local_port_range的值设置为“1024 65000”,以便使系统具
备高可用性,该内核参数定义了TCP和UDP协议使用的端口范围。

在文件“/etc/sysctl.conf”中增加如下参数设置,当系统重启时参数将生效:
kernel.shmmax=2147483648
kernel.sem=250 32000 100 128
fs.file-max=65536
net.ipv4.ip_local_port_range=1024 65000

为了使重设的参数立即生效,还可以执行如下命令:
$ su - root
# sysctl –p

■    检查硬盘空间
在Linux上安装Oracle10g需要至少2.5 GB硬盘空间。
当选择“通用数据库(General Purpose Database)”安装时,大约使用1.9GB磁盘空间,
对数据库进行预编译时将占用710MB磁盘空间,如下所示。
$ du -m -s /u01
1903    /u01
$ du -m -s /u01/app/oracle/oradata
710     /u01/app/oracle/oradata

如果要安装Oracle公司提供的其它软件,还需要至少1 GB的磁盘空间。


注意  如果不打算将Oracle10g安装在不同的文件系统中,请确保root文件系统“/”有足
够的空间。通过命令“df -k /”可以进行空间检查。


■    添加用户
Oracle在安装和使用中需要用到特定用户(非root用户),按照Oracle的标准说明需要添
加3个专门用户和用户组,为了简化应用、方便装配,可以把Oracle的安装和使用归到一个
特定用户来完成,下面详细说明。
创建Oracle用户组,该用户组名为dba:
1.    以root用户登录系统
2.    运行groupadd dba命令添加dba用户组
# groupadd dba                        //创建Oracle的primary组
3.    运行groupadd dba命令添加oinstall用户组
# groupadd oinstall
4.    创建Oracle用户并赋予组权
    # useradd -c "Oracle software owner" -g oinstall -G dba oracle
    # passwd oracle
运行后系统创建了一个属于“dba”和“oinstall”用户组的用户“Oracle”,使用命令行
环境(bash环境)。这个用户将作为系统的安装和使用用户,因此要妥善保存好!
创建安装点(mount point)
Oracle10g的典型安装需要至少两个安装点:一个安装基本的运行程序,要求至少要有850
M的硬盘空间;一个存放数据库,至少要求有450M的硬盘空间。为了简化安装可以把运行程
序和数据库装在同一个安装点下。
在文件系统上找到有足够剩余空间的分区,再在分区下创建文件夹,假设这个文件夹为“
/Oracle”。

1.    配置x-windows变量
确认Oracle10g在安装过程中是否使用本地x-windows安装还是用远程虚拟x-windows安装。
如果需要远程x-windows安装,则需要配置DISPLAY变量,这个变量用于告诉系统屏幕的图
形将输出到什么位置,默认情况下是本机;如果使用虚拟x-windows进行安装,则在这里指
明远程终端的显示情况,比如远程终端的IP地址是100.100.100.149,则DISPLAY的变量应
设为“100.100.100.149:0”后面的“:0”表示该终端的第一个显示器。

2.    确定安装目录
执行如下命令为Orale10g创建安装目录$ORACLE_BASE:
$ su - root
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app
# chmod -R 775 /u01/app

前面提到过Oracle10g的安装需要一个临时的可写空间,在这里把“/tmp”作为临时的可写
目录。如果你不是使用“/tmp”作为临时可写目录则需要配置相应的值“TMPDIR=/path”


■    配置Oracle的环境变量
Oracle需要在一个设置正确的环境下安装和运行,环境变量的参数写在Oracle用户根目录
下的文件“.bash_profile”里。下面提供一个具体的例子。
1.    以Oracle用户登录系统,输入如下命令:
$ vi /home/oracle/.bash_profile

2.    在文件.bash_profile中键入如下内容:
umask 022

PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
ORACLE_SID=orcl
LD_LIBRARY_PATH=$ORACLE_HOME/jdk/fre/lib/i386:
  $ORACLE_HOME/jdk/jre/lib/i386/server:
  $ORACLE_HOME/rdbms/lib:$ORACLE_HOME/lib:
  $LD_LIBRARY_PATH
PATH=$ORACLE_HOME/bin:$PATH

export PATH LD_LIBRARY_PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID

3.    确认修改后,存盘退出:
:w!

“.bash_profile”文件中各参数的意义如下:
a)    ORACLE_HOME为系统软件的安装目录;
b)    ORACLE_SID 为数据库的SID,这里可以自行设置;
还有一个参数:NLS_LANG 为数据库的字符集,为了保证数据库能够输入输出用户所在地区
的正确的语言文字(如简体中文),需要在这里把字符集设为american_america.ZHS16GB
K,其中american_america为英文字符集,ZHS16GBK为中文字符集。

注意  很多安装Oracle失败的情况都是因为环境变量没有配置正确,环境变量的配置直接
影响到以后Oracle10g的安装和配置,在配置的时候要尤为小心!


4.    重新登录Oracle用户,用set | more命令查看Oracle用户的环境变量是否生效。
$ set | more



I-2-2    Oracle10g安装过程
■    安装JDK1.3.1
以root身份登录Linux系统,进行如下操作:

bzip –d j2sdk-1.3.0-RC1-linux-i386.tar.bz2

这一命令把文件j2sdk-1.3.0-RC1-linux-i386.tar.bz2解压缩成tar这样的备份文件格式,
然后再使用命令:

tar xvf j2sdk-1.3.0-RC1-linux-i386.tar.bz2

把文件释放到文件夹j2sdk-1.3.0-RC1-linux-i386.tar.bz2中,为了便于操作可以把文件
夹名改成jdk.:

rename j2sdk-1.3.0-RC1-linux-i386.tar.bz2 jdk

■    配置x-windows
Oracle10g的安装不但支持所有的x-windows,也支持远程的虚拟x-windows安装,如果要在
本机安装Oracle10g,需要在Linux控制台上以Oracle用户登录,预先设置好环境变量,并
把DISPLAY的值设为空(“export DISPLAY=""”),然后运行startx命令进入x-windows。

如果需要在远程终端使用虚拟x-windows进行安装,需要在客户端先安装x-win32软件,x-
win32的安装过程此处略,安装完成后运行x-win32命令在用户的任务栏会出现一个x的标志
。使用neterm、SecureCRT等终端工具以Oracle用户登录系统,确认环境变量都已经生效并
且DISPLAY变量的值为终端机的IP地址,运行startkde命令启动x-windows,运行完毕后系
统可能会出现一些出错信息,忽略它们,过几秒后在用户的远程终端上将出现Linux的kde
界面。
安装程序有一个文件包:ship.db.cpio.gz(597.241KB)。

■    安装Oracle10g 数据库
以Oracle用户登录系统,启动本地x-windows或虚拟x-windows,打开一个控制台窗口,进
入到刚才存放Oracle文件的目录下,使用如下命令:

$ gunzip ship.db.cpio.gz
$ cpio -idcmv < ship.db.cpio

这样把文件解压缩成安装文件夹Disk1。
进入Disk1目录
$ cd Disk1
在控制台窗口输入:
$ ./runInstaller


注意  再次强调不推荐使用“./ runInstaller -ignoreSysPrereqs”命令来运行Oracle1
0g的安装程序,这样会忽略其他系统可能导致Oracle10g无法正常运行的一些错误。

运行后会出现一个OUI的图形界面,安装的具体界面请参见2.1节“在Windows 2000环境下
的安装”,需要注意的有下面几点:
在第5个安装界面,系统会弹出一个提示框,此时需要运行脚本“orainstRoot.sh”,打开
一个命令行终端,执行如下命令:
$ su <rootpassword>
# cd /u01/app/oracle/oraInventory
# ./orainstRoot.sh
# exit
# exit

在第22个安装界面,需要运行脚本“root.sh”,打开一个命令行终端,执行如下命令:

$ cd $ORACLE_BASE/product/10.1.0/db_1
$ su <rootpassword>
# ./root.sh
# exit
# exit

Oracle10g在Linux下和在Windows的安装界面几乎是一样的,此处略去.
I-2-3    安装后的任务
■    使用Oracle10g 数据库
安装完毕后Oracle数据库会自动启动,下面用实际操作来说明一下Oracle10g数据库的启动
和关闭。
在x-windows环境下,打开一个控制台窗口,先出现“login:”,以Oracle用户登录数据库


login: oracle
Password:

1.    启动Oracle10g 数据库
$ sqlplus "scott/tiger as sysdba"
    将出现如下连接数据库信息:
SQL*Plus: Release 10.1.0.2.0 - Production on 星期三 3月 24 16:23:27 2004
Copyright (c) 1982, 2004, Oracle.  All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>

表明登录数据库系统成功,运行startup命令启动数据库。

SQL> startup
ORACLE instance started.

Total System Global Area 336356520 bytes
Fixed Size 279720 bytes
Variable Size 268435456 bytes
Database Buffers 67108864 bytes
Redo Buffers 532480 bytes
Database mounted.
Database opened.
SQL>
表示数据库正常启动。

2.    关闭Oracle10g 数据库
$ sqlplus "scott/tiger as sysdba"     //以sysdba用户登录数据库

成功登录数据库系统后,运行shudown命令关闭数据库。
SQL> shutdown

3.    启动Oracle10g监听程序
Oracle的监听程序主要是为客户端的连接提供接口,在控制台窗口键入如下命令:
$ lsnrctl
将出现如下监听程序信息:
LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 24-3月 -2004 16
:59:51
Copyright (c) 1991, 2004, Oracle.  All rights reserved.
欢迎来到LSNRCTL, 请键入"help"以获得信息。
LSNRCTL>

表明登录监听程序控制台成功,运行start命令启动监听程序。

LSNRCTL> start
将出现监听程序的一系列启动和配置情况信息列表。
信息行的最后一行是“The command completed successfully”字样时,监听程序启动成
功。

4.    关闭Oracle10g监听程序
运行stop命令关闭监听程序。
只有注册用户登录后才能发表评论。