在 Ubuntu7.04 上安装 Oracle 10g

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
flexitime
帖子: 27
注册时间: 2007-10-09 16:34

在 Ubuntu7.04 上安装 Oracle 10g

#1

帖子 flexitime » 2007-10-15 7:53

在 Ubuntu7.04 上安装 Oracle 10g

written by flexitime, 2007-10-15〔http://flexitime.blog.sohu.com/

今天终于在Ubuntu7.04上成功安装Oracle10g。为了安装Oracle,花了不少时间到网上查资料,不过更多的时间用于自己的真正实践,当中走了不少的弯路,现在把安装过程记下来。(我一共在两台机器上安装了三次,这篇文章是在安装第三次的时候一边操作一边在另外的电脑上写的)
在网上有不少Oracle的安装教程,但这些教程更多的只是针对较低版本的Ubuntu(如6.X,5.X等等),而且安装Oracle的过程中也有些问题是没有描述和解决的。因此,我觉得有必要自己写一下安装我的实践过程,当然,我主要还是参考了孙高勇先生的《Oracle 10g for Ubuntu安装指南》的内容。
现在开始吧!

第一步,我们需要一个Ubuntu。当然在网上可以免费下载得到,我用的是桌面版,而不是网站上提供的服务器版,很多刚由Windows转过来的朋友可能会认为服务器版总会比桌面版多些功能,为此而下载了服务版来用。其实Ubuntu网上提供的下载却不然,服务器版只不过比桌面版多了amp的软件(a-apache, m-mysql, p-php),但却没有图形用户界面(可以另外再安装,但比较麻烦)。为此,我使用了桌面版的Ubuntu来完成这次的安装。安装的时候虽然有中文可以选择,但我还是选用了英文,这不是我的英文特别好(再好也好不过母语)的缘故,而是因为Ubuntu的汉化未如理想,汉字的支持也不怎么样(特别是在纯 CUI模式下)。所以还是用英文会更好(不必担心,在英文版Ubuntu下一样可以用中文的输入法,同样也可以让Oracle支持中文),要安装 ubuntu,可以参考网上的其它教程。

第二步,安装必需的包
apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5 alien

第三步,创建用户
在很多教程中都用命令去创建用户。但我发现用命令去创建的用户,在图形界面下用得不甚理想,所以用图形界面的用户管理器增加一下新组叫dba,然后再增加一个普通桌面的用户叫oracle(按默认的设置即可),接着用命令增加一个组及用户

addgroup nobody
usermod -g nobody nobody

第三步,复制文件及设置安装目录
我是用以CD作介质来安装Oracle的,所以安装之前要先将安装文件复制到机器当中(不复制也是可以的,但复制到机器中会比较稳当),我在 / 上创建一个目录ora_ins_disk,然后将文件都复制进去。复制后,为了确保能顺利进行安装,要查看一下runInstaller及 unzip 两个文件属性,确保其具有x属性(我就在unzip这个地方倒了大霉,试着安装的时候老是报Permission Denied,我开始的时候一直以为是tmp空间不足,其实是 unzip 中没有运行的权限),如果没有那么要改动一下文件的属性:

cd /ora_ins_disk
chmod 755 runInstaller
cd install
chomd 755 unzip

我准备把oracle安装到/opt/ora10中,而数据文件也放在这个目录的下层子目录中:

cd /opt
mkdir ora10
chown -R oracle:dba ora10

第四步,修改设置
A.设置swap区
Oracle10g至少需要500M的内存和400M的交换空间,要查看swap区是否足够大小,用 fdisk -l 命令去查,如果小于400M的空间,那么就要增加swap的大小
重设交换分区可以使用如下操作:

dd if=/dev/zero of=tmp_swap bs=1k count=900000
chmod 600 tmp_swap
mkswap tmp_swap
swapon tmp_swap
完成安装以后,可以释放这个空间:
swapoff tmp_swap
rm tmp_swap
count 值是根据你需要调整的交换分区大小而定。

B.修改 sysctl.conf
添加如下的行到/etc/sysctl.conf 中:
kernel.shmmax = 3147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

C.修改 limits.conf
添加如下的行到/etc/security/limits.conf中:

* soft nproc 2407
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536

D.让修改生效
修改了以上文件后,必须让其生效,或重启系统,或切换到 root 用户下用以下的方式改变内核运行参数:
sysctl -p

E.产生相应的软连接
创建一个文件如 kk,内容如下:

