本来一开始打算弄个Oracle XE 玩玩也就行了,而且还有Debian版本的下载,在ubuntu安装个肯定也容易,结果试了一下,总时有些问题莫名其妙,所以就干脆搞个真正的企业版安装下,反正以前也安装成功过,可惜没有完整总结记录下来,这下也正好可以总结一下。
注意:Oracle 安装的Linux版本中,已经通过Oracle认证的有RedHat、Suse、Unbreakable Linux、asianux。如果安装的linux系统是上面linux版本之一,最好去oracle官方文档去查阅,本文仅仅限于 Ubuntu9.04,不同的版本也会有些许不同。
本文主要参考了Ubuntu论坛上的一篇ubuntu 8.10 安装Oracle 10G 企业版综合指南
在此表示感谢!
一、验证安装Oracle 数据库 10g 第 2 版的系统要求
按照Oracle官方指南,首先需要验证RAM和交换空间大小
要查看可用 RAM 和交换空间大小,运行以下命令:
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
我本机的例子:
dhn@dhn-laptop:~$ grep MemTotal /proc/meminfo
MemTotal: 2060248 kB
dhn@dhn-laptop:~$ grep SwapTotal /proc/meminfo
SwapTotal: 2088408 kB
根据oracle官方网站的安装说明要求:所需最小 RAM 为 1,024MB,而所需最小交换空间为 1GB。对于 RAM 小于或等于 2GB 的系统,交换空间应为 RAM 数量的两倍;对于 RAM 大于 2GB 的系统,交换空间应为 RAM 数量的一到两倍。
Oracle 数据库 10g 第 2 版软件还需要 2.5GB 的可用磁盘空间,而数据库则另需 1.2GB 的可用磁盘空间。/tmp 目录至少需要 400MB 的可用空间。要检查系统上的可用磁盘空间,运行以下命令:
df -h
我本机的例子:
dhn@dhn-laptop:~$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda7 27G 11G 15G 44% /
tmpfs 1006M 0 1006M 0% /lib/init/rw
varrun 1006M 104K 1006M 1% /var/run
varlock 1006M 0 1006M 0% /var/lock
udev 1006M 188K 1006M 1% /dev
tmpfs 1006M 208K 1006M 1% /dev/shm
lrm 1006M 2.4M 1004M 1% /lib/modules/2.6.28-11-generic/volatile
可以看到根文件系统可用空间为15G,大于必须的(2.5 + 1.2 + 0.4 = 4.1GB)。
此外可能需要事先安装包libaio1,因为一开始安装Oracle XE时,需要安装的当时就安装上了,这个未加验证。
而且最好开启root用户,因为Ubuntu默认是关闭root用户的,但是在oracle的安装过程中,需要root用户来执行两个脚本。
如果需要安装libaio1,可以通过下面来安装
dhn@dhn-laptop:~$ sudo apt-get install libaio1
开启root
dhn@dhn-laptop:~$ sudo passwd root
按照提示输入新密码即可。
二、创建用户
oracle要用oracle用户安装,安装好后,同样用oracle用户启动。
//创建用户组oinstall
dhn@dhn-laptop:~$ sudo addgroup oinstall
//创建用户组dba
dhn@dhn-laptop:~$ sudo addgroup dba
//创建用户组nobody
dhn@dhn-laptop:~$ sudo addgroup nobody
//将用户oracle的初始组设为oinstall,并加入到组dba中,home目录设为/home/oracle.此目录如果不存在则自动创建,shell为bash。
dhn@dhn-laptop:~$ sudo useradd -g oinstall -G dba -d /home/oracle -m -s /bin/bash oracle
//查看nobody用户所在的组
dhn@dhn-laptop:~$ id nobody
uid=65534(nobody) gid=65534(nogroup) 组=65534(nogroup)
//将nobody用户加入到nobody组里面
dhn@dhn-laptop:~$ sudo usermod -G nobody nobody
//核实nobody加入的组里面有组nobody
dhn@dhn-laptop:~$ id nobody
uid=65534(nobody) gid=65534(nogroup) 组=65534(nogroup),1003(nobody)
//设置用户oracle密码
dhn@dhn-laptop:~$ sudo passwd oracle
三、创建目录。
//建立oracle_base目录,如果不存在,就创建,oracle安装于此。
dhn@dhn-laptop:~$ sudo mkdir -p /opt/oracle10
//将此目录及其下的文件或者目录的所有者改为oinstall组的oracle
dhn@dhn-laptop:~$ sudo chown -R oracle:oinstall /opt/oracle10/
//将此目录及其下文件权限设为755
dhn@dhn-laptop:~$ sudo chmod -R 775 /opt/oracle10/
四、修改内核参数
dhn@dhn-laptop:~$ sudo gedit /etc/sysctl.conf
将以下部分,增加到文件末尾,并保存。
# special setting for oracle XE
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
//使设置生效
dhn@dhn-laptop:~$ sudo sysctl -p
dhn@dhn-laptop:~$ sudo gedit /etc/security/limits.conf
在文件末尾最后一行#end 之前加入下面内容。
#setting for oracle 10g
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
五、创建链接及Red Hat release:
//创建一些Oracle安装程序需要的工具的连接。 因为Oracle安装程序是为通过Oracle认证的Red Hat、Suse等版本准备的,所以有些工具的位置和Ubuntu不一样。
dhn@dhn-laptop:~$ sudo ln -s /usr/bin/awk /bin/awk
dhn@dhn-laptop:~$ sudo ln -s /usr/bin/rpm /bin/rpm
dhn@dhn-laptop:~$ sudo ln -s /usr/bin/basename /bin/basename
建立redhat的release
因为Oracle默认是不支持Ubuntu的,所以要把Ubuntu伪装成Redhat
dhn@dhn-laptop:/etc$ sudo touch redhat-release
dhn@dhn-laptop:/etc$ sudo gedit redhat-release
在文件内增加内容:
Red Hat Linux release 4.1
六、//使Java环境可以正常显示中文。这样在安装oracle时候的界面上的中文就不会出现乱码了。
$ cd $JAVA_HOME/jre/lib/fonts
$ sudo mkdir fallback
$ ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc
$ sudo mkfontdir
$ sudo mkfontscale
七、用oracle用户登录X
进入安装文件目录
oracle@dhn-laptop:~$ ./runInstaller -jreLoc $JAVA_HOME/jre/
注意:此处安装程序后面增加了-jreLoc的参数,因为刚刚我们更改了本地已经安装的jre,使之能够支持中文显示,这里的意思是使用我们修改后的 jre,这样Oracle安装界面中文就可以基本显示正常了。虽然在安装Database config assistant 时候弹出的界面仍然会出现乱码,但影响不大,我记得好像就2个页面。
如果不加此参数,oracle会使用自己的jre,但是这样安装界面中文就出现了乱码,当然也可以通过先执行下export LC_CTYPE=en_US.UTF-8,再运行 runinstaller 进入全英文安装界面。
oracle@dhn-laptop:~$ export LC_CTYPE=en_US.UTF-8
以下为我个人设置
产品清单目录完整路径 :/opt/oracle10
操作系统组:oinstall
ORACLE_HOME:/opt/oracle10/product/10.2.0/db_1
全局数据库名称:orcl
sid:orcl
数据库字符集: ZHS16GBK
存储选择 :文件系统
数据文件位置:/opt/oracle10/product/10.2.0/oradata/
安装会话日志: /opt/oracle10/logs/installActions2009-06-21_08-37-14AM.log
安装过程中还会出现一个警告,详细看日志文件,才发现:
信息: gcc: /usr/lib/libstdc++.so.5:没有该文件或目录
//查看/usr/lib下libstdc++是否存在
oracle@dhn-laptop:~$ ls /usr/lib | grep c++
libstdc++.so.6
libstdc++.so.6.0.10
发现有两个,而且主要还是使用的是libstdc++.so.6.0.10的,libstdc++.so.6仅仅是一个到libstdc++.so.6.0.10的链接文件,所以我们也可以这么作。建立一个链接文件即可。
root@dhn-laptop:~# ln -s /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.5
然后重试,一切ok。
以下是Oracle的 J2EE 应用程序已经配置完, 并且可用下面列出的 URL 来访问。
iSQL*Plus URL:
iSQL*Plus DBA URL:
/dba
Enterprise Manager 10g Database Control URL:
TIP:
1. 安装oracle要验证nobody用户
在Redhat 上安装oracle的官方文档里面,增加oracle相关用户的时候,并没有提及需要增加nobody用户,原因应该是在redhat上nobody用户是默认存在,并且是属于组nobody的。
但是在Ubuntu9.04上,虽然有nobody用户,但是其属于nogroup组,所以需要添加nobody用户到nobody组,nobody组如果不存在,则需要创建。
同样如果安装在其他oracle不支持的liunx版本上的时候,仍然需要通过 id nobody 来验证是否存在nobody用户,并验证是否其属于nobody组。
首先nobody是一个普通用户,非特权用户。 使用nobody用户名的目的是,使任何人都可以登录系统,但是其UID和GID不提供任何特权,即该uid和gid只能访问人人皆可读写的文件。
其次,许多系统中都按惯例地默认创建一个nobody,尽量限制它的权限至最小,当服务器向外服务时,可能会让client以nobody的身份登录。
nobody在linux中是一个不能登陆的帐号,一些服务进程如apache,aquid等都采用一些特殊的帐号来运行,比如nobody,news,games等等,这就可以防止程序本身有安全问题的时候,不会被黑客获得root权限。
nobody用户在oracle中的说明:
Unprivileged user:
As the purpose of the user is essentially to allow database users to
execute external jobs, you should not use the oracle user. The oracle
user is a powerful user; obviously they can shut down the database, and
have access to a number of resources, oracle and otherwise. You would
not want to give any database user with privileges to schedule this job
(actually create external job privs.) the ability to perform all oracle
actions; at least not in a normal environment. For security purposes,
it is best to create a user with minimum privileges required to do the
job. For example, if it reads from a specific directory, give them
access to that directory, but not to the oracle binaries directory.
The need for the low privilege user is simply a security measure. The
term unprivileged user, in many contexts, is used to refer to a non-DBA
user; it's a general term for a non super user.
2. Ubuntu9.04安装完成oracle10.2后的变量设置与脚本
安装完毕后,为了能够省点麻烦,不必敲命令的绝对路径,需要设置下oracle相关的变量
如下是我的设置,设置保存在.profile中,这样在oracle用户一登录即可生效:
oracle@dhn-laptop:~$ more .profile
。。。。。。
# local settings for java and oracle
export JAVA_HOME="/usr/java/jdk1.6.0_14"
export ORACLE_BASE="/opt/oracle10"
export ORACLE_HOME="$ORACLE_BASE/product/10.2.0/db_1"
export PATH="$PATH:$ORACLE_HOME/bin:$JAVA_HOME/bin"
export CLASSPATH=".:$JAVA_HOME/lib"
export ORACLE_SID=orcl
此处Oracle相关的只设置了ORACLE_BASE、ORACLE_HOME、ORACLE_SID
变量,并且把ORACLE_HOME/bin下的命令加入到系统PATH里面。
3. $ORACLE_BASE和$ORACLE_HOME 的区别
$ORACLE_BASE for installation
purpose only. oracle will use it to determine the optimal disk
structure (oradata oraInventory product etc). it's optional.
$ORACLE_HOME
is usually $ORACLE_BASE/product/;it is
the root directory where all kinds of oracle files resides. it is
required for all oracle runtime operations and software maitainance.
简单说,ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。
例如:如果装了2个版本的oracle,那么ORACLE_BASE可以是一个,但ORACLE_HOME是2个。
阅读(861) | 评论(0) | 转发(0) |