2005-06-27
| 修订历史 | ||
|---|---|---|
| 版本 v1.0 | 2005-06-22 | 修订者: MG |
| 为了包含在 TLDP 中: 完成了 XML 文章结构,包含 articleinfo,用于交叉引用的章节 ID;技术、语言、语法和拼写审查。 | ||
| 版本 v1.0-pre1 | 2005-04-01 | 修订者: GP |
| 添加了杂项错误章节。 | ||
| 版本 v0.1 | 2005-03-25 | |
| 首次发布。 | ||
编写本教程是因为我对在 FC3 上安装 Oracle 9i 感到沮丧。基本上,关于在 RAS 1,2,3 RH 9, FC1, FC2 上安装 9i 的文档相当完善,但在 FC3 上很难找到任何有价值的东西;有些人甚至认为在 FC3 上安装 Oracle 9i 是不可能的。本 HOWTO 尝试将我所有的经验和发现,以及任何 FC3 特有的信息,这些信息以前散落在网络各处,浓缩成一份简洁但有用的文档。
我希望您会发现这个简短的教程很有用。
如果您需要在 FC3 上安装 Oracle 9i,您应该了解以下事实
Fedora 未获得 Oracle 公司的 *官方支持*。
在 FC3 上安装 Oracle 9i 很困难,但有可能。
Oracle 9i 无法与 gcc 3.4 使用的库链接。在 FC3 上,您需要使用 FC2 GCC 兼容库。
Oracle 10 G 安装方法不适用于 9i。
本 HOWTO 适用于 RedHat 产品 >= FC3 或更高版本,或 gcc 版本大于 2.9。如果您正在安装任何其他 RedHat 产品,您可能需要查看其他优秀的教程,例如 http://www.puschitz.com/OracleOnLinux.shtml 和 http://oracle-base.com/。
另请记住
本 HOWTO 仅旨在帮助您。这不是 Oracle 官方文档。
我不是 DBA。请不要就本文档内容以外的事项联系我。我不会帮助您设置数据库。如果您需要这方面的帮助,请查看 Oracle 论坛。
我的下一步可能是编写一些 Bash 或 Perl 脚本来完全自动化这个乏味、枯燥、令人沮丧的手动过程,但这取决于我是否有空闲时间。欢迎您的想法。
最新版本可以在 http://www.pagux.com/oracle9ionfedora3.html 找到。
我依靠您,读者,使本 HOWTO 有用。如果您有任何建议、更正或意见,请发送给我,我会尝试在下一个版本中采纳它们。
版权 2005 Gaurav Prasad
本 HOWTO 是自由文档;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;许可证的第 2 版,或(您选择的)任何更高版本。许可证的副本可在 https://gnu.ac.cn/copyleft/fdl.html 获取。
本文档的发布是希望它有用,但不作任何担保;甚至没有对适销性或特定用途适用性的暗示保证。对于本文档的内容不承担任何责任。使用文中的概念、示例和信息,风险自负。可能存在错误和不准确之处,可能会对您的系统造成损害。请谨慎操作,尽管发生事故的可能性很小,但作者不承担任何责任。
Linux 是 Linus Torvalds 的注册商标。
除非另有特别说明,否则所有版权均归其各自所有者所有。本文档中术语的使用不应被视为影响任何商标或服务标记的有效性。特定产品或品牌的命名不应被视为认可。
以 oracle 用户身份登录
su- oracle
编辑.bash_profile在 oracle 的主目录中,并添加以下内容,例如使用 vim
########## Oracle Variables ########## echo " Welcome to oracle"; ORACLE_BASE=/u01/app/oracle ORACLE_OWNER=oracle; export ORACLE_OWNER ORACLE_TERM=xterm; export ORACLE_TERM ORACLE_HOME=/u01/app/oracle/product/9.2.0.1.0 ORACLE_SID=ORTD LD_PRELOAD=$HOME/libcwait.so export DISPLAY=172.28.66.39:0.0 PATH=$PATH:$ORACLE_HOME/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/network/lib CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib export CLASSPATH LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL THREADS_FLAG=native; export THREADS_FLAG TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH LD_PRELOAD ########## End of Oracle variables ########## |
从 Fedora Core TWO
compat-libstdc++-7.3-2.96.126.i386.rpm
compat-libstdc++-devel-7.3-2.96.126.i386.rpm
compat-gcc-7.3-2.96.126.i386.rpm
compat-gcc-c++-7.3-2.96.126.i386.rpm
![]() | 不要覆盖现有软件包 |
|---|---|
确保您保留现有的 GCC 安装,否则您的大部分软件将无法工作或无法再编译。如果您的系统上已经安装了版本号较新的这些软件包,请使用 rpm -i --force 将旧版本与新版本并排安装。 |
从 Fedora Core THREE 子树中,获取 compat-db 软件包。
如果您不按上述方法安装 GCC 兼容库,您将收到大量的链接错误。
在运行安装程序之前,请执行以下操作以克服一些奇怪的错误
在/home/oracle中,创建一个名为libwait.c的文件,并按照如下所述编译它
Ceate a file called libcwait.c in the
oracle
user's home directory to avoid getting
an error when running the Oracle installer. The libcwait.c file should contain the
following text:
/*
gcc -O2 -shared -o $HOME/libcwait.so -fpic $HOME/libcwait.c
*/
#include
#include
#include
Deploying Oracle 9i on Red Hat Enterprise Linux AS 3
Page 11
#include
pid_t
__libc_wait (int *status)
{
int res;
asm volatile ("pushl %%ebx\n\t"
"movl %2, %%ebx\n\t"
"movl %1, %%eax\n\t"
"int $0x80\n\t"
"popl %%ebx"
: "=a" (res)
: "i" (__NR_wait4), "0" (WAIT_ANY), "c" (status), "d" (0), "S" (0));
return res;
}
Next, compile this file in the
oracle
user's home directory by executing the
following command:
gcc -02 -shared -o $HOME/libcwait.so -fpic $HOME/libwait.c
|
gcc-shared -o libcwait.so libcwait.c -fpic -O
然后将此库添加到数据库用户的环境
exportLD_PRELOAD=/home/oracle/libcwait.so
之前,我们在.bash_profile.
以 oracle 用户身份执行以下命令
oracle@9iserver ~> xhost +localhost oracle@9iserver ~> export DISPLAY=localhost:0.0 |
您现在可以连接到您的桌面,或者选择远程运行安装,例如使用 VNC。例如,从您的 Windows 桌面运行安装程序
为了使 Oracle 服务器在系统启动时自动启动,请创建文件/etc/init.d/oracle像这样
#!/bin/bash
#
# Run-level Startup script for the Oracle Instance and Listener
#
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance
ORA_HOME="/u01/app/oracle/product/9.2.0.1.0"
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
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 -n "Starting Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNR -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNR -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 start|stop|restart|reload"
exit 1
esac
exit 0
|
现在运行 chkconfig oracle 以更新运行级别信息。
尝试 service oracle start|stop|restart 以检查一切是否按预期工作。
如果您没有错误地到达此步骤:恭喜您。否则,请查看 第 9 节 以获取故障排除建议。
错误
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Linux Error: 2: No such file or directory |
当您重新启动并尝试登录时,会发生此错误。当数据库实例未自动挂载/启动时,您将收到大量错误。
解决方案
检查/etc/oratab并确保*:/opt/oracle/OraHome1和ordb:/opt/oracle/OraHome1设置为 "Y" (YES)。
尝试初始化数据库:$ORACLE_HOME/bin/dbstart。
错误
No start entry for SID * at /opt/oracle/OraHome1 in /etc/oratab |
这可能是由 dbstart 脚本中的错误引起的,该错误在错误的位置搜索 sid 文件。
解决方案
cp$ORACLE_BASE/admin/$ORACLE_SID/pfile/init_*.ora \
$ORACLE_HOME/dbs/init$ORACLE_SID.ora
以 oracle 用户身份
$ sqlplus SQL> create pfile from spfile; SQL> exit |
运行dbstart脚本: $ORACLE_HOME/bin/dbstart。