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。