Re: How to determine if a relink is necessary?

  • From: Tim Gorman <tim@xxxxxxxxx>
  • To: post.ethan@xxxxxxxxx
  • Date: Wed, 19 Nov 2008 09:47:51 -0700

Ethan,

The "make" command has a couple useful command-line switches to help determine if something has changed somewhere in the chain of dependencies, necessitating a re-link:
  • -d (provide explanation of the reasons for decisions made by "make")
  • -dd (like the "-d" switch, but on steroids)
  • -n (generate the commands to be executed by "make", but don't execute them)
So, whereas to relink the RDBMS you might normally issue a command like "make -f ins_rdbms.mk ioracle" from the "$ORACLE_HOME/rdbms/lib" directory, here is some sample output given these additional command-line switches...
okeydokey:dev1> make -d -n -f ins_rdbms.mk ioracle
MAKEFLAGS value:
chmod 755 /var/opt/oracle/product/10.2.0.3.0/bin
  Building ioracle because preinstall does not exist
   Building /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/oracle because it is out of date relative to /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/defopt.o
   Building /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/oracle because it is out of date relative to /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/config.o
echo
echo " - Linking Oracle "
rm -f /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/oracle
/usr/ccs/bin/ld   -o /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/oracle -L/var/opt/oracle/product/10.2.0.3.0/rdbms/lib/ -L/var/opt/oracle/product/10.2.0.3.0/lib/ -dy /var/opt/oracle/product/10.2.0.3.0/lib/prod/lib/v9/crti.o /var/opt/oracle/product/10.2.0.3.0/lib/prod/lib/v9/crt1.o  /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/opimai.o /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/ssoraed.o /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/ttcsoi.o  /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/defopt.o  -z allextract -lperfsrv10 -z defaultextract /var/opt/oracle/product/10.2.0.3.0/lib/nautab.o /var/opt/oracle/product/10.2.0.3.0/lib/naeet.o /var/opt/oracle/product/10.2.0.3.0/lib/naect.o /var/opt/oracle/product/10.2.0.3.0/lib/naedhs.o /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/config.o  -lserver10 -lodm10  -lnnet10 -lskgxp10 -lsnls10 -lnls10  -lcore10 -lsnls10  -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10  -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 -lhasgen10 -lcore10 -lskgxn2 -locr10 -locrb10 -locrutl10  -lhasgen10 -lcore10 -lskgxn2   -lclient10  -lvsn10  -lcommon10 -lgeneric10  -lknlopt `if /usr/ccs/bin/ar tv /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap10" ; fi`  -lslax10 -lpls10 -lplp10 -lserver10 -lclient10  -lvsn10  -lcommon10 -lgeneric10 `if [ -f /var/opt/oracle/product/10.2.0.3.0/lib/libavserver10.a ] ; then echo "-lavserver10" ; else echo "-lavstub10"; fi` `if [ -f /var/opt/oracle/product/10.2.0.3.0/lib/libavclient10.a ] ; then echo "-lavclient10" ; fi`  -lknlopt -lslax10 -lpls10 -lplp10 -ljox10 -lserver10  -lclsra10 -ldbcfg10 -locijdbcst10 -lwwg  `cat /var/opt/oracle/product/10.2.0.3.0/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /var/opt/oracle/product/10.2.0.3.0/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lmm -lsnls10 -lnls10  -lcore10 -lsnls10  -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10  -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /var/opt/oracle/product/10.2.0.3.0/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /var/opt/oracle/product/10.2.0.3.0/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10   -lsnls10 -lnls10  -lcore10 -lsnls10  -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10  -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `if /usr/ccs/bin/ar tv /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo10"; fi` -lctxc10 -lctx10 -lzx10 -lgx10 -lctx10 -lzx10 -lgx10 -lordimt10  -lsnls10 -lnls10  -lcore10 -lsnls10  -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10  -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 -lsnls10 -lunls10  -lsnls10 -lnls10  -lcore10 -lsnls10  -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10  -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10      `cat /var/opt/oracle/product/10.2.0.3.0/lib/sysliblist` -R /opt/SUNWcluster/lib/sparcv9:/var/opt/oracle/product/10.2.0.3.0/lib:/opt/ORCLcluster/lib/  -Y P,:/opt/SUNWcluster/lib/sparcv9:/opt/ORCLcluster/lib/:/usr/ccs/lib/sparcv9:/usr/lib/sparcv9 -Qy -lc -laio -lposix4 -lkstat -lm  /var/opt/oracle/product/10.2.0.3.0/lib/prod/lib/v9/crtn.o
  Building ioracle because /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/oracle does not exist
mv -f /var/opt/oracle/product/10.2.0.3.0/bin/oracle /var/opt/oracle/product/10.2.0.3.0/bin/oracleO
mv /var/opt/oracle/product/10.2.0.3.0/rdbms/lib/oracle /var/opt/oracle/product/10.2.0.3.0/bin/oracle
chmod 6751 /var/opt/oracle/product/10.2.0.3.0/bin/oracle
So, this "make" command was safe to run because the "-n" switch made it a "dry run", where "make" generated the commands but didn't run them.  And the "-d" flag provided reasoning for why "make" generated the commands; it would be up to you to decide whether those reasons are just "housekeeping" (i.e. unnecessary) or necessitating a real relink.  I've italicized in red typeface those lines in this output above, lines beginning with the word "Building ...", but I'm not sure if the list-server will propagate that formatting...

Hope this helps....
Tim Gorman
consultant - Evergreen Database Technologies, Inc.
P.O. Box 630791, Highlands Ranch CO  80163-0791
website   = http://www.EvDBT.com/
email     = Tim@xxxxxxxxx
mobile    = +1-303-885-4526
fax       = +1-303-484-3608
Yahoo IM  = tim_evdbt


Ethan Post wrote:
DBA (not my database) says no relink required, it was done on 10G install and patch automatically. 3'rd party bar code App is getting ORA- errors regarding datatype on insert or update (converts integer to double or something I think and crashes), 10g client has been installed. All sources (vendor, metalink) say relink. App guy wants to relink but DBA says no way. What to do, is there a way to determine if a relink is required? As far as I know a relink won't hurt and may fix a **CRITICAL** app problem, I don't understand why the DBA refuses to do this, anybody sympathize with him? Me thinks the customer thinks we have our heads where it don't shine. Not my account so not much I can do other than advise the app guy.
-- //www.freelists.org/webpage/oracle-l

Other related posts: