oracle re,Oracle relinking RDBMS Home 详解

在之前的博客我们了解了Oracle relinking 的相关内容,如下:

本篇我们继续了解Rlinking。

1 Relinking 概述

任何语言所预定义的函数都被定义在那种语言的库文件中,必须编译代码来创建一个二进制格式的文件(对象文件)。这个对象文件然后被连接到 OS 的库文件来创建一个可执行文件。成功的链接应使得所有的函数定义都能被找到,链接从它的组件中生成一个可执行文件。在这个语境中链接(linking)和 relinking 意义相同,可以互换。可执行文件都会从预编译组件中建立起来。https://www.cndba.cn/dave/article/4148

Relinking 过程中涉及的文件类型有:

.c (源代码)

.o (对象文件)

.a (归档文件)

.so 或 .sl on HP/UX (PA-RISC) (库文件)

2 Oracle Home 库的 relinking

Oracle 软件是以对象文件(.o文件),归档文件(.a文件)形式发布的,最后以压缩的 jar 格式提供。然后在安装过程中,这些对象文件被在操作系统级别“relink”,创建可执行文件。这使得 Oracle 可以与 OS 系统库提供的函数形成可靠的整合。通常,relinking 过程中,当前的可执行文件被重命名和保存,而新的可执行文件被生成。一旦新的可执行文件出现,并且你成功的测试过这些新的可执行文件工作正常,就可以删除 ORACLE_HOME/bin 目录下的旧的可执行文件。每个旧的可执行文件的文件名上都会附加一个‘O’,例如,’exp’重命名为’expO’。

提供对象文件的优点是它减小了补丁和包的大小;不提供完整的库文件和程序,而是只发布对象文件,之后与 OS 库文件链接来生成可执行文件。https://www.cndba.cn/dave/article/4148

/lib

/usr/lib

$ORACLE_HOME/lib

$ORACLE_HOME/rdbms/lib

$ORACLE_HOME/

/lib

在 $ORACLE_HOME/rdbms/lib 或者 $ORACLE_HOME/lib 目录中有一个文件叫做 sysliblist,它列出了其它需要包括的库文件的列表。

为了将 Oracle 提供的对象文件与 OS 系统库文件链接,需要执行 Oracle Home relinking.Relinking 确保了与 OS 系统库文件提供的函数的可靠整合。https://www.cndba.cn/dave/article/4148

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

1.使用 Oracle Universal Installer ( OUI ) 安装 Oracle Database

2.通过 Oracle Universal Installer ( OUI ) 安装 Oracle Database Patchset

3.使用“opatch 工具”安装 Oracle Database Patch

Relinking 也可以手动执行,在如下情况下需要手动 relinking:

A) 在 OS 升级之后,通常 OS 供应商会保证操作系统库文件完整性,因此,除非有特殊说明,不需要重新安装或者 relink Oracle 软件。“然而,Oracle 推荐在 OS 升级后对 Oracle Home 的库执行手动的 relinking”。硬件的改变不需要 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 二进制可执行程序。

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

3 如何 relink Oracle Home

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

3.1 设置环境变量

在链接时需要设置如下环境变量:

ORACLE_HOME

PATH 中包含 $ORACLE_HOME/bin

LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/lib

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

3.2 验证权限

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

3.3 停止所有相关程序

停止所有访问这个 Oracle Home 的 Oracle 实例,监听和 sqlplus。若是 AIX OS,以 root 用户运行 slibclean,等待5分钟后再次运行 slibclean。

即使有其它数据库启动和运行中,运行 slibclean 也是安全的。如下文档提供了更多细节:

Note 435071.1 Can Slibclean command be Executed when the Database is up and running?

3.4 执行relink

以 Oracle 用户执行如下命令:

$ORACLE_HOME/bin/relink

可以添加的参数有:https://www.cndba.cn/dave/article/4148

“all “, “ oracle “ , “ network”, “client” , “client_sharedlib” , “interMedia” , “precomp” , “utilities “, “oemagent”, “ldap”。

可以像如下这样使用 unix 的重定向特性收集手动 relinking 日志:https://www.cndba.cn/dave/article/4148

$ $ORACLE_HOME/bin/relink all

输出会被写在 $ORACLE_HOME/install/relink.log 文件中。

虽然 12.1 和 12.2 “Client” 选项已经删除,但是您可以使用下面的选项:

