在ubuntu 8.04下安装Oracle 11g二

在ubuntu 8.04下安装Oracle 11g
2008年05月22日 星期四 11:02

oracle 11g 数据库虽然提供了linux x86的版本,但是支持的linux版本只有Red Hat,Novell and Solaris 这几个,debian 和 ubuntu 不在支持之列,所以在ubuntu下安装就相对麻烦一些,请照着下文的方法一步一步的安装,不要急躁,每一步都要认真作(我开始装的时候就是有点急,用自己的方法简化了其中几步,结果。。。。安装失败-_-b )。

我的系统:ubuntu 8.04 desktop (32位) 内存:896M (本来是1G, 分了128M给显卡)

本文是"Installing Oracle 11g on Ubuntu 8.04 LTS (Hardy Heron)"文章翻译和注解,是一个外国牛人写的,原文:
http://www.pythian.com/blogs/968/installing-oracle-11g-on-ubuntu-804-lts-hardy-heron
如果不愿意看E文的可以看我下面的翻译:黑字是原文翻译,
红字是我的注解蓝色为终端输入输出
(转载注明出处: )

共9步:

Step 1
下载和安装 Ubuntu 8.04 Hardy Heron (x86-32位) 版。略。

Step 2
下载Oracle 11g: Download Oracle 11g for Linux (x86, 32-bit).
现不要急着解压,一会我会告诉你解压在哪的。

