本人经过两天时间对网上多种安装方法潜心研究,认为如下为最佳途径
1.准备工作:
1).软件清单:
compat-glibc-6.2-2.1.3.2.i386.rpm
compat-libs-egcs-6.2-1.1.2.14.i386.rpm
compat-libs-6.2-3.i386.rpm
binutils-2.10.91.0.2-3.i386.rpm
i386-glibc-2.1-linux.tar.gz
glibc-2.1.3-stubs.tar.gz
/**jdk118_v3.tar.bz2*///
j2sdk-1_4_2_05-linux-i586-rpm.bin
linux81701.tar
如果你是完全安装Redhat 7.3的话,前6个包都已经安装,如果没有请在Redhat 7.3的光盘里安装。
按顺序安装:
rpm –ihv compat-glibc-6.2-2.1.3.2.i386.rpm
rpm –ihv compat-libs-egcs-6.2-1.1.2.14.i386.rpm
rpm –ihv compat-libs-6.2-3.i386.rpm
接下来安装glibc2.1包。Oracle 8i安装时需要glibc2.1。由于Red Hat Linux 7.x及以上版本的glibc版本高于2.1版本,所以必须对glibc进行降级。否则在安装时会出现错误,导致安装失败。以root账号登录,执行以下命令:
# cd /
#tar zxvf i386-glibc-2.1-linux.tar.gz
隐藏/usr/bin目录下的gcc、cc、ld,避免被Oracle installer使用,代码如下:
# cd /usr/bin
# mkdir mysaved
# mv gcc cc ld mysaved
# ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-gcc gcc
# ln -s gcc cc
# ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-ld ld
隐藏/usr/lib目录下的libc.so、libdl.so、libm.so和libpthread.so文件,避免被Oracle installer使用,代码如下:
# cd /usr/lib
# mkdir mysaved
# mv libc.so libdl.so libm.so libpthread.so mysaved
# mv libc.a libdl.a libm.a libpthread.a mysaved
2).安装binutils-2.10.91.0.2-3.i386.rpm,一定要装,不要忘了,因为他和后来的ld有关,不安装会出现ld:
unrecognized emulation mode: elf_i386_glibc21.的错误。
rpm -Uvh --force --nodeps binutils-2.10.91.0.2-3.i386.rpm
当然装完后如果你高兴可以把7.3的还原过来。
/***********************************
3.1).安装Jdk1.1.8_v3到/usr/local,这步好像可以省略
bunzip2 jdk118_v3.tar.bz2
tar -xvf jdk118_v3.tar
ln -s jdk118_v3 java//这个链接可以不作,在安装过程中直接选择/jdk118_v3
************************************/
3.2).安装jdk(这里以jdk1.4.2为例,默认安装到/usr/下)
chmod +x j2sdk-1_4_2_06-linux-i586-rpm.bin
./ j2sdk-1_4_2_06-linux-i586-rpm.bin
rpm –ivh j2sdk-1_4_2_06-linux-i586.rpm
ln -s /usr/java/j2sdk-1_4_2_06 /usr/local/java
安装完后设置java环境
修改/etc/profile添加如下内容
#+ -----------------+
# |JAVA ENVIRONMENT|
#+------------------+
JAVA_HOME=/usr/local/java
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/jaxp.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
#语言环境变量,用于解决apache中文问题
LANG=zh_CN.GBK
4).获得补丁包--两个Oracle的glibc-2.1.3-stubs.tar.gz,还有一个就是最最关键的,所有在Redhat 7.x下装过Oracle
8.1.7的朋友都被97%的Linking Error搞得很恼火,这个包就是管这个Bug的,其实是一个文件--env_ctx.mk,怎么用,别急,一会告诉你。
5).准备用户环境。
groupadd dba
groupadd oinstall //可选
useradd oracle -g oinstall -G dba
passwd oracle
输入新用户的密码。
创建安装目录(以/usr/local/oracle为例)
mkdir /usr/local/oracle
mkdir /usr/local/oracle/product
mkdir /usr/local/oracle/product/8.1.7
chown -R oracle.dba /usr/local/oracle
chmod -R 775 /usr/local/oracle
mkdir /var/opt/oracle
chown -R oracle.dba /var/opt/oracle
chmod -R 775 /var/opt/oracle
退出系统,以新建的Oracle用户登陆。
编辑/home/oracle目录下的.bash_profile,添加以下内容:
#oracle usr env
export LANG=zh_CN.GBK
#. /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh
# +--------------------------+
# | SETUP ORACLE ENVIRONMENT |
# +--------------------------+
ORACLE_BASE=/usr/local/oracle
ORACLE_HOME=/usr/local/oracle/product/8.1.7
ORACLE_SID=oracle8
ORACLE_TERM=eterm
NLS_LANG=AMERICAN.AMERICA.ZHS16GBK
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/jdbc/lib/classes12.zip:$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
#DISPLAY=192.168.0.125:0.0
# +--------------------------+
# | LINUX STUFF |
# +--------------------------+
export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/
export LD_ASSUME_KERNEL=2.2.5
export LDEMULATION=elf_i386_glibc21
PATH=$PATH:$ORACLE_HOME/bin:/usr/i386-glibc-2.1-linux/i386-glibc21-linux/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM ORA_NLS33 LD_LIBRARY_PATH PATH CLASSPATH DISPLAY
umask 022
存盘退出,建议重新启动,以防不测。
5.安装Oracle 8.1.7
tar xvf oracle817.tar
启动安装程序,
/mnt/cdrom/runinstaller(如果你是从光盘安装的话)
点击Next继续
选择安装路径,直接下一步。接下来会出现让你添安装组名-oinstall
然后以root用户执行$ORACLE_HOME/orainstRoot.sh,但我这里没有出现,这是我已经安装过,然后卸载,就免了这一步了。
如果有,运行:
su
sh orainstRoot.sh
选择安装产品,选第一个就可以
选择安装类型,这里选典型就可以,下一步选择JDK HOME。
下一步,填入数据库SID,这里是oracle8,
下一步,再下一步就出现安装进度,安装正式开始了。
你可以去休息一下,15分钟后在回来,这时候你看到的应该是如下,错误!!!!
这就是env_ctx.mk的过错,新开一个konsole窗口,把下载的env_ctx.mk copy 到$ORACLE_HOME/ctx/lib/目录下,然后Retry。
安装可以顺利结束。这时跳出窗口,要以Root身份运行root.sh
注意,$ORACLE_HOME/root.sh里有两处错误:
98行:
SED=/usr/local/bin/sed
修改为
SED=/bin/sed
102行:
RMF=/bin/rm -f
修改为
RMF="/bin/rm -f"
156行:
RUID=`/usr/bin/id|$AWK -F( '{print $2}'|$AWK -F) '{print $1}`
修改为
RUID=`/usr/bin/id|$AWK -F( '{print $2}'|$AWK -F) '{print $1}'`
或者下载模板root.sh
完成以后点OK。出现net8配置窗口:
不要着急点下一步,新开一个konsole口,把下载下来的Oracle补丁包glibc-2.1.3-stubs.tar.gz
在$ORACLE_HOME下用oracle用户运行:
tar -xvzf /tmp/glibc-2.1.3-stubs.tar.gz
然后运行,./setup_stubs.sh(也许是这个名),大约5分钟后,一切OK了。返回安装画面,选种 Perform typical configuration,下一步,
上图为创建数据库时
数据库创建完成。
Oracle 数据库安装过程结束。
开konsole窗口,运行sqlplus system/manager@oracle8,应该可以连接到数据库。运行oemapp dbastudio,出现以下Oracle
DBA Studio。一切OK!
到此oracle就可以在linux下正常运行了
启动脚本方法:
如何手动启动/关闭数据库?
svrmgrl
connect internal
startup (如果是关闭用 shutdown )
quit
如何在重启后自动启动oracle?
首先,你必须在/etc/oratab中加入下面的行
oracle8:/usr/local/oracle/product/8.1.7:Y (也就是把原本的N改为Y)
然后放下面的行到/etc/rc.d/init.d/oracle
#!/bin/sh
#
# Startup script for Oracle
#
# chkconfig: 345 79 11
# description: Oracle.
# processname: oracle
# pidfile: /var/run/oracle.pid
#
# Source function library.
. /etc/rc.d/init.d/functions
ORACLE_HOME=/usr/local/oracle/product/8.1.7
ORACLE_USER=oracle
# See how we were called.
case "$1" in
'start')
echo -n "Starting Oracle Database Server: "
daemon --user=$ORACLE_USER $ORACLE_HOME/bin/dbstart
success "Starting Oracle Database Server: "
echo
echo -n "Starting Oracle TNS Listener: "
daemon --user=$ORACLE_USER $ORACLE_HOME/bin/lsnrctl start >> /dev/null
success "Starting Oracle TNS Listener: "
echo
echo -n "Starting Oracle HTTP Server: "
daemon --user=$ORACLE_USER $ORACLE_HOME/Apache/Apache/bin/apachectl start
success "Starting Oracle HTTP Server: "
echo
touch /var/lock/subsys/oracle
;;
'stop')
echo -n "Stopping Oracle Database Server: "
daemon --user=$ORACLE_USER $ORACLE_HOME/bin/dbshut
success "Stopping Oracle Database Server: "
echo
echo -n "Stopping Oracle TNS Listener: "
daemon --user=$ORACLE_USER $ORACLE_HOME/bin/lsnrctl stop >> /dev/null
success "Stopping Oracle TNS Listener: "
echo
echo -n "Stopping Oracle HTTP Server: "
daemon --user=$ORACLE_USER $ORACLE_HOME/Apache/Apache/bin/apachectl stop
success "Stopping Oracle HTTP Server: "
echo
rm -f /var/lock/subsys/oracle
rm -f /var/run/oracle.pid
;;
'restart')
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
设置改文件的权限
chown root.root /etc/rc.d/init.d/oracle
chmod 0755 /etc/rc.d/init.d/oracle
现在你可以输入如下命令来启动oracle
service oracle start
输入如下命令来停止oracle
service oracle stop
让oracle开机自动启动
在文件/etc/rc.d/rc.local
末尾加上:service oracle start