zl程序教程

您现在的位置是:首页 >  工具

当前栏目

R12.1.3 应用克隆过程中autocfg脚本报错

应用 过程 克隆
2023-09-27 14:28:18 时间
报错信息如下: AutoConfig Services PhaseRunning Service Process 4 of 8 for AD_TOPExecuting script in InstantiateFile:/u01/TEST01/apps/tech_st/10.

报错信息如下:

AutoConfig Services Phase
Running Service Process 4 of 8 for AD_TOP
Executing script in InstantiateFile:
/u01/TEST01/apps/tech_st/10.1.3/perl/bin/perl -I /u01/TEST01/apps/tech_st/10.1.3/perl/lib/5.8.3 -I /u01/TEST01/apps/tech_st/10.1.3/perl/lib/site_perl/5.8.3 -I /u01/TEST01/apps/apps_st/appl/au/12.0.0/perl -I /u01/TEST01/apps/tech_st/10.1.3/Apache/Apache/mod_perl/lib/site_perl/5.8.3/i686-linux-thread-multi /u01/TEST01/inst/apps/EBS_testapp2/admin/install/adupdlobs.pl


script returned:
****************************************************


.end std out.
sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory


.end err out.
*********************

分析过程:

这个错误,看上去像是操作系统缺少了rpm包,检查了下操作系统的rpm包,发现客户只安装了64为的rpm包,缺少很多32位的包,于是手工安装了。但是安装完成之后,很不幸的错误依旧出现。

参考oracle社区的这篇文档  https://community.oracle.com/thread/2534309?tstart=0

在应用层尝试执行:$ORACLE_HOME(10.1.2的)/appsutil/clone/adlnktools.sh 发现make日志报错,信息差不多如下:

/usr/lib/gcc/x86_64-redhat-linux/4.4.6/32/libgcc_s.so: undefined reference to `__stack_chk_fail@GLIBC_2.4
collect2: ld returned 1 exit status


去metalink搜了下,发现是客户并没有按照 Oracle EBS R12(12.1.1)基于Linux x86 平台的安装及升级文档 (文档 ID 1535957.1)

的标准文档来做,需要做如下步骤:


安装补丁在应用服务器10g (10.1.2 and 10.1.3) Oracle Homes (只对Oracle Linux 6 and RHEL 6)

在安装完成后,用户必须通过安装补丁12415211更新10.1.2 and 10.1.3 Oracle Homes里的存根库文件。

用户必须将指定的文件拷贝到指定的10.1.2 Oracle Home下的目录:

$ cd 12.1_INSTALL_DIR /apps/tech_st/10.1.2/lib
$ cp -p -R stubs stubsORIG
$ cd stubs
$ cp PATCH_INSTALL_DIR /12415211/files/lib/stubs/libgcc_s-2.3.2-stub.so .
$ ln -s libgcc_s-2.3.2-stub.so libgcc_s.so.1
$ ln -s libgcc_s.so.1 libgcc_s.so

然后加载环境变量文件APPS CONTEXT_NAME .env ,用户应该通过执行$ORACLE_HOME/appsutil/clone/adlnktools.sh脚本重新链接所有10.1.2的可执行文件并且确保make日志文件输出中没有错误。


--我做完上面这块就好了。。


在10.1.3 Oracle Home上的指令如下:

$ cd 12.1_INSTALL_DIR /apps/tech_st/10.1.3/lib
$ cp -p -R stubs stubsORIG
$ cd stubs
$ cp PATCH_INSTALL_DIR /12415211/files/lib/stubs/libgcc_s-2.3.2-stub.so .
$ ln -s libgcc_s-2.3.2-stub.so libgcc_s.so.1
$ ln -s libgcc_s.so.1 libgcc_s.so

然后用户应该通过执行 INSTALL_DIR /apps/tech_st/10.1.3/appsutil/clone/adlnkweboh.sh脚本重新链接sqlplus并且确保make日志文件输出中没有错误。

 

对应用服务器10.1.3创建软链接到需要的库文件 (只对Oracle Linux 6 and RHEL 6)

在安装后,用户可能会注意到Apache httpd进程启动失败报错:

error while loading shared libraries: libdb-4.3.so: cannot open shared object file: No such file or directory
(当加载共享库文件时出错:libdb-4.3.so:不能打开共享对象文件:没有这个文件或目录

 

用户(有ROOT权限)应该用以下命令创建一个针对这个库文件的软链接:

# cd /usr/lib
# ln -s libdb-4.7.so libdb-4.3.so

 


总结:

主要是克隆没有按照标准文档准备源环境,最终导致目标环境克隆出错。





如何只克隆部分代码? 如何只克隆部分代码? 根据整体规划需求,多个模块的源码共存在一个仓库中。在一些场景执行中,需要考虑执行效率,仅关注部分路径的代码。即仅需获取部分路径的文件。 二、解决方案 利用Sparse Checkout模式。