暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Relinking oracle home介绍

酒负盛名的笔记 2018-07-19
1293

       三年前刚入职dba的时候,有次安装数据库,直接把数据库软件安装在根目录下,而当时的数据库运维团队要求是必须安装在挂载的目录上,方便统一运维脚本的编写和结果查看。然后我把安装的路径直接挂载到对应的存储,启动数据库,检查数据库各项状态,没有问题。导师建议我relink Oracle home,保证Oracle数据库软件的正常使用。于是查询了MOS,作了如下笔记:


1.什么是relinking?

  任何语言所预定义的函数都被定义在那种语言的库文件中,必须编译代码来创建一个二进制格式的文件(对象文件)。这个对象文件然后被连接到OS的库文件来创建一个可执行文件。成功的链接应使得所有的函数定义都能被找到,链接从它的组件中生成一个可执行文件。

  数据库的relinking就是重新链接文件,使得确保数据库的正常使用。为了将Oracle提供的对象文件与OS系统库文件链接,需要执行Oracle Home relinking.Relinking确保了与OS系统库文件提供的函数的可靠整合。

2.适用范围

  Relinking概念仅适用于UNIX平台,Windows OS上没有relinkingOracle Database-Enterprise Edition -版本9.2.0.1到12.1.0.1[发行版9.212.1]Generic UNIX

3.什么时候使用relinking

  当操作系统升级后、操作系统打完补丁后、安装完Oracle补丁之后和relinking过程中出现问题,数据库环境变量,安装软件目录路径改变时,都会用到relinking方法来保证Oracle软件的正常使用。

4.relinking的自动与手动:

1)在如下情况下relinking会自动发生:

  • 使用OUI安装Oracle Database

  • 通过OUI安装Oracle Database Patchset

  • 使用“opatch工具安装Oracle Database Patch

2)在如下情况下需要手动relinking

A)OS升级之后,通常OS供应商会保证操作系统库文件完整性,因此,除非有特殊说明,不需要重新安装或者relink Oracle软件。然而,Oracle推荐在OS升级后对Oracle Home的库执行手动的relinking

B)在操作系统安装了补丁之后(推荐)。

C)Oracle Home的安装过程的relinking阶段出现错误或者警告。

D)安装一个RDBMS补丁在relinking阶段失败。

E)应用报错说RDBMS home缺失库文件。

F)诊断RDBMS Home二进制可执行程序(binary)的问题。

G)在手动修改RDBMS home的二进制可执行程序的权限之后。

H)验证Oracle Home二进制可执行程序的完整性。

I)重置Oracle Home二进制可执行程序的权限。

J)重新创建Oracle Home二进制可执行程序。

kOracle推荐在在OS升级,降级,打补丁或者卸载补丁,或者任何影响OS库行为的改变之后,对Oracle Home二进制可执行程序执行手动的relinking。成功的relinking代表Oracle可执行程序被妥当的链接到OS库。

5.如何relink Oracle Home

  下面是relink Oracle Home 二进制执行程序的步骤:

A)设置环境变量

在链接时需要设置如下环境变量:(可以通过env来验证)

  • DISPLAY

  • ORACLE_HOME

  • PATH中包含 $ORACLE_HOME/bin

  • LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/lib

  • SHLIB_PATH $ORACLE_HOME/lib:/usr/lib (只适用于HP-UX

B)验证umask值是否为022,如果umask值不正确,设置umask022(运行命令“umask 022”

C)停止所有访问这个Oracle HomeOracle实例,监听。

D)Oracle用户执行如下命令:

$ORACLE_HOME/bin/relink

可以添加的参数有:

"all ", " oracle " , " network",  "client" , "client_sharedlib" , "interMedia" , "precomp" , "utilities ", "oemagent",  "ldap"

可以像如下这样使用 unix 的重定向特性收集手动 relinking 日志:

$  $ORACLE_HOME/bin/relink all >> relink.out

 输出会被写在 relink.out 文件中。

6.关于RACgrid用户的relinking

(下面的步骤需要在两个节点上执行

RAC中的grid用户进行relink时,可能会遇到如下报错:(若无则跳过,直接执行relink all

The Oracle home in which you are running this relinking tool does not 
have proper write permissions. Please run this relink script as the same
user who owns the Oracle home and ensure that the Oracle home has the
permissions from the original installation.
  If this is a Grid Infrastructure home, please refer to the 
documentation for the proper steps to relink and apply oneoff patches.

在此要执行下列步骤进行grid用户的relink

1)首先停止这个节点上的所有数据库实例,这是因为之后停止CRS时虽然会停止数据库实例,但是是以shutdown abort的方式,我们需要以shutdown immediate或者normal来停止数据库实例:
$su - oracle
$srvctl stop instance -d <db_name> -i <instance_name> -o immediate

2)如果业务需要高可用性,确保这个实例上的service已经切换到了其它节点的实例上。
srvctl status service -d <db_name>

3) root用户执行<GRID_HOME>/crs/install/rootcrs.pl -unlock来修改相应目录权限并停止GI
# cd < Grid Infrastructure Oracle Home >/crs/install
# perl rootcrs.pl -unlock

 注意:在12.1版本,rootcrs.sh 可以代替rootcrs.pl。即:rootcrs.sh –unlock.
4) 
GI的属主用户来对GI binary进行relink

$ export ORACLE_HOME=< Grid Infrastructure Oracle Home >
$ < Grid Infrastructure Oracle Home>/bin/relink all

5) root用户执行<GRID_HOME>/crs/install/rootcrs.pl -patch来修改相应目录权限并启动GI:

# cd < Grid Infrastructure Oracle Home >/rdbms/install/
# ./rootadd_rdbms.sh
# cd < Grid Infrastructure Oracle Home >/crs/install
# perl rootcrs.pl -patch

12.1版本,可以使用 rootcrs.sh -patch

注意:CRS服务 (CRS, CSS ASM instances, diskgroups, listeners, DB instances, etc.) 将会自动开启。 

6日志的路径。

$ < Grid Infrastructure Oracle Home>/install/relink.log

 

 

 

参考文档:

Relinking Oracle Home FAQ ( Frequently Asked Questions) (文档 ID 1467060.1)

How To Relink The Oracle Grid Infrastructure Standalone (Restart) Installation Or Oracle Grid Infrastructure RAC/Cluster Installation (11.2 or 12c). (文档 ID 1536057.1)



文章转载自酒负盛名的笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论