ORACLE EBS数据库RELINK方式搭建克隆环境
ORACLE EBS系统的数据库,一般都安装了很多特定功能的小补丁来解决特定的BUG;因此对于已经安装好的系统,想要克隆一套测试环境、搭建一个新的备机做测试等,如果按照生产环境标准,则需要安装大量补丁,带来很大工作量,那么有没有一个简单的方法呢?
对于单机系统来说,把已经安装好的软件目录(通常是包括ORACLE_BASE、ORACLE_HOME)做一个TAR包,再传输到目标环境做一个解压、RELINK,则可以快速完成安装EBS测试数据库环境;当然对应的数据库软件安装前的配置也需要设置好(或者直接安装安装一个同样版本 不安装小补丁的思路完成安装后,把ORACLE_HOME文件夹目录改名备份方式)。
如下则是一次ORACLE EBS数据库备机环境使用TAR包再做RELINK的方式做的搭建,对应RELINK相关的问题及注意事项,可以参考ORACLE MOS文档Relinking Oracle Home 常见问题 (文档 ID 2048232.1)。
1、正常安装和EBS数据库相同的数据库版本,这里是ORACLE 12.1.0.2版本,此部分简单不再多说。
2、备份现有目录(确保SQLPLUS/LSNRCTL等程序已经关闭)
mv 12.1.0.2/ 12.1.0.2-bak
3、解压生产环境ORACLE_HOME的TAR包
tar -zxf 12.1.0.tar.Z
mv 12.1.0 12.1.0.2 和现有的HOME目录保存一致,这样不用改其他地方了
4.进行RELINK并检查日志确认无异常报错
cd $ORACLE_HOME/bin
./relink all
more /u01/app/oracle/product/12.1.0.2/dbhome_1/install/relink.log
5、SQLPLUS等命令的使用验证
[oracle@newdb03 bin]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue Mar 11 20:24:40 2025
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to an idle instance.
SQL> exit
[oracle@newdb03 ~]$ lsnrctl status
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 11-MAR-2025 20:25:05
Copyright (c) 1991, 2014, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
6、OPATCH查看版本
此时报错:The Central Inventory is corrupted
[oracle@newdb03 dbs]$ opatch lsinv
Oracle Interim Patch Installer version 12.2.0.1.16
Copyright (c) 2025, Oracle Corporation. All rights reserved.
Oracle Home : /u01/app/oracle/product/12.1.0.2/dbhome_1
Central Inventory : /app/oraInventory
from : /u01/app/oracle/product/12.1.0.2/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.16
OUI version : 12.1.0.2.0
Log file location : /u01/app/oracle/product/12.1.0.2/dbhome_1/cfgtoollogs/opatch/opatch2025-03-11_20-25-35PM_1.log
LsInventorySession failed: OPatch failed to locate Central Inventory.
Possible causes are:
The Central Inventory is corrupted
The oraInst.loc file specified is not valid.
OPatch failed with error code 73
那么Central Inventory.在哪里呢?
查看:
[oracle@newdb03 dbs]$ cat /etc/oraInst.loc ==这是软件安装的,存在,位置没错。
inventory_loc=/u01/app/oraInventory
[oracle@newdb03 dbhome_1]$ cat oraInst.loc ==ORACLE_HOME下的,这是TAR包里带的生产环境的路径,是不对的,人工修改一下:
inventory_loc=/app/oraInventory ==按实际修改
inst_group=oinstall
修改完成后再查看:
[oracle@newdb03 dbhome_1]$ opatch lsinv
Oracle Interim Patch Installer version 12.2.0.1.16
Copyright (c) 2025, Oracle Corporation. All rights reserved.Oracle Home : /u01/app/oracle/product/12.1.0.2/dbhome_1
Central Inventory : /u01/app/oraInventoryfrom : /u01/app/oracle/product/12.1.0.2/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.16
OUI version : 12.1.0.2.0
Log file location : /u01/app/oracle/product/12.1.0.2/dbhome_1/cfgtoollogs/opatch/opatch2025-03-11_20-30-48PM_1.logLsinventory Output file location : /u01/app/oracle/product/12.1.0.2/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2025-03-11_20-30-48PM.txt--------------------------------------------------------------------------------
Local Machine Information::
Hostname: newdb03
ARU platform id: 226
ARU platform description:: Linux x86-64Installed Top-level Products (2): Oracle Database 12c 12.1.0.2.0
Oracle Database 12c Examples 12.1.0.2.0
There are 2 products installed in this Oracle Home.Interim patches (35) :Patch 25305405 : applied on Sun Dec 23 00:49:08 CST 2018
Unique Patch ID: 21701443Created on 9 Nov 2017, 03:39:35 hrs PST8PDTBugs fixed:25305405Patch 19779059 : applied on Sat Dec 22 20:44:05 CST 2018
Unique Patch ID: 18123924Created on 13 Oct 2014, 08:40:22 hrs PST8PDTBugs fixed:16359751, 19382851Patch 19472320 : applied on Sat Dec 22 20:43:25 CST 2018
Unique Patch ID: 18110569Created on 20 Oct 2014, 03:14:44 hrs PST8PDTBugs fixed:19472320Patch 19291380 : applied on Sat Dec 22 20:42:55 CST 2018
Unique Patch ID: 18130618Created on 24 Oct 2014, 05:32:30 hrs PST8PDTBugs fixed:19291380Patch 19627012 : applied on Sat Dec 22 20:42:15 CST 2018
Unique Patch ID: 18249807Created on 11 Nov 2014, 06:28:09 hrs PST8PDTBugs fixed:19627012Patch 19649152 : applied on Sat Dec 22 20:41:32 CST 2018
Unique Patch ID: 18095241Created on 27 Sep 2014, 02:32:57 hrs PST8PDTBugs fixed:19649152Patch 19393542 : applied on Sat Dec 22 20:40:46 CST 2018
Unique Patch ID: 18031353Created on 19 Sep 2014, 07:43:45 hrs PST8PDTBugs fixed:19393542Patch 20093776 : applied on Sat Dec 22 20:39:36 CST 2018
Unique Patch ID: 18363536Created on 12 Dec 2014, 06:20:38 hrs PST8PDTBugs fixed:20093776Patch 20181016 : applied on Sat Dec 22 20:39:02 CST 2018
Unique Patch ID: 18448465Created on 6 Jan 2015, 01:17:36 hrs PST8PDTBugs fixed:20181016Patch 20204035 : applied on Sat Dec 22 20:37:02 CST 2018
Unique Patch ID: 18381868Created on 15 Dec 2014, 05:44:27 hrs PST8PDTBugs fixed:20123899, 15894842Patch 20294666 : applied on Sat Dec 22 20:36:26 CST 2018
Unique Patch ID: 18487079Created on 6 Feb 2015, 08:04:13 hrs PST8PDTBugs fixed:20294666Patch 19835133 : applied on Sat Dec 22 20:35:55 CST 2018
Unique Patch ID: 18717257Created on 27 Mar 2015, 10:05:59 hrs PST8PDTBugs fixed:19835133Patch 18966843 : applied on Sat Dec 22 20:35:27 CST 2018
Unique Patch ID: 18827839Created on 16 Apr 2015, 05:15:11 hrs PST8PDTBugs fixed:18966843Patch 20830911 : applied on Sat Dec 22 20:34:54 CST 2018
Unique Patch ID: 18781025Created on 4 Apr 2015, 07:25:16 hrs PST8PDTBugs fixed:19791273, 18607546Patch 20887355 : applied on Sat Dec 22 20:34:23 CST 2018
Unique Patch ID: 18990781Created on 13 Jul 2015, 08:23:23 hrs PST8PDTBugs fixed:20887355Patch 21153266 : applied on Sat Dec 22 20:33:54 CST 2018
Unique Patch ID: 19123094Created on 24 Jul 2015, 02:35:56 hrs PST8PDTBugs fixed:21153266Patch 22223463 : applied on Sat Dec 22 20:33:28 CST 2018
Unique Patch ID: 19603646Created on 1 Dec 2015, 15:48:07 hrs PST8PDTBugs fixed:22223463Patch 20798891 : applied on Sat Dec 22 20:33:03 CST 2018
Unique Patch ID: 18832956Created on 25 Sep 2015, 12:51:09 hrs PST8PDTBugs fixed:20798891Patch 26635276 : applied on Sat Dec 22 20:32:38 CST 2018
Unique Patch ID: 21489735Created on 17 Aug 2017, 15:09:29 hrs PST8PDTBugs fixed:14666816, 20476776, 20868862, 21751519, 22229581, 22452653, 2273797423604553, 25139545Patch 18793246 : applied on Sat Dec 22 20:32:11 CST 2018
Unique Patch ID: 18373074Created on 11 Dec 2014, 13:04:20 hrs PST8PDTBugs fixed:18793246Patch 28494169 : applied on Sat Dec 22 20:31:39 CST 2018
Unique Patch ID: 22387180Created on 13 Aug 2018, 14:29:27 hrs PST8PDTBugs fixed:18674024, 18964939, 19239846, 19487147, 19536415, 19896336, 2024593020413820, 20588502, 20627866, 20825533, 20936905, 21091431, 2110602721387964, 21813400, 22024071, 22568797, 22666802, 23220453, 2363254523645516, 24326444, 24385983, 24589081, 25099339, 25971286, 2665875927997875Patch 19591608 : applied on Sat Dec 22 20:30:56 CST 2018
Unique Patch ID: 18095152Created on 27 Sep 2014, 10:36:22 hrs PST8PDTBugs fixed:19591608Patch 20766180 : applied on Sat Dec 22 20:30:28 CST 2018
Unique Patch ID: 20801692Created on 29 Nov 2016, 00:59:53 hrs PST8PDTBugs fixed:20766180Patch 27062381 : applied on Sat Dec 22 20:30:03 CST 2018
Unique Patch ID: 21688738Created on 3 Nov 2017, 13:13:09 hrs PST8PDTBugs fixed:18485835, 21614112, 22660003, 26911000Patch 22098146 : applied on Sat Dec 22 20:28:14 CST 2018
Unique Patch ID: 19488651Created on 12 Nov 2015, 05:00:27 hrs PST8PDTBugs fixed:21028698, 18689530Patch 21321429 : applied on Sat Dec 22 20:27:50 CST 2018
Unique Patch ID: 19794377Created on 26 Jan 2016, 15:14:07 hrs PST8PDTBugs fixed:21321429Patch 21864513 : applied on Sat Dec 22 20:26:55 CST 2018
Unique Patch ID: 19560242Created on 18 Nov 2015, 16:29:08 hrs PST8PDTBugs fixed:21864513Patch 22496904 : applied on Sat Dec 22 20:26:14 CST 2018
Unique Patch ID: 19784047Created on 19 Jan 2016, 13:51:06 hrs PST8PDTBugs fixed:22496904Patch 21967332 : applied on Sat Dec 22 20:25:33 CST 2018
Unique Patch ID: 19900636Created on 23 Feb 2016, 15:52:49 hrs PST8PDTBugs fixed:21967332Patch 22731026 : applied on Sat Dec 22 20:25:05 CST 2018
Unique Patch ID: 20228530Created on 25 May 2016, 04:33:55 hrs PST8PDTBugs fixed:22731026Patch 23089357 : applied on Sat Dec 22 20:24:00 CST 2018
Unique Patch ID: 20129515Created on 24 May 2016, 07:09:47 hrs PST8PDTBugs fixed:23089357Patch 24560906 : applied on Sat Dec 22 20:22:04 CST 2018
Unique Patch ID: 20715635Created on 7 Nov 2016, 07:12:10 hrs PST8PDTBugs fixed:24560906Patch 25643931 : applied on Sat Dec 22 20:20:17 CST 2018
Unique Patch ID: 21090413Created on 10 Mar 2017, 02:18:48 hrs PST8PDTBugs fixed:25643931Patch 25906117 : applied on Sat Dec 22 20:12:36 CST 2018
Unique Patch ID: 21296770Created on 26 May 2017, 03:18:37 hrs PST8PDTBugs fixed:25906117Patch 21904072 : applied on Sat Dec 22 19:46:52 CST 2018
Unique Patch ID: 19608117Created on 26 Jan 2016, 15:20:55 hrs PST8PDTBugs fixed:21904072--------------------------------------------------------------------------------OPatch succeeded.
关于RELINK相关的MOS文档上的介绍:
1) 什么是 relinking?
任何语言所预定义的函数都被定义在那种语言的库文件中,必须编译代码来创建一个二进制格式的文件(对象文件)。这个对象文件然后被连接到 OS 的库文件来创建一个可执行文件。成功的链接应使得所有的函数定义都能被找到,链接从它的组件中生成一个可执行文件。在这个语境中链接(linking)和 relinking 意义相同,可以互换。可执行文件都会从预编译组件中建立起来。
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 库文件链接来生成可执行文件。
如下是各种对象文件和归档文件在 Oracle Home 中所处的目录:
- /lib
- /usr/lib
- $ORACLE_HOME/lib
- $ORACLE_HOME/rdbms/lib
- $ORACLE_HOME/<product>/lib
在 $ORACLE_HOME/rdbms/lib 或者 $ORACLE_HOME/lib 目录中有一个文件叫做 sysliblist,它列出了其它需要包括的库文件的列表。
3) 为什么需要 Oracle Home relinking?
为了将 Oracle 提供的对象文件与 OS 系统库文件链接,需要执行 Oracle Home relinking.Relinking 确保了与 OS 系统库文件提供的函数的可靠整合。
在如下情况下 relinking 会自动发生:
- 使用 Oracle Universal Installer ( OUI ) 安装 Oracle Database
- 通过 Oracle Universal Installer ( OUI ) 安装 Oracle Database Patchset
- 使用“opatch 工具”安装 Oracle Database Patch
Relinking 也可以手动执行。
4) 什么时候需要手动的 relinking?
在如下情况下需要手动 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 二进制可执行程序。
5) 在 OS 升级,降级,打补丁或者卸载补丁之后,是否需要 relinking?
是的。Oracle 推荐在在 OS 升级,降级,打补丁或者卸载补丁,或者任何影响 OS 库行为的改变之后,对 Oracle Home 二进制可执行程序执行手动的 relinking。成功的 relinking 代表 Oracle 可执行程序被妥当的链接到 OS 库。
6) 如何 relink Oracle Home?
下面是 relink Oracle Home 二进制执行程序的步骤:
A) 设置环境变量
在链接时需要设置如下环境变量:
- DISPLAY
- TERM or ORACLE_TERM
- 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 值不正确,设置 umask 为 022(运行命令“umask 022”)
C) 停止所有访问这个 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?
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 文件中。
E) 11GR2 上可用的其它选项。
11.2.0.1 以上版本的数据库有另一个选项是使用“ Oracle Universal Installer “来执行 relinking,如下所示:
Runinstaller 可以使用如下选项:
-relink:在 oracle home 上执行 relink 动作。
使用:-relink -maketargetsxml <location of maketargetsxml> [-makedepsxml <location of 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
F) Relinking 独立的组件
你可以随时使用‘MAKE’文件并提供一个合适的 link_option 来手动的 relink 任何一个可执行程序或者所有的可执行程序:
make -f <makefile> <link_option>
要 relink 一个可执行程序,需使用软件的所有者登陆到系统来执行上述命令。这个命令在<makefile> 所在的 LIB 目录中执行,即,
$ORACLE_HOME/<product_name>/lib
其中<product_name>可以是 oracle,forms45 或 reports30 等等。
G ) 调试 relinking 日志
Relinking 脚本是一个 shell 脚本,可以像其它普通脚本一样调试。如下所示:
$ sh -x relink all >relink_all.out 2>&1
输出会被写到 relink_all.out 文件。
7) 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
手动 relinking 日志可以使用 unix 重定向特性收集:
$ $ORACLE_HOME/bin/relink all >> relink.out
日志会被写在 relink.out 文件。
11GR2 中的额外特性
选项1
如果 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
选项2
在使用“relink all”命令时,它总是创建一个新的日志叫做"relink.log",并且它不会将日志信息附加在已经存在的 relink 日志中。之前的日志会被另存为一个带有时间戳的名字( 例如: relinkActions2009-09-14_09-01-10-PM.log )。
8) 手动 relinking 有哪些已知问题?
A) Relink all 是一个通用脚本,它会尝试 relink 所有的组件,不论这些组件安装了与否,并且会报错。你需要验证组件安装与否(使用“opatch lsinventory –details”命令来列出安装的组件)。
对于 Oracle Client 来说,并非所有的组件都安装,“relink all”很可能会报出很多错误。因此,relink 一个客户端的更好的方法是使用如下命令:
$ relink client
B) 执行“relink all”会重置 root 拥有的文件的所有权和权限。在“relink all”之后,推荐将所有权和权限改回。
更多细节,可参考 Note.1555453.1 - Executing "relink all" resets permission of extjob, jssu, oradism, externaljob.ora
9) 如何诊断 relinking 问题?
Oracle Home 安装或者应用 Patchset 时的 relinking 错误。
A) 请检查你尝试安装的数据库版本在你的 OS 版本上是否认证。参考如下文档,在" Certification (or compatibility) Information "部分查看认证细节:
Note 1194734.1 Where do I find that on My Oracle Support (MOS) [Video]
B) 验证下载的软件没有损坏,请参考如下文档中的更多细节:
Note 549617.1 How To Verify The Integrity Of A Patch/Software Download? [Video]
C) 确认你是否已经验证了如下文档中描述的所有 OS 前置要求:
Note 169706.1 Oracle Database on Unix AIX,HP-UX,Linux,Mac OS X,Solaris,Tru64 Unix Operating Systems Installation and Configuration Requirements Quick Reference (8.0.5 to 11.2).
或者
使用如下文档提供的安装验证工具来验证系统要求:
Note 250262.1 "RDA 4 - Health Check / Validation Engine Guide"
使用如下命令运行 Health Check
./rda.sh -dT hcve
结果写在 RDA 输出目录中的一个 HTML 文件中。这个 HTML 文件可以使用任何网络浏览器打开,它提供了在这台服务器上缺失的 OS 前置要求的详细报告。确认 OS 是否满足安装指定数据库版本的全部 OS 前置要求。
D) 确认 PATH 中是否包含如下命令:
which ar
which ld
which cc
which gcc
which make
如果上述任何一条命令没有返回命令的 PATH, 这意味着命令 PATH 没有设置,你需要手动设置它。同样尝试手动运行这些命令,检查这个命令是否在 OS 级别运行正常。
E) 检查 /tmp 目录和 ORACLE_HOME 所在的文件系统是否有足够空间。
F) 安装时的 relinking 错误记录在如下日志文件中:
$ORACLE_HOME/install/make.log and OUI log file
G) 找到第一次发生的“ warning” , “fatal” , “ error” , "stop” , "exception” , "severe ", "Exit Code 1" 消息,这些消息会帮助你找到 relinking 失败的根本原因。本文的“known issues”描述了已知的问题,或者在 MOS 上查询这些消息看是否有已知问题。如果你仍然遇到这个问题,请向 OracleSupport 提交 SR,并且上传上述细节到 SR 来调查。
在使用 opatch 给 Oracle Home 安装补丁时的 relinking 错误
A) 检查如下点
1) 下载的 patch 版本是正确的。(根据你的数据库版本和操作系统版本)
2) 下载的补丁 .zip 文件名与下载页面上显示的名字相同。
3) 下载 zip 文件大小与下载页面上显示的相同。
4) 若下载到另外一台机器上,又传输到此机器上,确保补丁以“BINARY”模式下载和传输。
5) 补丁在需要安装的服务器上解压缩。
6 ) 根据如下文档确认下载的补丁没有损坏:
Note: 549617.1 - How To Verify The Integrity Of A Patch/Software Download? [Video].
B) 是否补丁已经安装上了,而安装过程中出现失败?
1) 从备份还原,或者,如果备份不可用,按照如下文档回滚失败的补丁:
Note.312767.1 How to rollback a failed Interim patch installation.
2) 执行手动的数据库 relinking。如果你仍然遇到同样的错误,那么问题不在于安装补丁,如果错误消失,那么问题出在安装补丁过程中。
3) 检查在 /tmp 目录和 ORACLE_HOME 所在的文件系统是否有足够空间。
3) 检查opatch日志,找到错误第一次发生的地方,如下文档描述了 opatch 日志的细节:
Note 403212.1 "Location Of Logs For Opatch And OUI"
5) 到第一次发生的“ warning” , “fatal” , “ error” , "stop” , "exception” , "severe ", "Exit Code 1" 消息,这些消息会帮助你找到 relinking 失败的根本原因。本文的“known issues”描述了已知的问题,或者在 MOS 上查询这些消息看是否有已知问题。如果你仍然遇到这个问题,请向 OracleSupport 提交 SR,并且上传上述细节到 SR 来调查。
10) 诊断 relinking 问题的工具有哪些?
A ) nm
用来列出在一个 .o、.a 和二进制文件中的所有符号。常用于找出符号是在哪里定义的。常用命令是:
nm <file> | grep <symbol>
其中<file>是你要检查的库的名字,<symbol>是你实际搜寻的符号的名字。
B) ar
建立和维护库和 .o 文件的归档。使用这个命令你可以将 .o 文件分组到一个单独的归档,用来创建可执行程序。它被用来从一个单独的归档库中插入,删除和取代对象。
C) Symfind
如下位置有一个脚本可用:
$ORACLE_HOME/bin/symfind <symbol>:
在 Oracle 的共享对象中找到一个符号。这个脚本基本上执行了上面2个命令。
11) Windows 上是否发生 relinking?
Relinking 概念仅适用于 UNIX 平台,Windows OS 上没有 relinking。
已知问题
1) AIX 操作系统
i) AIX 平台上在 relinking 阶段你会看到如下警告(当数据库在安装,打补丁,或者手动 relinking 时),这是期望的行为:
ld: 0711-773 WARNING:
ld: 0711-783 WARNING:
ld: 0711-319 WARNING:
ld: 0711-415 WARNING:
ld: 0711-224 WARNING:
ld: 0711-324 WARNING:
ld: 0711-301 WARNING:
ld: 0711-345 WARNING:
参考如下文档获得更多的细节:
Note 402945.1 While installing one-off Patch on AIX systems, getting several WARNING messages: OUI-67215 - TOC overflow and/or xlC: not found / xlC: Execute permission denied
II) 如果你在 relinking 阶段看到" ld: 0711-780 SEVERE ERROR",这不是一个可以忽略的错误,你需要参照如下文档中的方案:
Note 1379753.1 AIX: ORA-07445 [ksmpclrpga] OR ORA-07445 [ksupop] ORA-07445 [lxhlinfo] OR Link/Relink/Make Fails With: ld: 0711-780 SEVERE ERROR: Symbol .ksmpfpva (entry 58964) in object libserver11.a[ksmp.o]
2) Solaris 操作系统
Solaris 操作系统上 relinking 阶段若有如下消息,是可以忽略的(当 11gR2 数据库在安装,打补丁,或者手动 relinking 时):
ld: warning: symbol `_start' has differing types:
(file /home03/oracle/product/11.2.0/dbhome_1/lib/prod/lib/v9/crt1.o type=FUNC; file /home03/oracle/product/11.2.0/dbhome_1/lib//libserver11.a(skds.o) type=OBJT);
参考如下文档获得更多的细节:
Note 1446945.1 "ld: warning: symbol `_start' has differing types:" While Installing Or Patching 11gR2 On Oracle Solaris Platform
相关文章:
ORACLE EBS数据库RELINK方式搭建克隆环境
ORACLE EBS系统的数据库,一般都安装了很多特定功能的小补丁来解决特定的BUG;因此对于已经安装好的系统,想要克隆一套测试环境、搭建一个新的备机做测试等,如果按照生产环境标准,则需要安装大量补丁,带来很大…...
MySQL regexp 命令
REGEXP命令是一种用于进行正则表达式匹配的运算符,允许在查询中使用正则表达式来匹配字符串模式1。 基本语法 基本的语法结构如下: SELECT * FROM table_name WHERE column_name REGEXP pattern; 这里,pattern是你要匹配的正则表达式模…...
前端实习到工作的经历
看了很多人的程序员生涯之路,我突然意识到我也该记录一些东西,因此有感而发。 我是一个24届毕业生,大三下就开始找前端实习,当时学校不让走,我们都是先面着然后准备放假就去。当时周围小伙伴都找好了,考完…...
Vue3——Fragment
文章目录 一、Fragment的核心意义1. 解决Vue2的单根限制问题2. 减少不必要的 DOM 嵌套3. 语义化和结构化 二、Fragment 的实现原理三、Fragment 使用方式1. 基本用法2. 结合条件渲染3. 动态组件 四、实际应用场景1. 列表/表格组件2. 布局组件3. 语义化标签 五、注意事项1. 属性…...
Linux_16进程地址空间
CPU内的寄存器只有一套,但是CPU内寄存器的数据可能会有多份! 一、程序地址空间 下面这个图对应的是内存吗?(实际上是虚拟的进程地址空间) 32位机器内存最大为多少? 32位操作系统的地址总线为32位&#x…...
职坐标机器学习编程实战:调试优化与自动化测试精要
内容概要 在机器学习编程实践中,代码调试优化与自动化测试工具的应用是构建高可靠性系统的核心环节。本书聚焦从数据预处理到模型部署的全流程,通过特征工程优化、训练过程监控及持续集成方案的设计,系统化解决算法工程化中的典型问题。在特…...
git文件过大导致gitea仓库镜像推送失败问题解决(push failed: context deadline exceeded)
问题描述: 今天发现gitea仓库推送到某个镜像仓库的操作几个月前已经报错终止推送了,报错如下: 首先翻译报错提示可知是因为git仓库大小超过1G限制。检查本地.git文件,发现.git文件大小已达到1.13G。确定是.git文件过大导致&…...
llvm数据流分析
llvm数据流分析 1.数据流分析2.LLVM实现2.1.常量传播2.2.活跃性分析 相关参考文档:DataFlowAnalysisIntro、ustc编译原理课程、南大程序分析课程1、南大程序分析课程2。 1.数据流分析 数据流分析在编译优化等程序分析任务上都有重要应用。通常数据流分析可被抽象为…...
Vite为什么选用Rollup打包?
Vite 在生产阶段使用 Rollup 打包,但这不是唯一选择。它的设计背后有明确的权衡和考量,同时开发者也可以选择其他替代方案。 一、为什么 Vite 默认使用 Rollup? 1. Rollup 的核心优势 • Tree-shaking:Rollup 的静态分析能力极强&…...
Docker 入门与实战指南
Docker 入门与实战指南 一、Docker 简介 Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包成一个可移植的容器。容器可以在任何安装了 Docker 的环境中运行,确保应用的一致性和可移植性。 1.1 为什么使用 Docker? 环境一…...
C# 常用数据类型
C# 数据类型分为 值类型、引用类型 和 特殊类型,以下是详细分类及对应范围/说明: 一、值类型(Value Types) 值类型直接存储数据,分配在栈内存中,默认不可为 null。 简单类型 整数类型…...
深入解读 JavaScript 中 `this` 的指向机制:覆盖所有场景与底层原理
this 是 JavaScript 中最容易引发困惑的核心概念之一,它的指向在不同场景下呈现截然不同的行为。本文将系统性地解析 this 的所有使用场景,结合代码示例和底层原理,帮助你彻底掌握其运行机制。 一、全局环境下的 this 1. 浏览器环境 在浏览器…...
无人机全景应用解析与技术演进趋势
无人机全景应用解析与技术演进趋势 ——从立体安防到万物互联的空中革命 一、现有应用场景全景解析 (一)公共安全领域 1. 立体安防体系 空中哨兵:搭载 77 GHz 77\text{GHz} 77GHz毫米波雷达(探测距离 5 km 5\text{km} 5km&…...
手写简易Tomcat核心实现:深入理解Servlet容器原理
目录 一、Tomcat概况 1. tomcat全局图 2.项目结构概览 二、实现步骤详解 2.1 基础工具包(com.qcby.util) 2.1.1 ResponseUtil:HTTP响应生成工具 2.1.2 SearchClassUtil:类扫描工具 2.1.3 WebServlet:自定义注解…...
【音视频】ffmpeg命令提取像素格式
1、提取YUV数据 提取yuv数据,并保持分辨率与原视频一致 使用-pix_fmt或-pixel_format指定yuv格式提取数据,并保持原来的分辨率 ffmpeg -i music.mp4 -t "01:00" -pixel_format yuv420p music.yuv提取成功后,可以使用ffplay指定y…...
深度剖析Redis:双写一致性问题及解决方案全景解析
在高并发场景下,缓存与数据库的双写一致性是每个开发者必须直面的核心挑战。本文通过5大解决方案,带你彻底攻克这一技术难关! 一、问题全景图:当缓存遇到数据库 1.1 典型问题场景 // 典型问题代码示例 public void updateProduc…...
Redis----大key、热key解决方案、脑裂问题
文章中相关知识点在往期已经更新过了,如果有友友不理解可翻看往期内容 出现脑裂问题怎么保证集群还是高可用的 什么是脑裂问题 脑裂说的就是当我们的主节点没有挂,但是因为网络延迟较大,然后和主节点相连的哨兵通信较差,之后主…...
Android 调用c++报错 exception of type std::bad_alloc: std::bad_alloc
一、报错信息 terminating with uncaught exception of type std::bad_alloc: std::bad_alloc 查了那部分报错c++代码 szGridSize因为文件太大,初始化溢出了 pEGM->pData = new float[szGridSize]; 解决办法 直接抛出异常,文件太大就失败吧 最后还增加一个日志输出,给…...
【从零开始学习计算机科学】操作系统(五)处理器调度
【从零开始学习计算机科学】操作系统(五)处理器调度 处理器调度一些简单的短程调度算法的思路先来先服务(First-Come-First-Served,FCFS)优先级调度及其变种最短作业优先调度算法(SJF)--非抢占式最短作业优先调度算法(SJF)--抢占式最高响应比优先调度算法轮转调度算法…...
LeetCode1871 跳跃游戏VII
LeetCode 跳跃游戏 IV:二进制字符串的跳跃问题 题目描述 给定一个下标从 0 开始的二进制字符串 s 和两个整数 minJump 和 maxJump。初始时,你位于下标 0 处(保证该位置为 0)。你需要判断是否能到达字符串的最后一个位置…...
ResNet50深度解析:原理、结构与PyTorch实现
ResNet50深度解析:原理、结构与PyTorch实现 1. 引言 ResNet(残差网络)是深度学习领域的一项重大突破,它巧妙解决了深层神经网络训练中的梯度消失/爆炸问题,使得构建和训练更深的网络成为可能。作为计算机视觉领域的里…...
MATLAB 控制系统设计与仿真 - 24
PID 控制器分析- 控制器的形式 连续控制器的结构: 为滤波时间常数,这类PID控制器在MATLAB系统控制工具箱称为并联PID控制器,可由MATLAB提供的pid函数直接输入,格式为: 其他类型的控制器也可以由该函数直接输入&#x…...
数字IC后端设计实现教程 |Innovus ICC2 Routing Pin Access Setting设置方法
默认情况下routing 引擎可以在标准单元可以打孔的任何地方(via region)打孔,甚至工具还会先拉出一块metal,然后再打孔过渡到高层。 随之工艺节点越做越小,标准单元内部的结构也越来越复杂。此时如果还沿用传统工艺的走…...
mysql经典试题共34题
1、准备数据 -- drop drop table if exists dept; drop table if exists emp; drop table if exists salgrade;-- CREATE CREATE TABLE dept (deptno int NOT NULL COMMENT 部门编号,dname varchar(14) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMM…...
网络编程-----服务器(多路复用IO 和 TCP并发模型)
一、单循环服务器模型 1. 核心特征 while(1){newfd accept();recv();close(newfd);}2. 典型应用场景 HTTP短连接服务(早期Apache)CGI快速处理简单测试服务器 3. 综合代码 #include <stdio.h> #include <sys/types.h> /* See NO…...
GitHub 项目版本管理与 Release 发布流程记录
GitHub 项目版本管理与 Release 发布流程记录 1. 项目环境设置 1.1 打开 VS Code 并进入项目目录 E:\adb\Do>code .1.2 配置 Git 用户信息 E:\adb\Do>git config --global user.name "n" E:\adb\Do>git config --global user.email "**gmail.com&q…...
GStreamer —— 2.15、Windows下Qt加载GStreamer库后运行 - “播放教程 1:Playbin 使用“(附:完整源码)
运行效果 介绍 我们已经使用了这个元素,它能够构建一个完整的播放管道,而无需做太多工作。 本教程介绍如何进一步自定义,以防其默认值不适合我们的特定需求。将学习: • 如何确定文件包含多少个流,以及如何切换 其中。…...
Python+DeepSeek:开启AI编程新次元——从自动化到智能创造的实战指南
文章核心价值 技术热点:结合全球最流行的编程语言与国产顶尖AI模型实用场景:覆盖代码开发/数据分析/办公自动化等高频需求流量密码:揭秘大模型在编程中的创造性应用目录结构 环境搭建:5分钟快速接入DeepSeek场景一:AI辅助代码开发(智能补全+调试)场景二:数据分析超级助…...
使用OpenCV和MediaPipe库——驼背检测(姿态监控)
目录 驼背检测的运用 1. 驾驶姿态与疲劳关联分析 2. 行业应用案例 1. 教育场景痛点分析 2. 智能教室系统架构 代码实现思路 1. 初始化与配置 2. MediaPipe和摄像头设置 3. 主循环 4. 资源释放 RGB与BGR的区别 一、本质区别 二、OpenCV的特殊性 内存结构示意图&…...
maven的项目构建
常用构建命令 命令说明mvn clean清理编译结果(删掉target目录)mvn compile编译核心代码,生成target目录mvn test-compile编译测试代码,生成target目录mvn test执行测试方法mvn package打包,生成jar或war文件mvn insta…...
光电感知赋能智能未来 灵途科技护航新质生产力发展
2024年《政府工作报告》将大力推进现代化产业体系建设,加快发展新质生产力作为首要工作任务。这是“新质生产力”首次出现在《政府工作报告》中。 发展新质生产力具体包括 新兴产业 :推动商业航天、低空经济等新兴产业实现安全健康发展。 未来产业 &a…...
文件上传靶场(10--20)
目录 实验环境: 具体内容实现: 第十关(双写绕过): 第十一关:(%00截断,此漏洞在5.2版本中) 正确用法 错误用法 思路: 操作过程: 第十二关…...
deepseek在pycharm中的配置和简单应用
对于最常用的调试python脚本开发环境pycharm,如何接入deepseek是我们窥探ai代码编写的第一步,熟悉起来总没坏处。 1、官网安装pycharm社区版(免费),如果需要安装专业版,需要另外找破解码。 2、安装Ollama…...
Linux 生成静态库
文章目录 前提小知识生成和使用.a库操作步骤 在应用程序中,有一些公共的代码需要反复使用的,可以把这些代码制作成“库文件”;在链接的步骤中,可以让链接器在“库文件”提取到我们需要使用到的代码,复制到生成的可执行…...
yolo-TensorRT相关代码逐步详解-pt转engine
基于TensorRT 的推论运行速度会比仅使用CPU 快40倍,提供精度INT8 和FP16 优化,支援TensorFlow、Caffe、Mxnet、Pytorch 等深度学习框架,其中Mxnet、Pytorch 需先转换为ONNX 格式。 TensorRT的构建流程大致分为几个步骤:创建构建器和网络、解析模型、配置构建参数、构建引擎…...
简记_ MCU管脚的防静电处理
一、分析(一) 接口处的信号要先过 ESD/TVS 管,然后拉到被保护器件; 建个 ESD 电路发生器的模型,代入到我们的电路中去分析: 继电器实现这两个“开关”,并且还会感应出一些额外的RLC寄生。 ES…...
C语言实现算法(二)
以下是 “10个不重复的C语言经典算法案例“,包含可运行代码、开发环境配置及系统要求。所有代码基于标准C语法,已在GCC 9.3.0环境下测试通过。 开发环境配置 编译器:GCC(推荐) Windows:安装 MinGW 或 Visual Studio Linux:sudo apt-get install gcc macOS:通过Xcode Co…...
transformer模型介绍——大语言模型 LLMBook 学习(二)
1. transformer模型 1.1 注意力机制 **注意力机制(Attention Mechanism)**在人工智能中的应用,实际上是对人类认知系统中的注意力机制的一种模拟。它主要模仿了人类在处理信息时的选择性注意(Selective Attention)&a…...
K8s 1.27.1 实战系列(十一)ConfigMap
ConfigMap 是 Kubernetes 中管理非敏感配置的核心资源,通过解耦应用与配置实现灵活性和可维护性。 一、ConfigMap 的核心功能及优势 1、配置解耦 将配置文件(如数据库地址、日志级别)与容器镜像分离,支持动态更新而无需重建镜像。 2、多形式注入 环境变量:将键值…...
下降路径最⼩和(medium)
题目描述: 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(…...
数据结构--【顺序表与链表】笔记
顺序表 template <class T> class arrList :public List<T> //表示 arrList 类以公有继承的方式继承自 List<T> 类 //公有继承意味着 List<T> 类的公共成员在 arrList 类中仍然是公共成员,受保护成员在 arrList 类中仍然是受保护成员。 { …...
使用AI一步一步实现若依前端(9)
功能9:退出登录功能 功能8:页面权限控制 功能7:路由全局前置守卫 功能6:动态添加路由记录 功能5:侧边栏菜单动态显示 功能4:首页使用Layout布局 功能3:点击登录按钮实现页面跳转 功能2…...
Excel两列和依次相减
Excel实现左列依次行数的和减去右列依次行数的和: 举例:结余SUM(预付款)-SUM(开支) 公式:SUM($B$2:B2)-SUM($C$2:C2)...
智能合约中权限管理不当
权限管理不当 : 权限管理不当是智能合约中常见的安全问题之一,尤其是在管理员或特定账户被过度赋予权限的情况下。如果合约中的关键功能,如转移资产、修改合约状态或升级合约逻辑,可以被未经授权的实体随意操作,这将构…...
Java糊涂包(Hutool)的安装教程并进行网络爬虫
Hutool的使用教程 1:在官网下载jar模块文件 Central Repository: cn/hutool/hutool-all/5.8.26https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.8.26/ 下载后缀只用jar的文件 2:复制并到idea当中,右键这个模块点击增加到库 3&…...
ubuntu软件
视频软件,大部分的编码都能适应 sudo apt install vlc图片软件 sudo apt install gwenview截图软件 sudo apt install flameshot设置快捷键 flameshot flameshot gui -p /home/cyun/Pictures/flameshot也就是把它保存到一个自定义的路径 菜单更换 sudo apt r…...
python高效试用17---两个字符串组成一个新的字符串和两个字符串组成元组作为key哪个更高效
在 Python 中,使用字符串连接 (str1 str2) 作为 key 和使用元组 ((str1, str2)) 作为 key 的效率差异,主要受以下因素影响: 哈希计算速度: 字符串连接 (str1 str2):会创建一个新的字符串对象,并计算哈希…...
【C++模板】:开启泛型编程之门(函数模版,类模板)
📝前言: 在上一篇文章C内存管理中我们介绍了C的内存管理,重点介绍了与C语言的区别,以及new和delete。这篇文章我们将介绍C的利器——模板。 在C编程世界里,模板是一项强大的特性,它为泛型编程奠定了坚实基础…...
华为eNSP:2.配置OSPF报文分析和验证
一、OSPF的5种数据包 Hello包:用于发现和维护邻居关系。定期发送,确保邻居路由器在线。 数据库描述包(DBD, Database Description Packet):在邻居关系建立后,用于交换链路状态数据库的摘要信息。 链路状…...
一学就会的深度学习基础指令及操作步骤(3)模型训练验证
文章目录 模型训练验证损失函数和优化器模型优化训练函数验证函数模型保存 模型训练验证 损失函数和优化器 loss_function nn.CrossEntropyLoss() # 损失函数 optimizer Adam(model.parameters()) # 优化器,优化参数模型优化 获得模型所有的可训练参数&#x…...