.
.
.
.
现在,心情说不出的激动~
最近为了在 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