一.引入问题
帮朋友在CentOS上安装一个10g的Oracle,结果朋友的CentOS版本是6.2的版本,最新的一个版本,不过Linux上基本都差不多,所以按照以前的步骤,迅速的操作起来,结果遇到N多以前没有遇到过的错误。安装被迫中断,尝试忽略之前的错误,又会遇到其他的错误。
1.1
ins_ctx.mk 问题
[oracle@xd logs]$ tail installActions2012-05-05_01-20-00PM.log
INFO: collect2: ld returned 1 exit status
INFO: make: *** [ctxhx] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'install' of makefile
'/u01/app/oracle/product/10.2.0/db_1/ctx/lib/ins_ctx.mk'.See
'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-20-00PM.log'for
details.
Exception Severity: 1
[oracle@xd logs]$ yum install gcc
Loaded plugins: fastestmirror,refresh-packagekit, security
You need to be root to perform thiscommand.
[oracle@xd logs]$ rpm -qa
--queryformat"%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n" | grep
libgcc
libgcc-4.4.6-3.el6 (i686)
libgcc-4.4.6-3.el6 (x86_64)
1.2
ins_rdbms.mk 问题
[oracle@xd logs]$ tail installActions2012-05-05_01-20-00PM.log
INFO: make[1]: Leaving
directory`/u01/app/oracle/product/10.2.0/db_1/rdbms/lib'
INFO: make: *** [extproc32] Error 2
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'all_no_orcl' of
makefile
'/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/ins_rdbms.mk'.See
'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-20-00PM.log'for
details.
Exception Severity: 1
1.3
ins_emdb.mk 问题
[oracle@xd logs]$ tail installActions2012-05-05_01-20-00PM.log
INFO: make[1]: Leaving directory
`/u01/app/oracle/product/10.2.0/db_1/sysman/lib'
INFO: make: *** [nmccollector] Error 2
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'collector' of
makefile'/u01/app/oracle/product/10.2.0/db_1/sysman/lib/ins_emdb.mk'.
See'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-20-00PM.log'
fordetails.
Exception Severity: 1
1.4
ins_net_client.mk 问题
[oracle@xd logs]$
tailinstallActions2012-05-05_01-51-59PM.log
INFO:
/usr/bin/ar:/u01/app/oracle/product/10.2.0/db_1/lib32/nnfgt.o: No
such file or directory
INFO: make: *** [nnfgt.o] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'nnfgt.o' of
makefile'/u01/app/oracle/product/10.2.0/db_1/network/lib/ins_net_client.mk'.
See'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-51-59PM.log'
fordetails.
Exception Severity: 1
1.5
ins_precomp.mk 问题
[oracle@xd logs]$
tailinstallActions2012-05-05_01-51-59PM.log
INFO: /bin/chmod: cannot
access`/u01/app/oracle/product/10.2.0/db_1/precomp/lib/proc': No
such file ordirectory
INFO: make:
***[/u01/app/oracle/product/10.2.0/db_1/precomp/lib/proc] Error
1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'relink' of
makefile'/u01/app/oracle/product/10.2.0/db_1/precomp/lib/ins_precomp.mk'.
See'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-51-59PM.log'
fordetails.
Exception Severity: 1
1.6
ins_plsql.mk 问题
[oracle@xd logs]$
tailinstallActions2012-05-05_01-51-59PM.log
collect2: ld returned 1 exit status
INFO: make: *** [wrap] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'install' of
makefile'/u01/app/oracle/product/10.2.0/db_1/plsql/lib/ins_plsql.mk'.
See'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-51-59PM.log'
fordetails.
Exception Severity: 1
1.7
ins_net_server.mk 问题
[oracle@xd logs]$
tailinstallActions2012-05-05_01-51-59PM.log
collect2: ld returned 1 exit status
INFO: make: *** [tnslsnr] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'install' of
makefile'/u01/app/oracle/product/10.2.0/db_1/network/lib/ins_net_server.mk'.
See'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-51-59PM.log'
fordetails.
Exception Severity: 1
1.8
ins_nau.mk 问题
[oracle@xd logs]$
tailinstallActions2012-05-05_01-51-59PM.log
INFO: ld returned 1 exit status
INFO: make: *** [oklist] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'ioklist iokinit
iokdstry' of
makefile'/u01/app/oracle/product/10.2.0/db_1/network/lib/ins_nau.mk'.
See'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-51-59PM.log'
fordetails.
Exception Severity: 1
1.9
ins_ldap.mk 问题
[oracle@xd logs]$
tailinstallActions2012-05-05_01-51-59PM.log
collect2: ld returned 1 exit status
INFO: make: *** [ldapadd] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'clientonlyinstall' of
makefile'/u01/app/oracle/product/10.2.0/db_1/ldap/lib/ins_ldap.mk'.
See'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-51-59PM.log'
fordetails.
Exception Severity: 1
1.10
ins_srvm.mk 问题
[oracle@xd logs]$
tailinstallActions2012-05-05_01-51-59PM.log
INFO: ld returned 1 exit status
INFO: make: *** [rawutl] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target'install' of
makefile'/u01/app/oracle/product/10.2.0/db_1/srvm/lib/ins_srvm.mk'.
See'/u01/app/oracle/oraInventory/logs/installActions2012-05-05_01-51-59PM.log'
fordetails.
Exception Severity: 1
1.11
ins_has.mk 问题
[oracle@xd logs]$
tailinstallActions2012-05-05_01-51-59PM.log
collect2: ld returned 1 exit status
INFO: make: ***
[/u01/app/oracle/product/10.2.0/db_1/racg/lib/racgmain]Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
因为之前没有在CentOS 6.2
上安装过Oracle,所以开始也是争对具体情况去分析,饶了一圈之后,最终定位是安装之前少包了,才导致在安装过程中一些Binary
Options不能进行link。用yum 把需要的包全部打上之后,再次安装就没有问题了。
这里要清楚一个概念,就是Binary Options, 其就是Oracle 的组件,我们在把Oracle
安装到系统上时,会对这些组件进行一个link的操作,我们这里因为少了包导致不能进行link。
这次是太大意了,安装之前没有去检查包是否安装全了,因为根据以往的经验,把没有的包打上就可以了,没想到还有其他的包少了。所以操作中务必小心,要按照文档步骤来。
其实在Linux
6平台下,可以使用oracle-rdbms-server-11gR2-preinstall包来操作,这个包会帮我们解决很多问题,包括前期包的依赖性和相关的参数配置工作,关于该包的使用,具体参考:
在Oracle Linux5中参考:
二.MOS
上部分解决方法
对第一部分列出的问题,这里从MOS上摘取2个的解决方案。
2.1
Ins_net_client.Mk 问题一
MOS 文章:
'Error In Invoking Target Ntcontab.o OfMakefile
Ins_net_client.Mk' [ID 341621.1]
2.1.1
Symptoms
A popuperror occurs during the
installation of the Oracle9i R2 Client (9.2.0.1)on Sun Solaris 5.9
(64-bit).
Popup error message:
Error in invoking target ntcontab.o of makefile
ins_net_client.mk
2.1.2
Cause
Expected defaultSun Solaris installed utilities (from Sun
Packages) not present in /usr/ccs/bindirectory.
Instead thefollowing utilities were symbolically linked to other
provider (packaged)utilities and/or renamed in the '/usr/ccs/bin'
directory:
/usr/ccs/bin/ar >> was symbolically linked to
/software/binutils/bin/ar(original ar was
moved ot a new name)
/usr/ccs/bin/as >> was moved to a new name
/usr/ccs/bin/ld >> was symbolically linked to
software/binutils/bin/ld(original ld was
moved ot a new name)
Investigation with System Administrator.
2.1.3 Solution
To implement the solution, please executethe following
steps:
1. Request the System Administrator remove the symbolic links and
restore theexpected default Sun Solaris installed utilities (at
least long enough tocomplete the Oracle Client installation and
relinking.
2. Once in place, run the Oracle9i R2 Client installation, or
manually relinkthe Oracle Client:
--手工relink Oracle
client
Run:
cd $ORACLE_HOME/network/lib
make -f ins_net_client.mk nnfgt.o
make -f ins_net_client.mk ntcontab.o
make -f ins_net_client.mk client_sharedlib
make -f ins_net_client.mk install
cd $ORACLE_HOME/sqlplus/lib
make -f ins_sqlplus.mk install
cd $ORACLE_HOME/bin
relink client
2.2
Ins_net_client.Mk 问题二
MOS 文章:
Installing OracleAS on a Linux 64bit: Errorin invoking target
ntcontab.o of makefile ins_net_client.mk [ID 400301.1]
2.2.1
Symptoms
While installingthe Application
Server 10.1.2.0.2 on a Linux 64 bit distribution
(e.g.RedHat 4.0 64bit) the following error may be
raised in a pop up windowwhen the Universal
Installer starts linking the binaries:
Error ininvoking target 'ntcontab.o' of
makefile'/myoraclehome/network/lib/ins_net_client.mk'
The error may beraised by any installation type (Infrastructure,
Metadata Repository, IdentityManagement, Midtiers).
2.2.2
Changes
Toinstall the Application Server 10.1.2.0.2 in
a Linux 64bit O/S we need totailor the environment so
the gcc compiler works as a
32bitcompiler. By default the gcc compiler
bundled with the Linux x86 64bitdistributions works in 64bit
mode.
2.2.3
Cause
There were 2 issues preventing thecompilation:
1) The /usr/bin/gcc compiler need to bewrapped to compile in
32bit mode and pick up the crt1.o file
2) The /usr/lib/crt1.o file was missing.
2.2.4
Solution
Firstly review the advice given in:
Note:377359.1 HandlingOracle
Application Server 10g Relinking Errors on Redhat and Suse 64-bit
Linux
If the advice in this note does not lead to a solution,try the
work-around steps given below.
1) Create ashell script
/usr/bin/gcc containing the following entries. Note the scriptwill
differ depending on the gcc version. Create a different shell
scriptdepending on the gccNN version:
For gcc32:
#!/bin/sh
exec /usr/bin/gcc32 -m32 -static -libgcc -B/usr/lib/ "$@"
For gcc33:
#!/bin/sh
exec /usr/bin/gcc33 -m32 -static -libgcc -B/usr/lib/ "$@"
For gcc34:
#!bin/sh
exec /usr/bin/gcc34 -m32 -static -libgcc
-B/usr/lib-L/usr/lib/gcc/x86_64-redhat-linux/3.4.3/32 "$@"
2) Install the glibc-devel-2.3.4-2.25(32bit) RPM and verify you
have /usr/lib/crt1.o afterwards
3) Verify libdb.so.2 is
installedin the system. The file should be there if
gnome-libs-1.4.1.2.90-34.1 (orlater) is installed:
rpm -qa |grep gnome-libs ==> Verifygnome-libs is there
rpm -ql gnome-libs-1.4.1.2.90-34.1| grep
libdb ==> Verify libdb.so.2 isincluded in the
rpm
4) Retry the failed relink and continue theinstallation.
2.3
ins_ctx.mk 问题
MOS 文章:
Error in Invoking Target 'Install' of Makefile
$ORACLE_HOME/ctx/lib/ins_ctx.mk [ID 362285.1]
2.3.1
Symptoms
While executingthe link phase of an Oracle Database Server
installation on LINUX x86-64 thefollowing error
occurs:
$ORACLE_HOME/bin/ctxhx fails to relink witherror
/usr/bin/ld: cannot find -lgcc_s_32
2.3.2
Cause
Missing required 32bit RPMs for:
libgcc
Per :
Note851598.1 Linux OS
Requirements Reference List for Database Server
2.3.3
Solution
1. Check if you have the missing RPMinstalled. For example:
rpm -qa --queryformat"%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"
| grep libgcc
libgcc-4.1.2-48.el5 (x86_64) <<<64bit
version
libgcc-4.1.2-48.el5 (i386) <<<32bit version
2. Install any missing RPM's per:
Note851598.1 Linux OS
Requirements Reference List for Database Server
In this case libgcc-4.1.2-48.el5 (i386) <<<32bit version
was missing.
3. Relink per
Note131321.1 How
to Relink Oracle Database Software on UNIX/LINUX
for example:
% relink all > /tmp/relink.txt2>&1
4. Check relink.txt for errors
三.Relink Oracle
Database 说明
MOS文章:
How to Relink Oracle Database Software on UNIX [ID 131321.1]
3.1
背景说明
Applicationsfor UNIX are generally not distributed as complete
executables.
Oracle,like many application vendors who create products for UNIX,
distributeindividual object files, library archives of object
files, and some sourcefiles which then get "relinked" at the
operating system level duringinstallation to create usable
executables. This guarantees a reliable
integration with functions provided by the OSsystem libraries.
UNIX平台下的应用通常不是作为一个完整的可执行文件来部署的。Oracle 分散部署单独的对象文件,对象文件的library archives 和一些源文件,然后在安装过程中,在系统级别获取这些对象的link,并用其创建可执行文件。
3.1.1 在以下情况下会自动进行Relink
Relinking occurs automatically under thesecircumstances:
(1)An Oracle product has beeninstalled with an Oracle provided
installer.
(2)An Oracle patch set has beenapplied via an Oracle provided
installer.
3.1.2 The
following information has been added to the 'Certify' section of
MyOracleSupport:
General Notes For Oracle
Database - Enterprise Edition:
O/S Information:
The vendors guarantee
operating systembinary compatibility; therefore, no reinstall or
relink of the Oracle software isrequired when upgrading these
operating systems unless specifically statedotherwise.
3.1.3
Relinking Oraclemanually is suggested under the following
circumstances(even though the OSvendor may not require
it):
--在以下情况下需要手工的Relinking
Oracle
(1)An OS upgrade has occurred.
(2)A change has been made to the OSsystem
libraries. This can occur duringthe application
of an OS patch.
(3)A new install failed during therelinking phase.
(4)Individual Oracle executables coredump during initial
startup.
(5)An individual Oracle patch has beenapplied (however, explicit
relink instructions are usually either included inthe README or
integrated into the patch install script)
3.2
Relinking Oracle
注意事项:
This note shouldnot be used for 11GR2 GI/ASM home's (GI: Grid
Infrastructure).
以下方法争对的是单实例,如果是RAC,参考:
How to Check Whether Oracle
Binary/Instance is RAC Enabled and Relink Oracle Binary in RAC [ID
284785.1]
手工Relink的步骤如下:
[Step 1] Log into theUNIX system as the
Oracle software owner:
=============================================================
Typically this is the user 'oracle'.
[STEP 2] Verify that your$ORACLE_HOME is
set correctly:
=============================================================
For all Oracle Versions and Platforms, perform this basic
environment check
first:
% cd $ORACLE_HOME
%
pwd Doing this will ensure that $ORACLE_HOME is set correctly in your
currentenvironment.
[Step 3] Verify and/or Configure theUNIX
Environment for proper relinking:
=============================================================
For all Oracle Versionsand UNIX
Platforms:
The Platform specific environment
variablesLIBPATH, LD_LIBRARY_PATH,
SHLIB_PATHtypically are already set to include
system library locations like
'/usr/lib'. In most cases, you
need only check what they are set to first, then addthe
$ORACLE_HOME/lib directory to them where appropriate.
i.e.: %setenv
LD_LIBRARY_PATH ${ORACLE_HOME}/lib:${LD_LIBRARY_PATH}
(see note:131207.1How to Set UNIX
Environment Variables for help with setting UNIX
environment variables)
If on AIX with:
--------------
NOTE: Beforerelinking, after stopping all required processes,
issue the
following
as root to detach all files frommemory that are not attached to an
active process:
# /usr/sbin/slibclean
Oracle 7.3.X:
- Set LIBPATH to include$ORACLE_HOME/lib
Oracle
8.0.X:
- Set LIBPATH to include$ORACLE_HOME/lib
- Set LD_LIBRARY_PATH to include$ORACLE_HOME/lib and
$ORACLE_HOME/network/lib (Requiredwhen using Oracle products that
use Java)
- Set LINK_CNTRL to L_PTHREADS_D7if using AIX 4.3. ('oslevel'
verifies OSversion)
Oracle 8.1.X,
9.X.X, 10.X.X or 11.x.x:
- For 8.1.5, set LINK_CNTRL toL_PTHREADS_D7
- If not 8.1.5, ensure thatLINK_CNTRL is not set
- Set LIBPATH to include$ORACLE_HOME/lib
If on DATA GENERAL AVIION (DG)
with:
-----------------------------------
Oracle 7.3.X or 8.0.X:
- Set LD_LIBRARY_PATH to include$ORACLE_HOME/lib
- ensure TARGET_BINARY_INTERFACEis unset
Oracle 8.1.X:
- Set LD_LIBRARY_PATH
toinclude $ORACLE_HOME/lib:$ORACLE_HOME/JRE/lib/PentiumPro/native_threads
If on HP-UX with:
----------------
Oracle 7.3.X,8.0.X, 8.1.X;
- Set
SHLIB_PATH to $ORACLE_HOME/lib
If using 64bit 8i Oracle, also
- Set LD_LIBRARY_PATH to$ORACLE_HOME/lib64
- ensure LPATH is unset
Oracle 9.X.X,10.X.X or 11.x.x;
- ensure LPATH is unset
If on NCR with:
--------------
Oracle
7.3.X, 8.0.X or 8.1.X:
- Set LD_LIBRARY_PATH to include$ORACLE_HOME/lib:/usr/ccs/lib
If on SCO UNIXware with:
-----------------------
Oracle 7.3.X
or 8.0.X:
- Set LD_LIBRARY_PATH to include$ORACLE_HOME/lib
Oracle
8.1.X:
- Set LD_LIBRARY_PATH to include
$ORACLE_HOME/lib:$ORACLE_HOME/JRE/lib/x86at/native_threads
If on SGI with:
--------------
32bit Oracle
7.3.X or 8.0.X:
- Set LD_LIBRARY_PATH to include$ORACLE_HOME/lib
- Set SGI_ABI to -32 64bit Oracle
8.0.X or 8.1.X (8i isonly available in 64bit):
- Set LD_LIBRARY_PATH to include$ORACLE_HOME/lib
- Set SGI_ABI to -64
- If one does not already exist,create the file compiler.defaults
and
set the COMPILER_DEFAULTS_PATHvariable:
In the Oracle software owner's $HOMEdirectory, create a file called
'compiler.defaults':