当操作系统后、操作系统打完补丁后、完补丁之后和过程中出现问题时,都会用到relink方法来保证Oracle软件的正常使用。
本文介绍一下relink方法的使用。
   
1.以oracle用户登录操作系统
[root@secdb ~]# su - oracle
ora11g@secdb /home/oracle$

2.确定$ORACLE_HOME环境变量设置正确
ora11g@secdb /home/oracle$ echo $ORACLE_HOME
/oracle/ora11gR2/product/11.2.0/dbhome_1

3.确定操作系统的环境变量设置正确
主要涉及一下几个参数:LIBPATH、LD_LIBRARY_PATH和SHLIB_PATH
以我的环境中LD_LIBRARY_PATH环境变量设置为例:
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64/

这里需要注意的是:“$ORACLE_HOME/lib”内容要放在最前面,使其能够最先被检索到。

4.使用env命令验证操作系统环境变量是否设置正确

5.确定umask为022
ora11g@secdb /home/oracle$ umask
0022

如果返回的不是022可以使用下面的方法来调整。
ora11g@secdb /home/oracle$ umask 022
ora11g@secdb /home/oracle$ umask
0022

6.执行relink命令
1)停止监听和实例
ora11g@secdb /home/oracle$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-DEC-2010 20:30:09

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully

停止数据库实例。
sys@ora11g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

2)执行relink命令
本文以11gR2版本为例进行演示。
在这个版本中在relink过程中将不在屏幕上不断的输出relink的结果,取而代之的是将所有的输出内容都自动重定向到了relink.log日志中。如果是自其它版本中完成relink,建议将这些输出的信息都手工的重定向到一个文件中,方便对繁杂的内容进行检查。
ora11g@secdb /home/oracle$ relink all
writing relink log to: /oracle/ora11gR2/product/11.2.0/dbhome_1/install/relink.log

对relink都做了些什么的朋友可以仔细看一下这个输出日志内的信息。

7.小结
可以说使用relink的场景不是很多。除了遇到本文开始处提到的场景时需要使用relink外,如果遇到个别或大量可执行程序无法正常使用时也可以考虑使用relink重新初始化Oracle软件。

Good luck.


10.12.28

-- The End --