#!/bin/bash
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename
mkdir /etc/rc.d
ln -s /etc/rc0.d /etc/rc.d/rc0.d
ln -s /etc/rc2.d /etc/rc.d/rc2.d
ln -s /etc/rc3.d /etc/rc.d/rc3.d
ln -s /etc/rc4.d /etc/rc.d/rc4.d
ln -s /etc/rc5.d /etc/rc.d/rc5.d
ln -s /etc/rc6.d /etc/rc.d/rc6.d
ln -s /etc/init.d /etc/rc.d/init.d


创建后,切换到 root 用户去执行一下。

F.创建RedHat的版本声明文件
在/etc/redhat-release中添加以下语句,以使安装程序认为正在一个RedHat的系统上安装:

Red Hat Linux release 3.1 (drupal)

G.修改环境变量
编辑 /home/oracle/.bashrc,增加以下export 的内容。
(注意,在Ubnutu 7.04中用户的profile文件已改名为~/.profile,有很多安装教程都是用 ~/.bash_profile,在7.04中不行的)

export ORACLE_HOME=/opt/ora10
export ORACLE_OWNER=oracle
export ORACLE_SID=ora1
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

第五步,开始安装
注销原来的用户,改用oracle用户登录。用env查看一下环境变量是否生效。
然后进行/ora_ins_disk中进行安装

cd/ora_ins_disk
./runInstaller

