Ubuntu 中安装 Oracle 10g

.

.

.

.

现在,心情说不出的激动~

最近为了在 Linux 里面安装 Oracle 数据库可以说是费尽了心思,结果总是出现各种各样的问题。。最开始是不支持 Ubuntu 系统安装,可是我个人比较习惯使用 Ubuntu 进行 Java 开发,所以不想换成 RedHat 系统,但是在网上查了半天资料也没找到在 Ubuntu 上面安装的办法;于是在虚拟机中换成了 RedHat 系统做安装测试,结果好不容易装上了 RedHat4 后发现提示了一大堆错误,其中包括“不支持该内核版本”、缺少 N 多带有依赖关系的软件包等等等等。。。。。(下面还有一大堆错误,已经不敢往下看了。。。)

于是乎换回了 Ubuntu 11.04 系统,继续想办法,经过了两天的奋斗后,终于找到了解决办法,现在将整个安装步骤共享出来,希望能够让遇到同样头疼的问题的童鞋迅速找到解决方案。

好了,废话少说,现在我们言归正传。

首先配置 Oracle 所需的安装环境。

配置 Oracle 的安装环境参考本文完成:http://wiki.ubuntu.org.cn/Ubuntu%E4%B8%8AOracle10g%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97

安装各种依赖的软件包。

apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio1 libstdc++6 alien

创建用户。

# adduser oracle
正在添加用户"oracle"...
正在添加新组"oracle" (1001)...
正在添加新用户"oracle" (1002) 到组"oracle"...
创建主目录"/home/oracle"...
正在从"/etc/skel"复制文件...
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码: 
passwd:已成功更新密码
Changing the user information for oracle
Enter the new value, or press ENTER for the default
	Full Name []: oracle
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 

adduser 命令系统会自动创建oracle用户的文件。

添加如下的行到/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

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

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

修改了以上文件後,必须让其生效,或重启系统。


创建一个文件如 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 用户去执行一下。

创建 RedHat 的版本声明文件。

sudo gedit /etc/redhat-release

在/etc/redhat-release中添加以下语句,以使安装程序认为正在一个RedHat的系统上安装:

Red Hat Linux release 3.1 (drupal)

配置环境变量。

编辑 /home/oracle/.bashrc,增加以下export 的内容。

export ORACLE_HOME=/opt/orcl10
export ORACLE_OWNER=oracle
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH


配置好 Oracle 的安装环境之后开始安装 JDK 环境,我下载的是 jdk-6u26-i586.bin 这个文件,版本是 jdk1.6 的。

安装 JDK 是参考这篇文章安装的:http://forum.ubuntu.org.cn/viewtopic.php?t=183803

把下载的 JDK 安装文件复制到 /usr/lib/jvm/java 中:  

sudo mkdir -p /usr/lib/jvm/java
cp ~/下载/jdk-6u26-i586.bin /usr/lib/jvm/java

修改文件权限:

sudo chmod u+x /usr/lib/jvm/java/jdk-6u26-i586.bin

然后进行安装:

cd /usr/lib/jvm/java
./jdk-6u26-i586.bin

等待安装完成。

等执行完成后,在当前目录得到 jdk1.6.0_26 目录,此 JDK 已经安装完成,下面进行配置。

sudo vi /etc/environment

在 environment 文件中进行如下修改。

PATH="......:/usr/lib/jvm/java/jdk1.6.0_26/bin"
CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_26/lib
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_26

切换到 Root 权限,然后执行。

sudo -i
source /home/你当前的用户名/.bashrc

此时,环境变量设置成功(设置环境变量的方法很多,不一一列举)
由于ubuntu中可能会有默认的jdk,如openjdk,所以,为了使默认使用的是我们安装的jdk,还要进行如下工作。
执行

update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.6.0_26/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.6.0_26/bin/javac 300

通过这一步将我们安装的jdk加入java选单。
然后执行

update-alternatives --config java

配置字体,否则 Oracle 安装向导会乱码。

首先选择一个中文字体,我选择的是/usr/share/fonts/truetype/arphic/ukai.ttc

cd /usr/lib/jvm/java/jdk1.6.0_26/jre/lib/fonts
sudo mkdir fallback
cd fallback
sudo ln -s /usr/share/fonts/truetype/arphic/ukai.ttc
sudo mkfontdir
sudo mkfontscale

创建安装目录。

