Oracle 10g2默认仅支持redhat enterprise系列和 SuSE 系列的几个版本的 Linux。 在 Ubuntu 上安装 Oracle 需要做些设置。下面是安装过程。 安装前的准备 __________

首先要安装开发工具。切换到 root 用户执行下面的命令。

# apt-get install build-essential

然后要修改 Ubuntu 的版本以“ 欺骗” Oracle安装程序,使之能 正常安装。

# echo Red Hat Enterprise Linux AS rlease 3 (Taroon) > /etc/redhat-release

然后插入 Oralce 10g2 的安装光盘。系统会自动 mount光盘, 但由于默认情况下光盘上的文件是没有执行权限的, 因此要为cdrom加上执行权限。

# umount /media/cdrom0
# mount -o exec /media/cdrom0

安装设置

在 Oracle 光盘根目录下的 welcome.html 中有很详细的Oracle的安装指南。 可将其打开作为参考。

首先要修改内核参数:

# vi /etc/sysctl.conf

在 sysctl.conf 文件下添加以下内容。

# modify config kernel parameters for oracle 10g
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmax = 263708672
kernel.shmmni = 4096
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144

保存退出,然后执行以下命令使修改生效。

# sysctl -p

创建必要的用户和组。

# groupadd oinstall
# groupadd dba
# groupadd nobody
# useradd -d /home/oracle -G oinstall,dba -s /bin/bash oracle 

创建oracle目录:

# mkdir /opt/oracle
# chown -R oracle.oinstall /opt/oracle

创建 oracle 用户的环境设置。

# su - oracle
$ vi .bash_profile

内容如下。

export DISPLAY=:0.0
export LANG=C                             # 语言修改为英文以避免安装程序的乱码
export ORACLE_BASE=/opt/oracle            # oracle安装路径
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0    # oracle home
export PATH=$PATH:$ORACLE_HOME/bin

保存后执行下面的命令使修改生效。

$ . .bash_profile

ubuntu的X-server使用的是 xauth 进行认证,新建的 oracle 用户是无法使用 X 的, 因此安装程序无法正常执行,所以要为oracle用户增加X server的认证信息。 首先切换到系统中能够正常使用X的用户(例如安装时创建的默认用户),执行

$ xauth list $DISPLAY
hostmame/unix:0  MIT-MAGIC-COOKIE-1  1234567890abcdef01234567890abcdef

然后切换到 oracle 用户:

# su - oracle
$ xauth add $DISPLAY . 1234567890abcdef01234567890abcdef
$ exit

开始安装

切换到oracle用户执行安装程序。

$ /media/cdrom/runInstaller

安装界面。选择 DBA 组为 dba。

oracle_install_1.png

下一步,选择安装程序所用的目录。组名设置为 oinstall。

oracle_install_2.png

之后进入安装过程。 安装过程中可能会遇到一些错误。遇到错误时, 打开 $ORACLE_HOME/oraInventory/logs/installAction***.log文件 查看错误原因。

错误1

错误信息:

Exception String: Error in invoking target 'ntcontab.o' of makefile '/opt/oracle/product/10.2.0/network/lib/ins_net_client.mk'. See '/opt/oracle/oraInventory/logs/installActions2006-09-10_05-15-13PM.log' for details.

原因:

INFO: sys/types.h: No such file or directory
(找不到sys/types.h)

原因在于安装oracle之前没有安装开发工具。切换到root安装开发工具即可。

$ su -
# apt-get install build-essential

错误2

错误信息:

Error in invoking target 'utilities ctx_on' of makefile '/opt/oracle/product/10.2.0/rdbms/lib/ins_rdbms.mk'. See '/opt/oracle/oraInventory/logs/installActions2006-09-10_05-15-13PM.log' for details.

原因:

INFO: /opt/oracle/product/10.2.0/lib//libagtsh.so: undefined reference to `nnfyboot'
(在库文件 libagtsh.so 中找不到 nnfyboot 符号)

这是 Oracle 安装程序的一个bug(参考)。修正方法如下,切换到 root 执行下面的命令。

export LD_LIBRARY_PATH=$ORACLE_HOME/lib
ln -s /usr/bin/basename /bin/basename
ln -s $ORACLE_HOME/lib/libclient10.a $ORACLE_HOME/lib/libagtsh.a
$ORACLE_HOME/bin/genagtsh $ORACLE_HOME/lib/libagtsh.so 1.0 

然后在 Oracle 安装程序中 Retry 即可。

安装将近完成时,安装程序要求你以root权限执行脚本。

oracle_install_3.png

切换到root用户执行即可,但由于ubuntu的路径问题,需要先执行下面的命令。

# ln -s /usr/bin/awk /bin/awk

然后执行要求的脚本。

# /opt/oracle/oraInventory/orainstRoot.sh
# /opt/oracle/product/10.2.0/root.sh

后一个脚本会询问 /usr/local/bin 的位置(选择默认值即可),然后向其中复制三个文件: coraenv、 dbhome、oraenv。

安装结束,显示下面的信息。

The following J2EE Applications have been deployed 
and are accessible at the URLs listed below.

iSQL*Plus URL:
http://charleemain:5560/isqlplus

iSQL*Plus DBA URL:
http://charleemain:5560/isqlplus/dba