ubuntu8.04安装oracle11g

来源:互联网 发布:js给变量赋值 编辑:程序博客网 时间:2024/05/16 10:40

原文(E):http://www.pythian.com/blogs/968/installing-oracle-11g-on-ubuntu-804-lts-hardy-heron 

共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 -> LoginWindow(系统->管理->登录窗口),选择“Security(安全)”选项卡,取消“Deny TCP connectionsto the Xserver(拒绝TCP连接到X服务器)”的勾,重启Xserver(或者重启系统)。然后在终端输入:

user@hardy:~$ 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那样将当前会话传递个新的超级用户,减少环境变量可能造成的影响和危害。user@hardy:~$ sudo su -

[sudo] password for user:

root@hardy:~# apt-get update...

root@hardy:~# apt-get dist-upgrade...

root@hardy:~# reboot

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

user@hardy:~$ sudo su -

[sudo] password for user:

root@hardy:~# apt-get install build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm...

root@hardy:~#

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

root@hardy:~# cd /bin

root@hardy:/bin# ls -l /bin/sh

lrwxrwxrwx 1 root root 4 2008-04-28 19:59 /bin/sh -> dash

root@hardy:/bin# ln -sf bash /bin/sh

root@hardy:/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 root@hardy:/bin# cd

02 root@hardy:~# pwd

      /root

04 root@hardy:~# addgroup oinstall

      Adding group `oinstall' (GID 1001) ...

      Done.

07 root@hardy:~# addgroup dba

      Adding group `dba' (GID 1002) ...

      Done.

10 root@hardy:~# addgroup nobody

      Adding group `nobody' (GID 1003) ...

      Done.

13 root@hardy:~# usermod -g nobody nobody

14 root@hardy:~# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle

15 root@hardy:~# passwd -l oracle

      Password changed.

17 root@hardy:~# mkdir /home/oracle

18 root@hardy:~# chown -R oracle:dba /home/oracle

19 root@hardy:~# ln -s /usr/bin/awk /bin/awk

20 root@hardy:~# ln -s /usr/bin/rpm /bin/rpm

21 root@hardy:~# ln -s /usr/bin/basename /bin/basename

22 root@hardy:~# mkdir /etc/rc.d

23 root@hardy:~# 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 root@hardy:~# mkdir -p /u01/app/oracle

25 root@hardy:~# chown -R oracle:dba /u01

26 root@hardy:~#

*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 让刚才增加的东西生效:

root@hardy:~# 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

root@hardy:~#

 

Step 9现在我们将刚才下载的oracle11g的安装包解压到/home/oracle/install/目录下。

然后进入目录,设置DISPLAY参数,开始安装:

root@hardy:~# cd /home/oracle

root@hardy:/home/oracle# chown -R oracle:dba install

root@hardy:~# su - oracle
Your account has expired; please contact your system administrator
su: User account has expired
(Ignored)
oracle@hardy:~$ export DISPLAY=192.168.w.z:0.0
oracle@hardy:~$ pwd
/home/oracle
oracle@hardy:~$ ls -l
total 4
drwxr-xr-x 6 oracle dba 4096 2007-09-18 18:50 database
oracle@hardy:~$ cd database
oracle@hardy:~/database$ 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
oracle@hardy:~/database$ ./runInstaller -ignoreSysPrereqs

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

的而且这是必须做的工作!点(Next)下一步。

到了这一步不要急着点“OK”,需要做下面操作:

(另起一个终端,用sudo su - 转为超级用户)

root@hardy:~# /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

root@hardy:~# /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 byDatabase Configuration Assistant when a database is createdFinished running generic part of root.sh script.Now product-specific root actions will be performed.Finished product-specific root actions.

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

在/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/oracleexport ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1export 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 1esacexit 0

修改脚本为可执行的:

root@hardy:~# chmod a+x /u01/app/oracle/product/11.1.0/db_1/bin/oracledb

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

root@hardy:~# ln -s /u01/app/oracle/product/11.1.0/db_1/bin/oracledb /etc/init.d/oracledb

root@hardy:~# sudo sysv-rc-conf --level 2345 oracledb on

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

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

root@hardy:~# usermod -G dba -a user

好了,至此,Oracle 11g就安装完了。

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

oracle@hardy:~$ export ORACLE_SID=heron

oracle@hardy:~$ sqlplus '/as sysdba'

SQL*Plus: Release 11.1.0.6.0 - Production on Mon May 5 02:39:27 2008Copyright (c) 1982, 2007, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL>

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

(................)

However, we’re not completely done yet: a few actions need to beperformed to make your life easier. First, we add these lines to /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

Also, a startup script might be useful, right? Create a file called /etc/init.d/oracledb and put this into it:

#!/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

After saving this file, make it executable:

root@hardy:~# chmod a+x /etc/init.d/oracledb

If you want this script to be run at every boot, execute this:

root@hardy:~# update-rc.d oracledb defaults 99
Adding system startup for /etc/init.d/oracledb ...
/etc/rc0.d/K99oracledb -> ../init.d/oracledb
/etc/rc1.d/K99oracledb -> ../init.d/oracledb
/etc/rc6.d/K99oracledb -> ../init.d/oracledb
/etc/rc2.d/S99oracledb -> ../init.d/oracledb
/etc/rc3.d/S99oracledb -> ../init.d/oracledb
/etc/rc4.d/S99oracledb -> ../init.d/oracledb
/etc/rc5.d/S99oracledb -> ../init.d/oracledb

Just remember: this script depends on the existence of a database on the machine, so don’t forget to run dbca as the oracle user, and configure it to start at boot time (edit /etc/oratab after creating the database, and set the last column to Y).

To make things easier, make your user part of the dba group. This way your user will be able to interact with the database server with the dba role. In the example below, user is the username:

root@hardy:~# usermod -G dba -a user

When creating a database with dbca, don’t forget to do so as the oracle user (and to export the DISPLAY environment variable). After creation, you should test if you can connect to it:

oracle@hardy:~$ export ORACLE_SID=heron
oracle@hardy:~$ 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>

After you get this output, we can finally say: it’s complete! Ofcourse, I invite you to share your thoughts and your experiences withthis HOWTO.