sudo mkdir /opt/orcl10
sudo chmod 777 /opt/orcl10

安装完 JDK 环境之后开始配置 Tomcat,我下载的是 Tomcat 7。

安装 Tomcat 参照的文章是:http://forum.ubuntu.org.cn/viewtopic.php?t=183813

将其移动至/usr/share/tomcat7

sudo mkdir -p /usr/share/tomcat7
sudo chmod 777 /usr/share/tomcat7
mv ~/下载/apache-tomcat-7.0.16.tar.gz /usr/share/tomcat7

然后进行解压缩:

cd /usr/share/tomcat7
tar -zxvf apache-tomcat-7.0.16.tar.gz

此时得到一个文件夹:apache-tomcat-7.0.16

然后配置环境变量:

sudo gedit /usr/share/tomcat7/apache-tomcat-7.0.16/bin/catalina.sh

在文件开头注释后插入:

JAVA_HOME="/usr/lib/jvm/java/jdk1.6.0_26"

然后启动 Tomcat 服务器:

/usr/share/tomcat7/apache-tomcat-7.0.16/bin/startup.sh

这样,就可以成功启动tomcat.


开始安装:注销原来的用户,改用oracle用户登录。用env查看一下环境变量是否生效。

断开网络链接。

解压缩下载的 Oracle 安装包。

cd ~/下载
unzip 10201_database_linux32.zip

进入解压缩的目录开始安装。

cd databases
./runInstaller -jreLoc /usr/lib/jvm/java/jdk1.6.0_26/jre

此时出现安装向导。

选择高级安装,并等待安装完成。

创建自启动脚本 创建 oracledb 脚本到/etc/init.d/oracledb

sudo gedit /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 #这里修改成你的 Oracle 安装目录
export ORACLE_SID=ora1 #这里写你的 Oracle 数据库实例的 SID
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 Error] dbstart command does not exist, quitting..."
exit 1
else
echo "[Oracle Info] dbstart existance check OK"
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 "[Oracle Info] Starting oracle"
echo "[Oracle Info] su $ORA_OWNR -c ""$ORACLE_HOME/bin/lsnrctl start"
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
if [ $? -ne 0 ] 
then
	echo "[Oracle Error] listener failed to start"
exit 1
else 
	echo "[Oracle Info] listener start OK"
fi

su $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
echo "[Oracel Info] su $ORA_OWNR -c ""$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
if [ $? -ne 0 ] 
then
	echo "[Oracle Error] dbstart failed to start"
exit 1
else
	echo "[Oracle Info] dbstart OK"
fi
touch /var/lock/oracle
echo "[Oracle Info]su $ORA_OWNR -c ""$ORACLE_HOME/bin/emctl start dbconsole"
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
if [ $? -ne 0 ] 
then
	echo "[Oracle Error] dbconsole failed to start"
exit 1
else
	echo "[Oracle Info] dbconsole start OK"
fi
echo "[Oracle Info] Starting oracle ended OK"
;;
stop)
# Oracle listener and instance shutdown
echo "[Oracle Info] Shutdown Oracle: "
echo "[Oracle Info] su $ORA_OWNR -c ""$ORACLE_HOME/bin/lsnrctl stop"
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
echo "[Oracle Info] su $ORA_OWNR -c ""$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"
rm -f /var/lock/oracle
echo "[Oracle Info]su $ORA_OWNR -c ""$ORACLE_HOME/bin/emctl stop dbconsole"
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
echo "[Oracle Info] Shutdown Oracle ended OK"
;;
reload|restart)
echo "[Oracle Info]: $1 oracle"
$0 stop
$0 start
;;
*)
echo "[Oracle Error] Unknown context: $1"
echo "[Oracle Info]  Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0

设置权限,放到启动脚本中去

sudo chmod 755 /etc/init.d/oracledb
sudo update-rc.d oracledb defaults 99

还需要编辑一下/etc/oratab,把其中的N改成Y,不然上述脚本中所调用的$ORACLE_HOME/bin/dbstart在执行时不会自动启动相应的数据库实例(这里的数据库实例是ora1)。

sudo gedit /etc/oratab

文件内容如下:

#



# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by the Database Configuration Assistant when creating
# a database.

# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
ora1:/opt/ora10:Y



posted on 2011-08-30 00:24  0xCAFEBABE  阅读(1407)  评论(0编辑  收藏  举报

导航