Step 3
修改X server 的默认设置,点菜单的System -> Administration -> Login Window(系统->管理->登录窗口),选择“Security(安全)”选项卡,取消“Deny TCP connections to the Xserver(拒绝TCP连接到X服务器)”的勾,重启Xserver(或者重启系统)。然后在终端输入:
[email protected]:~$ xhost +127.0.0.1
127.0.0.1 being added to access control list
Step 4
打开终端,转换为超级用户:(注意,这里用sudo su -而不是sudo -s是有原因的:sudo su - 将用户转换为超级用户,并新起一个会话(空的会话),而不是像sudo -s那样将当前会话传递个新的超级用户,减少环境变量可能造成的影响和危害。
[email protected]:~$ sudo su -
[sudo] password for user:
[email protected]:~# apt-get update
...
[email protected]:~# apt-get dist-upgrade
...
[email protected]:~# reboot

Step 5
用apt安装一些必要的工具:

[email protected]:~$ sudo su -
[sudo] password for user:
[email protected]:~# apt-get install build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm
...
[email protected]:~#


Step 6
在装完那些工具以后,我们需要做的就是修改一些Ubuntu的/bin/sh的默认连接,千万不要略过这一步,否则安装的时候会出现很多错误。

[email protected]:~# cd /bin
[email protected]:/bin# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2008-04-28 19:59 /bin/sh -> dash
[email protected]:/bin# ln -sf bash /bin/sh
[email protected]:/bin# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2008-05-01 22:51 /bin/sh -> bash

如果你想知道为什么Ubuntu用dash作为默认的shell,看这个:a detailed explanation of why dash is the default system shell

Step 7
增加用户和组,并修改一些配置。这一步很重要!如果不是很有把握,不要随便改。(为了便于解释,增加了行号):
01 [email protected]:/bin# cd
02 [email protected]:~# pwd
/root
04 [email protected]:~# addgroup oinstall
Adding group `oinstall' (GID 1001) ...
Done.
07 [email protected]:~# addgroup dba
Adding group `dba' (GID 1002) ...
Done.
10 [email protected]:~# addgroup nobody
Adding group `nobody' (GID 1003) ...
Done.
13 [email protected]:~# usermod -g nobody nobody
14 [email protected]:~# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
15 [email protected]:~# passwd -l oracle
Password changed.
17 [email protected]:~# mkdir /home/oracle
18 [email protected]:~# chown -R oracle:dba /home/oracle
19 [email protected]:~# ln -s /usr/bin/awk /bin/awk
20 [email protected]:~# ln -s /usr/bin/rpm /bin/rpm
21 [email protected]:~# ln -s /usr/bin/basename /bin/basename
22 [email protected]:~# mkdir /etc/rc.d
23 [email protected]:~# for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done
24 [email protected]:~# mkdir -p /u01/app/oracle
25 [email protected]:~# chown -R oracle:dba /u01
26 [email protected]:~#
  • Lines 04-12: 增加我们需要的用户和组
  • Line 13: 让nobody用户的组变为nobody,这样Oracle的安装程序不会出问题。Ubuntu默认nobody的组是nogroup。
  • Lines 14-18: 创建一个oracle用户,并锁定用户,以阻止别人通过oracle用户登录系统。注意,oracle用户的HOME目录不要与ORACLE_HOME相同。
  • Lines 19-23: 创建一些Oracle安装程序需要的工具的连接。因为Oracle安装程序是为Red Hat准备的,所以有些工具的位置和Ubuntu不一样。
  • Finally, on lines 24-25 创建ORACLE_BASE目录。
Step 8
修改一些系统默认值。这些修改将会增加系统文件描述符的数量、增加共享内存大小和修改一些网络子系统参数。这些修改是否会对你的系统带来影响我就不得而知了。将下面这些增加到/etc/sysctl.conf文件的末尾:
fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144


再增加下面这些到/etc/security/limits.conf文件末尾:

oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535


为了强制使用刚才我们增加的东西,我们再增加下面这些到/etc/pam.d/login文件末尾:

session required /lib/security/pam_limits.so
session required pam_limits.so


然后通过命令:sysctl -p 让刚才增加的东西生效:

[email protected]:~# sysctl -p
kernel.printk = 4 4 1 7
kernel.maps_protect = 1
fs.inotify.max_user_watches = 524288
vm.mmap_min_addr = 65536
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
[email protected]:~#


Step 9
现在我们将刚才下载的oracle11g的安装包解压到/home/oracle/install/目录下。然后进入目录,设置DISPLAY参数,开始安装:

[email protected]:~# cd /home/oracle
[email protected]:/home/oracle# chown -R oracle:dba install
[email protected]:/home/oracle# su - oracle
Your account has expired; please contact your system administrator
su: User account has expired
(Ignored)
[email protected]:~$ export DISPLAY=127.0.0.1:0.0
[email protected]:~$ pwd
/home/oracle
[email protected]:~$ ls -l
total 4
drwxr-xr-x 6 oracle dba 4096 2007-09-18 18:50 install
[email protected]:~$ cd install
[email protected]:~/install$ ls -l
total 28
drwxr-xr-x 11 oracle dba 4096 2007-08-06 16:02 doc
drwxr-xr-x 5 oracle dba 4096 2007-08-03 13:28 install
drwxr-xr-x 2 oracle dba 4096 2007-09-18 18:52 response
-rwxr-xr-x 1 oracle dba 2911 2007-08-03 13:28 runInstaller
drwxr-xr-x 14 oracle dba 4096 2007-08-03 13:27 stage
-rw-r--r-- 1 oracle dba 4835 2007-08-06 18:19 welcome.html
[email protected]:~/install$ ./runInstaller -ignoreSysPrereqs


输入完上面命令后,就进入了Oracle 的同一安装程序了(OUI),不要急,继续按照本文一步一步的通过安装:
注意:OUI安装完后,并不是真正完全安装完成,还需要就行最后的收尾工作(在最后有),而且这是必须做的工作!

在ubuntu 8.04下安装Oracle 11g二
点(Next)下一步。

在ubuntu 8.04下安装Oracle 11g二
修改“Specify Operating System group name:”为:"dba",然后点"Next".

在ubuntu 8.04下安装Oracle 11g二
按照上图设置,点下一步。

在ubuntu 8.04下安装Oracle 11g二
选择"Enterprise Edition",然后下一步。

在ubuntu 8.04下安装Oracle 11g二
安图设置,下一步。

在ubuntu 8.04下安装Oracle 11g二
继续下一步。

在ubuntu 8.04下安装Oracle 11g二
等待系统检查,不要担心有错误和警告。

在ubuntu 8.04下安装Oracle 11g二
将检查到的所有非“Succeeded”的都打上勾,下一步。

在ubuntu 8.04下安装Oracle 11g二
选择“Install Software Only”,等装完以后再通过dbca装数据库,下一步。你也可以在这一步选"Create a Database"来安装数据库。
将所有组都设为:dba,下一步。
现在可以点“Install”了:)这个过程会等很久,而且其中系统会变慢,所以你最好拿本书在旁边,喝杯咖啡。
有时候系统会变得很慢,像是要死机了,这个不要管,等他慢慢装。
到了这一步不要记着点“OK”,需要做下面操作:(另起一个终端,用sudo su - 转为超级用户)

[email protected]:~# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory to 770.
Changing groupname of /u01/app/oraInventory to dba.
The execution of the script is complete
[email protected]:~# /u01/app/oracle/product/11.1.0/db_1/root.sh
Running Oracle 11g root.sh script...

The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/11.1.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...

Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
[email protected]:~#


好了,这个完成后可以点“OK”了。
安后点“Exit”退出OUI,现在可以祝贺你,OUI安装完成了:)但是还是不要急,记住咱们还有收尾工作需要做。

设置数据库文件夹和oratab文件的访问权限:(一定要加上这个,不然在使用中会有一些小问题)
$ sudo chown -R oracle:dba /u01/app/oracle/*
$ sudo chmod -R g+w /u01/app/oracle/*
$ sudo chown oracle:dba /etc/oratab
$ sudo chmod g+w /etc/oratab


然后,在/etc/profile文件中加入下面几句:

export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
export PATH=$PATH:/u01/app/oracle/product/11.1.0/db_1/bin


创建一个Oracle 11g数据库的启动脚本,名字可以叫做:oracledb,在/u01/app/oracle/product/11.1.0/db_1/bin下建立文件:oracledb,内容:

#!/bin/bash
#
# /etc/init.d/oracledb
#
# Run-level Startup script for the Oracle Listener and Instances
# It relies on the information on /etc/oratab

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
export ORACLE_OWNR=oracle
export PATH=$PATH:$ORACLE_HOME/bin

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi

case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
touch /var/lock/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac

exit 0


修改脚本为可执行的:

[email protected]:~# chmod a+x /u01/app/oracle/product/11.1.0/db_1/bin/oracledb

如果你希望开机自动启动Oracle 11g数据库,那么就作下面的工作:

[email protected]:~# ln -s /u01/app/oracle/product/11.1.0/db_1/bin/oracledb /etc/init.d/oracledb
[email protected]:~# sudo sysv-rc-conf --level 2345 oracledb on

如果没有sysv-rc-conf命令,就apt-get一个。

最后,增加你自己的用户名到dba组:

[email protected]:~# usermod -G dba -a user

好了,至此,Oracle 11g就安装完了。重新登录后,你就可以使用oracle的命令了。
你可以通过netca增加LISTENER,通过dbca增加数据库。测试一下是否安装成功:
(ORACLE_SID=heron 是你安装时候设置的值)

[email protected]:~$ export ORACLE_SID=heron
[email protected]:~$ sqlplus '/as sysdba'

SQL*Plus: Release 11.1.0.6.0 - Production on Mon May 5 02:39:27 2008

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>


如果你看到了上面的结果,证明你的oracle安装成功了。
现在就是真正安装完了:)

写得好累呀。。。