在安装过程中,请使用 Advanced Installation,然后一路按默认的设置进行往下设置,到窗单名为 “Specify Database Configuration Options”的时候,要修改以下设置:
Database Character Set 中选择 Simplified Chinese ZHS16GBK
在安装的后期,系统提示需要用 root 用户去运行两个脚本文件orainstRoot.sh和root.sh,安装完毕后,Oracle是正常启动着的,你可以试一下连接数据库,同时也可以使用浏览器去设置一下Oracle,(url:http: //localhost:1158/em/)(Oracle 10g与之前的版本都不一样,使用WEB页的企业管理器来代替以前的C/S版JAVA企业管理器)

第六步,设置自启动

创建自启动脚本
创建 oracledb 脚本到/etc/init.d/oracledb,内容如下

#!/bin/bash
#
# /etc/init.d/oracledb
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface

export ORACLE_HOME=/opt/ora10
export ORACLE_SID=ora1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/oracle
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/oracle
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0

设置权限,放到启动脚本中去
chmod 755 /etc/init.d/oracledb
update-rc.d oracledb defaults 99
我的 oralce 的安装盘中可能有些问题,所以如果只用上述的脚本是不能启动 listener的,要修改一下:
修改 /opt/ora10/bin/dbstart文件
查找:
# Set this to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
将其改为:
# Set this to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$ORACLE_HOME

设置后,测试一下

/etc/init.d/./oracledb reload

如果一切正常的话,会关闭一次Oracle又再重新打开。

至此就安装完毕,但这里有个小问题一直未能解决:
如果我用中文WinXP的IE去登录管理那台Oracle服务器的话,页面中的文字会随之变为中文(在英文的浏览器下,会看到是纯英文的页面),但会有部份的字会变成“口口”字符,不知如何解决。我觉得这应该是Java问题,因为之前用tomcat写 jsp 的时候,如果character encoding没写好的话,也会出现这样的问题,但在Oracle中我还不知如何解决。
上次由 flexitime 在 2007-10-24 17:43,总共编辑 1 次。
ljflovewyn
帖子: 21
注册时间: 2007-03-15 15:12

#2

帖子 ljflovewyn » 2007-10-15 22:35

写的好,我这几天也正好搞这个,关于这个中文的问题,我已经解决了,就是你可以不使用Oracle自带的JDK,而是可以使用自己安装的JDK,我就是用的自己安装的,至于如何设置JAVA中文,你可以看下http://forum.ubuntu.org.cn/viewtopic.php?t=71848这篇帖子,设置好JAVA中文环境之后,你就可以将Oracle中的JDK删掉,然后做一个符号连接,连接到你自己的JDK上就好了。呵呵。我也是先用命令行创建用户和组,但是创建出来之后,没有oracle的目录,所以就使用系统管理中的创建,然后就没什么问题了。我还没有设置自启动,看了你的文章可以试一试。
flexitime
帖子: 27
注册时间: 2007-10-09 16:34

#3

帖子 flexitime » 2007-10-16 8:13

我本来也是想这是Java的问题,但一来刚装完还未去细想,另外就是这个问题好像影响不太大,应为只是确定,关闭等按钮的中文显示不了,其它的都正常。
但既然楼上的兄弟能帮快,今晚也就试一下。
另外,想问楼上的兄弟,你用的JDK是什么版本的,我本来就安装了个JDK6的(用源里面的包),但我一直没有把它用到Oracle上,原因是10g用的JRE是1.4的。我不知道 JDK6能不能用,毕竟1.4与 5.0,6.0差别是比较大的,它们不太通用。(看看Open-Open上的Java软件就知道了)
ljflovewyn
帖子: 21
注册时间: 2007-03-15 15:12

#4

帖子 ljflovewyn » 2007-10-16 19:32

我用的是JDK6,在Oracle中没有问题,可以使用。你试试
oxoxvip
帖子: 2
注册时间: 2007-04-26 21:01

#5

帖子 oxoxvip » 2007-10-18 11:52

昨天照楼主的方法装了一遍,在安装必须的包时,lesstif2 libmotif3 这两个包找不到,忽略过去安装ORACLE,在安装过程中出了一些问makefile错误,估计就是那两个包引起的。请问那两个包要单独下载吗,在APT-GET里没有??
flexitime
帖子: 27
注册时间: 2007-10-09 16:34

#6

帖子 flexitime » 2007-10-21 15:47

我是在源里面安装的,没有问题,你更新一下你用的源吧。
commissarster
帖子: 6
注册时间: 2007-10-22 16:27

#7

帖子 commissarster » 2007-10-22 16:31

我也是按照孙高勇先生的《Oracle 10g for Ubuntu安装指南》的文章进行安装的,安装过程还算比较顺利,只是我用JDK6一直安装不能成功,最后把系统退出到JDK5后,安装成功了.
另外,那个web控制界面的中文显示问题一直没有解决掉,很是郁闷.不知道这里有没有人遇到同样的问题?
bluesnow
帖子: 7
注册时间: 2006-11-23 16:33

出错了

#8

帖子 bluesnow » 2007-10-24 15:16

我是按照一楼的方法,可到了安装的时候,就出错了
water@water:~/ora_ins_disk$ ./runInstaller
./runInstaller: 63: /home/water/ora_ins_disk/install/.oui: not found
我用命令查看了一下,也有那个.oui文件,可就是安装时找不到,不知道什么原因,请各位给找下解决方法
flexitime
帖子: 27
注册时间: 2007-10-09 16:34

#9

帖子 flexitime » 2007-10-24 17:35

应该是运行属性的事,你看一下那个oui的属性,有没有运行属性,如果没有就改一下
chmod 755 oui
flexitime
帖子: 27
注册时间: 2007-10-09 16:34

#10

帖子 flexitime » 2007-10-24 17:37

对了,你的那些包安装了没有?没有安装就要安装好!不然也可能报错
cdlww
帖子: 81
注册时间: 2005-10-17 23:56

#11

帖子 cdlww » 2007-11-06 18:17

奇怪!我只是下载了Oracle主页的deb包!直接安装就可以了~然后,按照root权限运行了
/etc/init.d/./oracledb configure 按照默认的提示按回车,设置sys账户的密码~,最后就是问,是不是开机以后自动启动~选y就行了~
然后就是打开网页输入127.0.0.1:8080/apex,就行了~
lionboy
帖子: 82
注册时间: 2007-11-06 19:39

#12

帖子 lionboy » 2007-11-06 19:52

我每次装到检查环境那一步时就出现一下错误,然后直接跳过!为什么,高手指点!
rpm: To install rpm packages on Debian systems, use alien. See README.Debian.
error: cannot open Packages index using db3 - No such file or directory (2)
error: cannot open Packages database in /var/lib/rpm
rpm: To install rpm packages on Debian systems, use alien. See README.Debian.
error: cannot open Packages index using db3 - No such file or directory (2)
error: cannot open Packages database in /var/lib/rpm
cdlww
帖子: 81
注册时间: 2005-10-17 23:56

#13

帖子 cdlww » 2007-11-06 23:59

你用的是rpm包进行安装的吗?要事那样就必须用alien进行传换~具体过程在wiki里有~而且你可以直接下载deb包从oracle的网站。http://www.oracle.com/technology/softwa ... nsoft.html
去下载deb的包,然后安装就可以了~
lionboy
帖子: 82
注册时间: 2007-11-06 19:39

#14

帖子 lionboy » 2007-11-08 12:12

那如果我要安装企业版怎么办?Oracle的安装程序是可执行文件,哪有什么RPM包,DEB包的?我估计可能是Oracle在安装的过程中执行了RPM包,但这是自动的啊,我还能把安装盘里的RPM包替换成DEB的?我想知道解决办法是什么样的?
xiuxiuxiu
帖子: 25
注册时间: 2007-05-14 22:26

#15

帖子 xiuxiuxiu » 2007-11-20 10:58

昨晚终于装好了oracle10g.
不过好像安装过程中报错说找不到rpm.
而且没有办法把oracle安装到我的目录下,郁闷了.
回复