10.6. 安装Oracle®

Contributed by Marcel Moolenaar.

10.6.1. 前言

这节描述在FreeBSD上安装Linux版的Oracle® 8.0.5Oracle 8.0.5.1 Enterprise Edition

10.6.2. 安装Linux环境

确信您已经从ports collection安装了emulators/linux_basedevel/linux_devtools。如果运行这些ports有困难, 您可能不得不使用packages或老版本的ports collection。

如果您想运行智能代理,您还需要安Red Hat Tcl package: tcl-8.0.3-20.i386.rpm。安装这些包的命令是使用官方安装程序 RPM(ports里面archivers/rpm):

# rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package

的安装通常不会出错。

10.6.3. 创建Oracle环境

安装Oracle之前,您需要设置正确的环境。 这节只描述了在FreeBSD下安装Linux版本Oracle需要特别注意的地方。 不像在Oracle安装指南中所描述的那样。

10.6.3.1. 调整内核

正如Oracle安装指南描述的那样,您需要设置共享内存的最大值。 不要在FreeBSD下使用SHMMAXSHMMAX 只是用来计算SHMMAXPGSPGSIZE的。 因此要使用SHMMAXPGS。所有其他要使用的选项可以参考指南,例如:

options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61

设置这些选项来适应 Oracle的使用。

当然,确信您的内核配置文件中有下面这些选项:

options SYSVSHM #SysV shared memory
options SYSVSEM #SysV semaphores
options SYSVMSG #SysV interprocess communication

10.6.3.2. Oracle帐号

创建一个oracle帐号,正如您创建其他帐号一样。 oracle 帐号特殊的地方是您需要给它一个Linux shell。 添加/compat/linux/bin/bash/etc/shells, 然后设置oracle帐号的shell为/compat/linux/bin/bash

10.6.3.3. 环境

除了普通的Oracle变量外, 比如ORACLE_HOMEORACLE_SID,您还必须设置下面的环境变量:

变量
LD_LIBRARY_PATH $ORACLE_HOME/lib
CLASSPATH $ORACLE_HOME/jdbc/lib/classes111.zip
PATH /compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin

建议在.profile里面设置所有的环境变量。一个完整的例子是:

ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin
PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
export PATH

10.6.4. 安装Oracle

由于linux模拟器的一个小错误,在启动安装程序之前,您必须在/var/tmp下 创建.oracle目录。您可以把它设为所有人可写,或者由oracle用户拥有。 您必须没有问题的安装Oracle,如果有问题,请检查一下Oracle 发行包,或先配置它。安装完Oracle后,执行下面两步的修补工作。

一个经常出现的问题是TCP协议的适配器没有安装好。结果您不能启动任何TCP监听。下面的工作将帮助您解决这个问题:

# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk ntcontab.o
# cd $ORACLE_HOME/lib
# ar r libnetwork.a ntcontab.o
# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk install

不要忘记了再运行一下root.sh

10.6.4.1. 修补root.sh

从CD安装Oracle时,一些工作需要在root下执行, 这些工作都被记录在一个叫root.sh的脚本里面。这个脚本被写在orainst目录。 为了使用root.sh来正确定位chown或在Linux本地shell下执行脚本, 应该对它进行修补。

*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this script

当您不从CD安装Oracle时, 您可以从源代码来修补root.sh。 它叫做rthd.sh,定位在源代码树的orainst目录。

10.6.4.2. 修补genclntsh

genclntsh脚本用来创建一个简单的共享客户端库。在建立demos时被使用。 完成补丁后就注释掉了下面的PATH变量:

*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst

10.6.5. 运行Oracle

如果您已经按上面的指示去操作,您应该可以像在Linux下运行Oracle了。