$ relink as_installed

3.5 11GR2 上可用的其它选项。

11.2.0.1 以上版本的数据库有另一个选项是使用“ Oracle Universal Installer “来执行 relinking,如下所示:

Runinstaller 可以使用如下选项:

-relink:在 oracle home 上执行 relink 动作。

使用:-relink -maketargetsxml

[-makedepsxml

] [name=value]

例子:

$ORACLE_HOME/oui/bin/runInstaller -relink -waitForCompletion -maketargetsxml $ORACLE_HOME/inventory/make/makeorder.xml -logLocation $ORACLE_HOME/install ORACLE_HOME=$ORACLE_HOME > $ORACLE_HOME/install/relink.log 2>&1

参考

Note 883299.1  Oracle 11gR2 Relink New Feature

Oracle 11gR2 Relink 脚本 新特性 说明

https://www.cndba.cn/Dave/article/1312

3.6 Relinking 独立的组件

可以随时使用‘MAKE’文件并提供一个合适的 link_option 来手动的 relink 任何一个可执行程序或者所有的可执行程序:

make -f

要 relink 一个可执行程序,需使用软件的所有者登陆到系统来执行上述命令。这个命令在

所在的 LIB 目录中执行,即,

$ORACLE_HOME/

/lib

其中

可以是 oracle,forms45 或 reports30 等等。

3.7 调试 relinking 日志

Relinking 脚本是一个 shell 脚本,可以像其它普通脚本一样调试。如下所示:

$ sh -x relink all >relink_all.out 2>&1

输出会被写到 relink_all.out 文件。

https://www.cndba.cn/dave/article/4148

3.8 Relinking 日志

在 Oracle Home 安装或者 Patchset 安装的链接操作时,Oracle Home 二进制可执行程序的安装的 relinking 日志在如下文件:

$ORACLE_HOME/install/make.log

同样你可以在数据库安装中的 OUI 日志中找到 relinking 日志。如下文档描述了 OUI 安装日志文件的细节:

Note 403212.1 “Location Of Logs For Opatch And OUI

使用 opatch 安装 Oracle 补丁的链接操作时

在使用 opatch 进行补丁 ( PSU 或 One off patch ) 安装中会发生 relinking,日志可以在 opatch 日志中找到。如下文档描述了 OUI 安装日志文件的细节:

Note 403212.1 “Location Of Logs For Opatch And OUI

手动 relinking时,日志可以使用 unix 重定向特性收集:

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

日志会被写在 relink.out 文件。https://www.cndba.cn/dave/article/4148

使用11GR2 中的新特性时,如果 relink 是使用 OUI 执行的,那么默认并不会生成”$ORACLE_HOME/install/relink.log”日志。要将 relink 输出发送到$ORACLE_HOME/install/relink.log,我们需要显示的重定向输出。

$ORACLE_HOME/oui/bin/runInstaller -relink -waitForCompletion -maketargetsxml

$ORACLE_HOME/inventory/make/makeorder.xml -logDir $ORACLE_HOME/install ORACLE_HOME=$ORACLE_HOME > $ORACLE_HOME/install/relink.log 2>&1

在使用“relink all”命令时,它总是创建一个新的日志叫做”relink.log”,并且它不会将日志信息附加在已经存在的 relink 日志中。之前的日志会被另存为一个带有时间戳的名字( 例如: relinkActions2009-09-14_09-01-10-PM.log )。

https://www.cndba.cn/dave/article/4148

3.9 手动 relinking 的已知问题

1) Relink all 是一个通用脚本,它会尝试 relink 所有的组件,不论这些组件安装了与否,并且会报错。你需要验证组件安装与否(使用“opatch lsinventory –details”命令来列出安装的组件)。

对于 Oracle Client 来说,并非所有的组件都安装,“relink all”很可能会报出很多错误。因此,relink 一个客户端的更好的方法是使用如下命令:

$ relink client

2)执行“relink all”会重置 root 拥有的文件的所有权和权限。在“relink all”之后,推荐将所有权和权限改回。

更多细节,可参考:

Note.1555453.1 - Executing “relink all” resets permission of extjob, jssu, oradism, externaljob.ora

From:Relinking Oracle Home 常见问题 (Doc ID 2048232.1)

https://www.cndba.cn/dave/article/4148

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值