共计 7220 个字符,预计需要花费 19 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下 Red Hat 6.5 安装 Oracle 10g 故障有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
1、OS 版本兼容
OS 与 Database Software 之间的兼容性问题是我们需要考虑的第一关。在 Oracle 10g 时代,Linux 普遍版本是 4.x,所以对于我们安装的 Red Hat 6.5,在安装兼容性检查过程中是会报错的。
这个问题还是比较好解决的。原则上 6.5 版本和之前 Linux 版本没有本质的差异。而且,我们在选择 Linux 安装的时候,还是尽可能选择高版本的进行尝试。解决这个问题的方法就是要“骗”过 Oracle 软件的安装过程。
Oracle 检验版本,主要是查看 /etc/redhat-release 文件中的版本信息。我们手工将其修改之后,就可以了。
– 修改前
[root@SimpleLinux ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
– 修改后
[root@SimpleLinux ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 4.8 (Santiago)
检验通过。
2、图形界面激活报错 libXp.so
安装软件过程中,使用图形化界面方式进行安装。运行 runInstaller 脚本,报错。
[oracle@CRSimpleLinux database]$ ./runInstaller
Starting Oracle Universal Installer…
Checking installer requirements…
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed
All installer requirements met.
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-05-19_12-33-59PM. Please wait …[oracle@CRSimpleLinux database]$ Exception in thread main java.lang.UnsatisfiedLinkError: /tmp/OraInstall2014-05-19_12-33-59PM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.security.action.LoadLibraryAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
at sun.awt.DebugHelper. clinit (Unknown Source)
at java.awt.Component. clinit (Unknown Source)
笔者对 libXp 并不陌生,在过去 32bit 系统安装 10g 中,是需要安装 libXp 包的。所以在之前已经安装了 libXp。
[oracle@CRSimpleLinux database]$ rpm -qa | grep libXp
libXpm-3.5.10-2.el6.x86_64
libXp-1.0.0-15.1.el6.x86_64
不仅是 XWindows 工具,直接通过本机操作也无法启动界面工具。解决的线索在于报错目录中的 i386。笔者服务器是 64bit 的,和 32bit 不同,很多安装(包括依赖包)都是需要 32bit 软件版本进行支持。猜测是执行中需要安装 32bit 版的 libXp。
[root@CRSimpleLinux packages]# rpm -ivh libXp-1.0.0-15.1.el6.i686.rpm
warning: libXp-1.0.0-15.1.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing… ########################################### [100%]
1:libXp ########################################### [100%]
安装之后,libXp 两个版本均存在于系统中。
[root@CRSimpleLinux packages]# rpm -qa | grep libXp
libXpm-3.5.10-2.el6.x86_64
libXp-1.0.0-15.1.el6.x86_64
libXp-1.0.0-15.1.el6.i686
之后启动脚本正常。
[oracle@CRSimpleLinux database]$ ./runInstaller
Starting Oracle Universal Installer…
Checking installer requirements…
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Passed
All installer requirements met.
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2014-05-19_12-40-28PM. Please wait …[oracle@CRSimpleLinux database]$
这个问题告诫我们,凡事不能想当然,在 64bit 环境中,安装数据库许多软件包是需要 32bit 和 64bit 同时安装。
3、ins_ctx.mk 编译 link 错误
在安装过程中,进入持续运行状态之后,在 link 步骤 Oracle 终止操作,报错说 link 失败。检查错误日志,如下内容:
INFO: chmod 751 /u01/app/oracle/product/10.2.0/db_1/bin/ctxlc
INFO: gcc -m32 -o ctxhx -L/u01/app/oracle/product/10.2.0/db_1/ctx//lib32/ -L/u01/app/oracle/product/10.2.0/db_1/lib32/ -L/u01/app/oracle/product/10.2.0/db_1/lib32/stubs/ /u01/app/oracle/product/10.2.0/db_1/ctx/lib/ctxhx.o -L/u01/app/oracle/product/10.2.0/db_1/ctx/lib/ -ldl -lm -lctxhx -Wl,-rpath,/u01/app/oracle/product/10.2.0/db_1/ctx/lib -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/
INFO: sysliblist`
INFO: /usr/bin/ld: crt1.o: No such file: No such file or directory
INFO: collect2: ld returned 1 exit status
INFO: make: *** [ctxhx] Error 1
INFO: End output from spawned process.
INFO: ———————————-
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target install of makefile /u01/app/oracle/product/10.2.0/db_1/ctx/lib/ins_ctx.mk . See /u01/app/oracle/oraInventory/logs/installActions2014-05-12_06-22-42PM.log for details.
Exception Severity: 1
INFO: *** Cancel Dialog: ***
INFO: User Selected: Stop installation of all products.
INFO: Error in invoking target install of makefile /u01/app/oracle/product/10.2.0/db_1/ctx/lib/ins_ctx.mk . See /u01/app/oracle/oraInventory/logs/installActions2014-05-12_06-22-42PM.log for details.
INFO: Setting variable PREREQ_CONFIG_LOCATION to . Received the value from variable association.
查询后,发现是安装依赖包的问题。在 32bit 环境下,我们使用 rpm 直接安装或者 yum 安装时,只安装 32bit 版本就可以了。但是在 64bit 环境下,是需要将两个版本的均进行安装。这个过程中是需要严格遵守文档对安装包的要求。安装完全包之后,错误消失。
4、ins_emdb.mk 问题
安装包均安装完全之后,继续安装时依然在 link 阶段报错。
INFO: make[1]: Leaving directory `/u01/app/oracle/product/10.2.0/db_1/sysman/lib
INFO: /u01/app/oracle/product/10.2.0/db_1/sysman/lib/snmccolm.o: could not read symbols: File in wrong format
INFO: collect2: ld returned 1 exit status
make[1]: *** [/u01/app/oracle/product/10.2.0/db_1/sysman/lib/nmccollector] Error 1
make: *** [nmccollector] Error 2
INFO: End output from spawned process.
INFO: ———————————-
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target collector of makefile /u01/app/oracle/product/10.2.0/db_1/sysman/lib/ins_emdb.mk . See /u01/app/oracle/oraInventory/logs/installActions2014-05-12_06-34-52PM.log for details.
Exception Severity: 1
这个问题是比较复杂的,笔者查询了很多资料也没有一个确切的回应。最后在网络上检索到一位前辈的解决之道。
首先点击 ignore 跳过步骤,后面就可以直接完成 runInstaller 脚本执行。在 $ORACLE_HOME/bin 目录下,修改 oracle 文件为 oracle.bin。
创建文件 oracle 在相同目录,内容如下:
#!/bin/bash
export DISABLE_HUGETLBFS=1
exec $ORACLE_HOME/bin/oracle.bin $@
EOF
保存后使用 chmod a+x oracle 命令对文件进行权限修改。经过这种策略修改之后,Oracle 后续的 dbca 过程创建数据库执行正常。
但是,在后台进程中也表现出点问题,我们通过 ps –ef 不能看到常见 pmon 等后台进程,只有 oracle.bin 的系列对象。
[root@CRSimpleLinux packages]# ps -ef | grep pmon
root 542 406 0 12:57 pts/1 00:00:00 grep pmon
[root@CRSimpleLinux packages]# ps -ef | grep oracle
root 326 32748 0 12:32 pts/0 00:00:00 su – oracle
oracle 327 326 0 12:32 pts/0 00:00:00 -bash
oracle 389 1 0 12:34 ? 00:00:00 /u01/app/oracle/product/10.2.0/db_1/bin/oracle.bin (LOCAL=NO)
oracle 391 1 0 12:34 ? 00:00:00 /u01/app/oracle/product/10.2.0/db_1/bin/oracle.bin (LOCAL=NO)
oracle 399 1 0 12:35 ? 00:00:00 /u01/app/oracle/product/10.2.0/db_1/bin/oracle.bin (LOCAL=NO)
oracle 401 1 0 12:35 ? 00:00:00 /u01/app/oracle/product/10.2.0/db_1/bin/oracle.bin (LOCAL=NO)
oracle 3172 1 0 May13 ? 00:00:02 /u01/app/oracle/product/10.2.0/db_1/bin/oracle.bin
oracle 3181 1 0 May13 ? 00:00:00 /u01/app/oracle/product/10.2.0/db_1/bin/oracle.bin
oracle 3183 1 0 May13 ? 00:00:01 /u01/app/oracle/product/10.2.0/db_1/bin/oracle.bin
(篇幅原因,有省略……)
其余尚未发现兼容问题。
5、Memory Notification in alert log
安装完成后,监控 alert log 信息确定数据库运行正常。发现数据库日志中阶段性提示内存变动。
Mon May 12 19:39:09 2014
Memory Notification: Library Cache Object loaded into SGA
Heap size 3596K exceeds notification threshold (2048K)
KGL object name :XDB.XDbD/PLZ01TcHgNAgAIIegtw==
Mon May 12 19:39:09 2014
Memory Notification: Library Cache Object loaded into SGA
Heap size 3567K exceeds notification threshold (2048K)
Details in trace file /u01/app/oracle/admin/chinaredb/udump/chinaredb_ora_20268.trc
KGL object name :XDB.XDA8XlWX/h+P3gQFeMmGQWfg==
进入 10g 之后,一些内存、文件告警通知机制被引入到 Oracle 运行过程中。对一些性能关注点,如 SGA 对象、Swap 使用,Oracle 是有自己的控制机制的。一旦超过了设置阈值,就会在 alert log 中记录下来,提醒用户。
这个 memory notification 很简单,就是 SGA 中引入了比较大的 library cache 对象之后,就会自动写入进去,从性能上也没有什么大问题。如果需要解决就是修改内部的控制阈值,不要让提示过于频繁发生。
SQL alter system set _kgl_large_heap_warning_threshold =8388608 scope=spfile ;
SQL shutdown immediate
SQL startup
内部参数_kgl_large_heap_warning_threshold 就起到这个作用。修改参数后重新启动数据库,报错信息不再出现。
看完了这篇文章,相信你对“Red Hat 6.5 安装 Oracle 10g 故障有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!