目标
本文档的目标是解释了如何使用 AIX 命令 slibclean、 genld 和 genkld,以避免任何与被锁定文件方面的错误或不能复制的文件,当安装临时的修补程序、 CPU 补丁或patchsets的有可能产生。
解决方案
在安装时临时的修补程序,CPU 补丁程序或 patchsets,您可能会遇到一些关于被锁定文件的错误或也有可能产生无法复制文件,即使要修补ORACLE_HOME 与相关联的数据库,监听和任何其他 被停止的Oracle进程。这可能是这一进程需要终止或一个附加的文件,需要将其从系统高速缓存卸载的结果。尝试和找出可能的原因,请root 用户执行以下命令。
genld l |grep <ORACLE_HOME>
genkld |grep <ORACLE_HOME>
"genld"和"genkld"的可执行文件位于下/usr/bin,如下所示:
/usr/bin/genld
/usr/bin/genkld
在AIX上,/bin 通常是/usr/bin 的链接,所以那个"which genld"可能会返回/bin/genld,而不是 /usr/bin/genld (同样"which genkld")
示例
genld l |grep /u01/app/oracle/product/10.2
genkld |grep /u01/app/oracle/product/10.2
简单案例解决
如果genld 返回的数据,则当前正在执行的进程已在 ORACLE_HOME 目录中打开,请终止进程。如果genkld 命令返回的共享对象列表当前加载到操作系统上系统缓存则以root用户通过运行 slibclean命令删除条目从操作系统缓存。