Application Server 10.1.3 on SUSE LINUX Enterprise Server 9
This document is based on a previous one on how to install as10gR2 on SLES9.
You should start from that document since the preinstallation process is identical.
The differences are few and involves only the installation GUI so the only porpuse of this document is to show the snapshots of the installation process.
Note: The installed product is the preview release 4 (a beta version).
Best if at "Selectyion installation type" you go for the third option.
After the preinstllation process (read this document) you can launch the installer:
oracle@breoraasls02:~> 1013/runInstaller
Insert the path of the ORACLE_HOME you created.
Choose the third option (the "all packages" installation). It will simplify your configuration.
Live and let die.
To stop and start the application server you need the command opmnctl.
The below section is a cut and paste of this doc.
If you wish to use your env variable (I find them useful for administration) then rename oracle.sh.bak in oraccle.sh and modify the content.
Here is an example taken from my configuration:
ORACLE_SID=IASPT
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.1/ias_1
#TNS_ADMIN=$ORACLE_HOME/network/admin
#ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/opmn/bin
LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$ORACLE_HOME/lib
#CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
#export ORACLE_BASE ORACLE_HOME ORA_NLS33 ORACLE_SID PATH LD_LIBRARY_PATH CLASSPATH TNS_ADMIN
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15; export NLS_LANG
Even these two lines should be commented:
#test -d /lib/i686 && export LD_ASSUME_KERNEL=2.4.21
#test -f /usr/lib/libInternalSymbols.so && export LD_PRELOAD=/usr/lib/libInternalSymbols.so
Then insert in /etc/init.d/oracle lines similar to these ones:
echo "Starting up IAS"
su - $ORACLE_OWNER -c "export ORACLE_HOME=$ORACLE_HOME; $ORACLE_HOME/opmn/bin/opmnctl startall > /dev/null"
rc_status -v -r
You can start single components with:
opmnctl startproc ias-component=DSA
This session is, in my opinion, the most interesting.
If you have followed the installation procedure you have seen that it is required that no env variable should be set so even LD_ASSUME_KERNEL which is usually an important part of other product installation.
What does it mean?
LD_ASSUME_KERNEL specify which implementation of the libc.so.6 (glibc) to use.
Normally three different version are installed on your system:
/lib/i686/libc.so.6
/lib/libc.so.6
/lib/tls/libc.so.6
this is made for compatibility with older system.
so if you set LD_ASSUME_KERNEL to 2.4.21 (the usual set for SUSE) you are going to use /lib/i686/libc.so.6
Let's go to a system where I installed a database and issue the command:
oracle@brealmdbls01:~> lsof|grep oracle|grep libc.so.6|head -n 5
tnslsnr 2612 oracle mem REG 104,2 1321972 275270 /lib/i686/libc.so.6
tnslsnr 2627 oracle mem REG 104,2 1321972 275270 /lib/i686/libc.so.6
tnslsnr 2628 oracle mem REG 104,2 1321972 275270 /lib/i686/libc.so.6
tnslsnr 2629 oracle mem REG 104,2 1321972 275270 /lib/i686/libc.so.6
oracle 2784 oracle mem REG 104,2 1321972 275270 /lib/i686/libc.so.6
As you can see all the processes of the orcle user are employing /lib/i686/libc.so.6
Doing the same test on the machine where you have just installed the application server you'll get:
oracle@breoraasls02:~> lsof|grep oracle|grep libc.so.6|head -n 5
sshd 3356 oracle mem REG 8,2 1345545 950307 /lib/tls/libc.so.6
bash 3357 oracle mem REG 8,2 1345545 950307 /lib/tls/libc.so.6
opmn 6980 oracle mem REG 8,2 1345545 950307 /lib/tls/libc.so.6
java 7004 oracle mem REG 8,2 1345545 950307 /lib/tls/libc.so.6
opmn 8509 oracle mem REG 8,2 1345545 950307 /lib/tls/libc.so.6
The result is, as expected, not the same.
Then what are the differences between the two libc.so.6?
If you use them as a command you'll discover:
oracle@breoraasls02:~> /lib/i686/libc.so.6
GNU C Library stable release version 2.3.3 (20040412), by Roland McGrath et al.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Configured for i686-suse-linux.
Compiled by GNU CC version 3.3.3 (SuSE Linux).
Compiled on a Linux 2.6.5 system on 2004-06-30.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
linuxthreads-0.10 by Xavier Leroy
GNU Libidn by Simon Josefsson
NoVersion patch for broken glibc 2.0 binaries
BIND-8.2.3-T5B
libthread_db work sponsored by Alpha Processor Inc
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Thread-local storage support included.
pthread library is compiled with floating stack support enabled.
Report bugs using the `glibcbug' script to <bugs@gnu.org>.
oracle@breoraasls02:~> /lib/tls/libc.so.6
GNU C Library stable release version 2.3.3 (20040412), by Roland McGrath et al.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Configured for i686-suse-linux.
Compiled by GNU CC version 3.3.3 (SuSE Linux).
Compiled on a Linux 2.6.5 system on 2004-06-30.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
NPTL 0.61 by Ulrich Drepper
GNU Libidn by Simon Josefsson
NoVersion patch for broken glibc 2.0 binaries
RT using linux kernel aio
BIND-8.2.3-T5B
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Thread-local storage support included.
Report bugs using the `glibcbug' script to <bugs@gnu.org>.
Mainly NPTL 0.61 by Ulrich Drepper are used instead of the older linuxthreads-0.10 by Xavier Leroy.
In 10g we can see how heavily the development as been shifted from processes to threads. Even the listener changed:
oracle@brealmdbls01:~> ps -fe|grep tnsl
oracle 2612 1 0 Mar20 ? 00:01:59 /u01/app/oracle/product/10.1.0.3/db_1/bin/tnslsnr LISTENER -inherit
oracle 2627 2612 0 Mar20 ? 00:00:00 /u01/app/oracle/product/10.1.0.3/db_1/bin/tnslsnr LISTENER -inherit
oracle 2628 2627 0 Mar20 ? 00:00:00 /u01/app/oracle/product/10.1.0.3/db_1/bin/tnslsnr LISTENER -inherit
oracle 2629 2627 0 Mar20 ? 00:00:00 /u01/app/oracle/product/10.1.0.3/db_1/bin/tnslsnr LISTENER -inherit
Four threads (I have 4 CPU) instead of a process.
Since I had serious problems with SLES7 threads (linuxthreads-0.09) and RAC I'm wondering if the newer native posix thread libraries should be used instead of the older. I can't answer now since I need to test the behaviour of the systems using different libc.so.6 but I feel I contributed somehow to a possible misconfiguration of several DBs in the SUSE community.
Another worry concerns async I/O (RT using linux kernel aio) but even here I need to investigate further.
What to do now?
With this document I'd like to warn people: official documentation and installation process can be flawed!
Contact information:
fabrizio.magni _at_ gmail.com