Monthly Archives: 七月 2008

在Ubuntu上安装Oracle

本文描述在Ubuntu 8.04下安装Oracle 10gR2的方法。对于Ubuntu6.06以上的版本,安装Oracle 10gR2应该都是没有什么问题的,但是仍然推荐8.04版,因为它各方面性能比之前的版本有了很大幅度的提高。

1. 系统

Oracle需要有X系统,如果你没有的话,那么就安装一个你需要的X系统,我安装的Ubuntu 8.04 Desktop版本,所以用的是GNOME。如果你安装的是server版,那么可以安装fluxbox之类的轻量X系统,说句题外话,我个人还是倾向于FVWM,曾经在FreeBSD下配置了一个非常不错的FVWM,但是由于年代久远,当时的东西没有留下来,现在也没有那个时间和精力去配置,所以一直是一个遗憾。

2. 需要安装的软件以及一些配置

sudo apt-get install gcc make binutils libmotif3 lesstif2 libaio1 gawk libc6 libc6-dev alien rpm libstdc++5 sun-java6-jre gcc-3.3-base build-essential autoconf automake1.9

如果空间足够,那么可以考虑安装java-jdk。

或许不需要这么多,我是这么装的,各位可以试验一下究竟都需要什么。

安装完成之后,需要做一些修改。

sudo ln -s /usr/bin/rpm /bin/rpm 
sudo ln -s /usr/bin/basename /bin/basename 
sudo ln -s /usr/bin/awk /bin/awk

然后创建/etc/redhat-release,因为Oracle需要安装在获得其认证的Linux发行版上,Redhat是其中之一,那么就需要让它认为Ubunut是Redhat。

内容是Red Hat Linux release 3.1 (drupal)

你写成Red Hat Linux release 4.1 也可。

3. 创建Oracle用户和安装路径

sudo groupadd oinstall 
sudo groupadd dba 
sudo groupadd nobody 
sudo useradd -g oinstall -G dba,admin -d /home/oracle -s /bin/bash -m -k /etc/skel oracle

oracle用户是admin的组员的原因是为了使之可以使用sudo命令。

为Oracle用户设置密码

sudo passwd oracle

创建安装和运行Oracle的文件夹。

sudo mkdir -pv /opt/oracle 
sudo mkdir -pv /opt/oradata 
sudo chown -R oracle:oinstall /opt/ora* 
sudo chmod -R 755 /opt/ora*

4. 对系统进行调整,满足安装Oracle的条件。

修改/etc/sysctl.conf,加入下面的代码

kernel.shmall = 2097152 
kernel.shmmax = 2147483648 
kernel.shmmni = 4096 
kernel.sem = 250 32000 100 128 
fs.file-max = 65536 
net.ipv4.ip_local_port_range = 1024 65000

然后运行

sudo /sbin/sysctl -p

修改/etc/security/limits.conf,加入

oracle soft nproc 2047 
oracle hard nproc 16384 
oracle soft nofile 1024 
oracle hard nofile 65536

修改/etc/profile (如果你用的是bash的话)

if [ $USER = "oracle" ]; then
	if [ $SHELL = "/bin/ksh" ]; then
		ulimit -p 16384 
		ulimit -n 65536 
	else
		ulimit -u 16384 -n 65536 
	fi 
	umask 022 
fi

注意:这里稍微解释一下umask的功能,umask的作用是决定你创建的文件或目录的缺省权限。

umask使用的对于目录的最大的权限是777,即rwxrwxrwx;而对于文件最大的权限是666,即rw-rw-rw- ;

如果我们运行命令:umask 033,则033与目录的最大权限值777进行异或运算,所以建立的新目录缺省权限为:744 ,即rwxr–r–。

而对于新建立的文件则是033与文件的最大权限值666进行异或运算,所建立的新文件的缺省权限为:644 ,即rw-r–r–。

简单的说,公式就是:对于文件夹777-umask,对于文件666-umask。

那么由于文件的最大权限是666,则可以看出,对于文件的执行权限(即x权限)使用umask命令是无法使其起作用的。

系统强制关闭文件的x缺省执行权限。如果想使文件有运行权限,只能由 chmod 命令进行设置。

检查/etc/services,确保没有使用1830到1849的端口号。

5. 配置Oracle用户的环境变量

以oracle用户登录,或者在终端下:

su oracle

这时候可能遇到No protocol specified的问题。解决方法是用root用户登录(su root),然后运行xhost +

或者直接退出当前用户的X,用oracle登录。

修改.bashrc文件,加入

umask 022 
export ORACLE_BASE=/opt/oracle 
export ORACLE_HOME=/opt/oracle 
export ORACLE_SID=GIS #这个改成自己想要的即可 
export PATH=$ORACLE_HOME/bin:$PATH

然后

source .bashrc

建议使用英文环境来安装,防止乱码

export LANG="en_US.UTF-8" 
export LANGUAGE="en_US:en"

6. 安装

将下载的Oracle 10g安装文件解压,进入解压后的目录

./runInstaller

然后就开始安装了,最好选择Advanced 方式安装,便于选择一些配置参数。

接下来的选项就因人而异了,最后有一个选择privilege operation system 的什么选项,然填一个oracle用户所在的组,我填的admin。

下面的图是数据库创建完成之后的图片:

Ubuntu_Oracle_1

最后会跳出让你执行orainstRoot.sh和root.sh的窗口,打开一个终端,用root用户执行即可,执行完了之后回到这个窗口,点OK。

Ubuntu_Oracle_2

记下该有的URL,然后就可以退出安装程序了。

Ubuntu_Oracle_3

7. 启动

这时,oracle已经启动了,例如在浏览器里输入http://localhost:1158/em,则会显示出登录的界面。

Ubuntu_Oracle_4

输入用户名和密码,则登录进管理页面。

Ubuntu_Oracle_5

在命令行下输入

sqlplus "sys/你的密码 as sysdba"

则可以登录。

那么,我们需要设置一个脚本,来使oracle之后能够正常启动。

vim oracle.sh

加入这里的内容。

注意,执行的时候,无论是

./oracle.sh start|stop

还是

sudo ./oracle.sh start|stop

都可以,因为已经export了环境变量了。

注意,这里的dbstart和dbshut都是为了给脚本用的,正确的方法是:

sqlplus "sys/你的密码 as sysdba"

然后startup或者shutdown。

那么,为了使dbstart和dbshut可以使用,需要修改/opt/oracle/bin/dbstart,将ORACLE_HOME_LISTNER的值改为oralce的安装路径,在这里是/opt/oracle。

同时还需要修改/etc/oratab文件,将最后的那个N改成Y。

手动启动:

启动和停止监听:

lsnctl start
lsnctl stop

启动和停止数据库:

dbstart
dbshut

或者

sqlplus "sys/你的密码 as sysdba" 
startup 
shutdown

启动和关闭企业管理器:

emctl start dbconsole
emctl stop dbconsole

如果需要启动的时候就运行,那么先

chmod 755 oracle.sh

同时需要将oracle.sh复制到/etc/init.d下面:

sudo cp oracle.sh /etc/init.d/

然后运行:

sudo update-rc.d oracle.sh defaults 97

经过总结,企业管理器启动和关闭都比较慢,所以可以在oracle.sh文件中注释掉相应的条目,然后启动之后手动打开即可。

 

OK,应该没有什么问题了。