Oracle on Gentoo Linux
I'm running Gentoo Linux on one of my machines
at work. It's a pretty nice distribution, and provides a useful mechanism called
"portage" for compiling software from source and keeping things up
to date. In general, my linux machine seems a lot faster now compared to the
previous Redhat binary image installed on it by the local support people. I
have a lot of control over what's installed by default, so it's also using far
less disk space.
I've spent much of today trying to install Oracle 9.2 on it. Although Gentoo
is not an officially supported Linux distro for Oracle, it should work without
problems. I did run into a few issues during installation:
1. Before installation, I had to install libcompat. You can emerge this like
so:
emerge sys-libs/lib-compat
2. gcc 2.95 has to be the default gcc version in order to install successfully.
Using a later version resulted in the following error: Error in invoking
target ioracle of makefile /u01/app/oracle/product/9.2.0.1.0/ctx/lib/in_rdbms.mk.
Verify the version you're using with:
gcc --version
On my system, this returned
gcc (GCC) 3.2.3 20030422 (Gentoo Linux 1.4.3.2.3-r2, propolice)
To get the Oracle installation to complete, I installed gcc 2.95 like this:
emerge sys-devel/gcc-2.95.3-r8
Then temporarily changed /usr/bin/gcc into a symbolic link pointing at 2.95:
mv /usr/bin/gcc /usr/bin/gcc-backup
ln -s /usr/i686-pc-linux-gnu/gcc-bin/2.95/gcc /usr/bin/gcc
After installation was complete, I restored the original version:
rm /usr/bin/gcc
mv /usr/bin/gcc-backup /usr/bin/gcc
3. During installation, I got the following error: Error in invoking
target install of makefile /u01/app/oracle/product/9.2.0.1.0/ctx/lib/ins_ctx.mk.
This error occurs on just about every Linux distro I've ever tried to install
Oracle on (all of which are not officially supported). It's documented on Metalink
as Note
191587.1, and you can work around it like this:
Modify the file $ORACLE_HOME/ctx/lib/ins_ctx.mk changing
ctxhx: $(CTXHXOBJ)
$(LINK) $(CTXHXOBJ) $(INSO_LINK)
to
ctxhx: $(CTXHXOBJ)
$(LINK) -ldl $(CTXHXOBJ) $(INSO_LINK)
4. After fixing the above, installation was still failing with an error in
ins_ctx.mk. It turns out this is caused by bug
2037255 in Oracle Text. I don't need to use Oracle Text, so just clicked
Ignore on the error dialog. Alex Malinovich has a couple of unofficial patches
that might resolve this issue, but I haven't tried them.
Update: I created a handy script to start and stop Oracle during system startup and shutdown. This was loosely based on Bram De Smet's script, which didn't work on the version of Gentoo I'm using for some reason.
Create a file called /etc/init.d/oracle containing the code below, then run the commands chmod ugo+x /etc/init.d/oracle and rc-update add oracle default to install it:
#!/sbin/runscript
#
# name: /etc/init.d/oracle
# description: starts and stops Oracle on Gentoo Linux
# author: Brian.Duff@oracle.com
#
# Change this to your Oracle user
oracle_user=ora92
depend() {
need net
use cupsd
}
start() {
ebegin "Starting oracle"
echo 1073741824 > /proc/sys/kernel/shmmax
result=$?
su - "$oracle_user" > /dev/null <<EOO
#
# If you have not defined ORACLE_HOME, ORACLE_BASE, ORACLE_SID and
# updated the PATH in the oracle user's .profile, you will need to
# uncomment the following lines and fill in the correct
# values for ORACLE_BASE, ORACLE_HOME and ORACLE_SID
#
# export ORACLE_BASE=/u01/app/oracle
# export ORACLE_HOME=$ORACLE_BASE/product/9.2.0.1.0
# export ORACLE_SID=yoursid
# export PATH=$PATH:$ORACLE_HOME/bin
#
lsnrctl start
sqlplus /nolog<<EOS
connect / as sysdba
startup
EOS
EOO
result=$(( $result + $? ))
eend $result
}
stop() {
ebegin "Stopping oracle"
su - "$oracle_user" > /dev/null <<EOO
#
# If you have not defined ORACLE_HOME, ORACLE_BASE, ORACLE_SID and
# updated the PATH in the oracle user's .profile, you will need to
# uncomment the following lines and fill in the correct
# values for ORACLE_BASE, ORACLE_HOME and ORACLE_SID
#
# export ORACLE_BASE=/u01/app/oracle
# export ORACLE_HOME=$ORACLE_BASE/product/9.2.0.1.0
# export ORACLE_SID=yoursid
# export PATH=$PATH:$ORACLE_HOME/bin
#
lsnrctl stop
sqlplus /nolog<<EOS
connect / as sysdba
shutdown immediate
EOS
EOO
eend $?
}
4:16:31 PM
|