Oracle 9iR2?

David Muse david.muse at firstworks.com
Wed Dec 24 03:49:43 UTC 2003


On Tue, 23 Dec 2003 15:19:04 -0500
<Lance.Spence at cox.com> wrote:

> David would be interested in receiving your procedure. Could you please
> send it to me or post a link to them here.
> 
> Lance.Spence at cox.com

I really recommend using the patches and the procedure at http://www.puschitz.com
but, here's my procedure:

One of the underlying problems is that Oracle uses a java-based installer and provides a
JRE on the installation CD.  But, the JRE that they use has a bug in it.  For some reason,
it uses __libc_wait which is supposed to be a local glibc function (ie. apps
aren't supposed to use it).  Older versions of glibc erronesously defined __libc_wait
as global, but the version of glibc that fedora core 1 comes with (correctly) defines it as
local.  Consequently though, the JRE that Oracle 9.2 comes with won't run.

The patch creates a tiny library that implements __libc_wait as a global function and
LD_PRELOAD's it.  This resolves the problem and allows the provided JRE to run.


Here is an alternative procedure:

Download and install the following software:
	jre-1.3.1_09 (from java.sun.com)
	compat-libstdc++-7.3-2.96.118.i386.rpm (from rpmfind.net)
	compat-gcc-7.3-2.96.118.i386.rpm (from rpmfind.net)
	compat-db-3.3.11-4.i386.rpm (from rpmfind.net)
	libctypefixup-1.0.tar.gz (from http://www.firstworks.com/support/libctypefixup-1.0.tar.gz,
						follow the enclosed installation instructions)

Copy the Oracle 9i installation CD's to a local directory, modify Disk1/install/linux/oraparam.ini
to use the sun jre by setting:

JRE_LOCATION=/usr/java/jre1.3.1_09

Then run the installer.  It should run smoothly util it starts linking programs.

If a dialog pops up indicating:

    Error in invoking target install of makefile
    /u01/app/oracle/product/9.2.0/network/lib/ins_oemagent.mk 

edit /u01/app/oracle/product/9.2.0/network/lib/env_oemagent.mk and change:

	LDLIBS=$(EXPDLIBS) $(EXOSLIBS) $(SYSLIBS) $(EXSYSLIBS) $(MATHLIB) $(USRLIBS)

to:

	LDLIBS=$(EXPDLIBS) $(EXOSLIBS) $(SYSLIBS) $(EXSYSLIBS) $(MATHLIB) $(USRLIBS) -lctypefixup

then click Retry

If a dialog pops up indicating:

    Error in invoking target install of makefile
    /u01/app/oracle/product/9.2.0/rdbms/lib/ins_rdbms.mk


edit /u01/app/oracle/product/9.2.0/rdbms/lib/env_rdbms.mk and
change gcc to gcc296 then click Retry.

If a dialog pops up indicating

    Error in invoking target install of makefile
    /u01/app/oracle/product/9.2.0/ctx/lib/ins_ctx.mk

There is no good fix right now.  However, it's not a critical system
(or at least I've never needed it) so it's "safe" to click Ignore.

After linking is complete, the network and database configuration
assistants will fail to run because they're still trying to use the
JRE supplied by oracle (which has the __libc_wait problem).

You can fix the Network Configuration Assistant by editing
/u01/app/oracle/product/9.2.0/bin/netca and changing:

JREDIR=/u01/app/oracle/product/9.2.0/JRE
  to:
JREDIR=/usr/java/jre1.3.1_09

  and:

JRE=$JREDIR/bin/jre
  to:
JRE=$JREDIR/bin/java

Then select Network Configuration Assistant and click Retry.
If you already exited the installer, you can just run:

/u01/app/oracle/product/9.2.0/bin/netca /orahome /u01/app/oracle/product/9.2.0 /instype typical /inscomp client,oraclenet,javavm,server,ano /insprtcl tcp,tcps /cfg local /authadp NO_VALUE /nodeinfo NO_VALUE /responseFile /u01/app/oracle/product/9.2.0/network/install/netca_typ.rsp

on the command line.

Similarly, you can fix the Database Configuration Assitant by
editing /u01/app/oracle/product/9.2.0/bin/dbca and changing:

JRE_DIR=/u01/app/oracle/product/9.2.0/JRE
  to:
JRE_DIR=/usr/java/jre1.3.1_09

  and change:

# Run DBCA
$JRE_DIR/bin/jre -native -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
else
# Run DBCA
$JRE_DIR/bin/jre -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS

to:

# Run DBCA
$JRE_DIR/bin/java -native -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS
else
# Run DBCA
$JRE_DIR/bin/java -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATH oracle.sysman.assistants.dbca.Dbca $ARGUMENTS


Also, you need to run

	touch /etc/rac_on

as root.

Then select Database Configuration Assistant and click Retry.

If you already exited the installer, you can run:

/u01/app/oracle/product/9.2.0/bin/dbca  -progress_only    -createDatabase -templateName General_Purpose.dbc -gdbName ora1 -sid ora1  -datafileJarLocation /u01/app/oracle/product/9.2.0/assistants/dbca/templates -datafileDestination /u01/app/oracle/oradata -responseFile NO_VALUE     -characterset WE8ISO8859P1 -passwordDialog true

on the command line.

After the installation is complete, you need to copy an init file.  If you
named your instance "ora1" then you would need to run the following
command:

cp /u01/app/oracle/admin/ora1/pfile/initora1.ora.* /u01/app/oracle/product/9.2.0/dbs/initora1.ora

Adjust the command according to your database instance name.

That will get everything installed.  You should edit /etc/oratab and change the
entry like:

	ora1:/u01/app/oracle/product/9.2.0:N

to:

	ora1:/u01/app/oracle/product/9.2.0:Y

And you may want to install the following script in /etc/rc.d/init.d/oracle:

#!/bin/sh
 
case "$1" in
  start)
        su -l oracle -c "/u01/app/oracle/product/9.2.0/bin/dbstart"
        su -l oracle -c "/u01/app/oracle/product/9.2.0/bin/lsnrctl start"
        ;;
  stop)
        su -l oracle -c "/u01/app/oracle/product/9.2.0/bin/dbshut"
        su -l oracle -c "/u01/app/oracle/product/9.2.0/bin/lsnrctl stop"
        ;;
  *)
        echo $"Usage: $0 {start|stop}"
        exit 1
esac
 
exit 0

And symlink it to /etc/rc.d/rc5.d/S98oracle to get oracle to start at boot.
You can manually start/stop oracle using "/etc/rc.d/init.d/oracle start" and
"/etc/rc.d/init.d/oracle stop".

That's it.  It's a mess and it's not a 100% complete installation (because of
the ins_ctx.mk problem) but it seems to work.  I'm not sure I'd trust it in
production though.  And I'm almost certain that java stored procedures won't
work.  It's possible that changing the symlink /u01/app/oracle/product/9.2.0/JRE
to point to /usr/java/jre1.3.1_09 will fix that, but that's just a guess.

Allegedly, if you use the patches from Oracle, everything works for real.

Good luck.  Hope this helps.

David Muse
david.muse at firstworks.com





More information about the users mailing list