mirror of https://github.com/tLDP/LDP
986 lines
38 KiB
Plaintext
986 lines
38 KiB
Plaintext
<!doctype linuxdoc system>
|
|
|
|
<article>
|
|
|
|
<title>Oracle for Linux Installation HOWTO
|
|
<author>Stephen Darlington, <tt/<stephen@zx81.org.uk>/
|
|
<date>$Revision$, $Date$
|
|
|
|
<abstract>
|
|
With this HOWTO, and a little luck, you will be able to get "Oracle 8i
|
|
Enterprise Edition for Linux" installed, create a database and connect
|
|
to it from a remote machine. The main focus of this guide is RedHat
|
|
Linux 6.0, although it should work more-or-less unchanged for any
|
|
other recent distribution.
|
|
|
|
</abstract>
|
|
|
|
<toc>
|
|
|
|
<sect>Introduction
|
|
|
|
<sect1>What's in here?
|
|
<p>
|
|
Linux is well known for being difficult and, generally, user
|
|
hostile. Being a bit of a Unix fan I'm not sure whether I agree with
|
|
that or not.
|
|
|
|
Oracle is similar I guess. Initially it's difficult to get to grips
|
|
with, but it's difficult to work with any other RDBMS when you're used
|
|
to it.
|
|
|
|
Combine the two, remember that 8i is only the second production
|
|
release, and you realise that this isn't going to be straight-forward,
|
|
even if you're familiar with both.
|
|
|
|
I am, but I had problems. Many problems were my own stupidity or
|
|
hubris, but I document them for completeness.
|
|
|
|
<sect1>Who is this HOWTO for?
|
|
<p>
|
|
First, this document is for people who want to install Oracle 8i
|
|
version 8.1.5 on Linux. It does not cover any earlier versions,
|
|
although it should work with similar later versions such as 8.1.6.
|
|
|
|
If you want to install 8.0, I recommend you try <url name="Linux
|
|
Journals guide"
|
|
url="http://www2.linuxjournal.com/lj-issues/issue67/3572.html">, and
|
|
if you want to install any of the previous versions you're going to
|
|
have to use the SCO version and follow Paul Haigh's <url name="Oracle
|
|
Database HOWTO"
|
|
url="http://www.linuxdoc.org/HOWTO/Oracle-HOWTO.html">.
|
|
|
|
If you're trying to install the 'right' version, what level of
|
|
background knowledge will you need?
|
|
|
|
Perhaps the easiest way is if I explain a little of my background,
|
|
clearly if yours is similar we're going to be on the same
|
|
wave-length. I've used a lot of Unix and Oracle over the last few
|
|
years. At home I've been running Linux since 1994 and I've been using
|
|
Solaris and HP-UX on-and-off since 1992. I first came across Oracle in
|
|
1996 and have worked with both versions 7 and 8. I'm mainly a
|
|
developer, but I have done DBA and sysadmin-type work.
|
|
|
|
In summary, I can find my way around a Unix box and I know much of the
|
|
Oracle terminology. You'll need both to brave the rest of this
|
|
document. But don't worry if you have a different background, follow
|
|
this guide closely and keep asking questions. The Linux community are
|
|
a helpful bunch, just don't expect an answer if you haven't at least
|
|
made an effort to solve the problem yourself.
|
|
|
|
<sect1>New versions of this document
|
|
<p>
|
|
Things move quickly in the world of Linux and Oracle, meaning that
|
|
this document can quickly get out of date. If this document is more
|
|
than a month or two old, I suggest you take a look at <url name="my
|
|
web site" url="http://www.zx81.org.uk/computing/oracle/oracle-howto/">
|
|
for an update.
|
|
|
|
<sect1>Disclaimer
|
|
<p>
|
|
You get what you pay for. I offer no warranty of any kind, implied or
|
|
otherwise. I'll help you where I can but legally you're on your own.
|
|
|
|
<sect1>Credits and Thanks
|
|
<p>
|
|
This HOWTO has been written by Stephen Darlington. It couldn't have
|
|
been created without the constant stream of questions and answers on
|
|
Oracle Technet and the Usenet news-groups. So thanks to the people
|
|
that keep posting and sorry that I can't credit you all individually!
|
|
|
|
Thanks to the following people, in no particular order, for their
|
|
contributions to this document: Ton Haver, Guy Cole, Iain Frerichs,
|
|
Albert Braun, Steve Morando, Krill Kokoshka, Brain Slesinsky, Galen G
|
|
Burk and Bill Gathen.
|
|
|
|
I welcome any constructive feedback on this HOWTO and any general
|
|
Linux or Oracle issues. Email me at <url
|
|
url="mailto:stephen@zx81.org.uk" name="stephen@zx81.org.uk">.
|
|
|
|
<sect1>Licence
|
|
<p>
|
|
This document is copyright 2000 Stephen Darlington. You may use,
|
|
disseminate and reproduce it freely, provided you:
|
|
|
|
<itemize>
|
|
<item>Do not omit or alter this copyright notice.
|
|
<item>Do not omit or alter the version number and date.
|
|
<item>Do not omit or alter the document's pointer to the current WWW
|
|
version.
|
|
<item>Clearly mark any condensed, altered or versions as such.
|
|
</itemize>
|
|
|
|
These restrictions are intended to protect potential readers from
|
|
stale or mangled versions. If you think you have a good case for an
|
|
exception, ask me.
|
|
|
|
(This copyright notice has been lifted from Eric Raymond's Distribution
|
|
HOWTO.)
|
|
|
|
<sect>Starting off
|
|
|
|
<sect1>Overview
|
|
<p>
|
|
In this section, we'll set up Linux so that you're in a position to
|
|
get Oracle 8i from the CD that they sent you into your hard-disk.
|
|
|
|
The Oracle installation process begins when you've built your PC,
|
|
installed Linux, configured it and connected it to your network.
|
|
|
|
<sect1>Prerequisites
|
|
<sect2>Hardware
|
|
<p>
|
|
I think that the most important part of the prerequisites is not to
|
|
underestimate them. Oracle is a very big and complex application and
|
|
you won't get the best out of it if you skimp too much on the
|
|
hardware.
|
|
|
|
My biggest mistake was to assume that Oracle were joking when they
|
|
said that you need 128Mb of RAM. I've installed Oracle a couple of
|
|
times on Sun servers with that much, why would I need more on a CISC
|
|
machine?
|
|
|
|
Believe Oracle not my gut. My machine with 32Mb of Ram ground on for
|
|
less than half an hour before I realised that it was hopeless.
|
|
|
|
I was trying to use the bare minimum of hardware, and that's generally
|
|
a bad idea. If you can't afford the hardware you certainly won't be
|
|
able to afford the licences!
|
|
|
|
Things to look for on a production server are many disks, possibly
|
|
RAIDed, and fast CPU's. Database access is relatively easy to break
|
|
down into smaller parallel phases so having a number of processors
|
|
really does help.
|
|
|
|
On the other hand, any machine that can run Linux and that has enough
|
|
memory should be in with a chance. My other machine, the one I used
|
|
for the rest of this document, is fine as a development machine. It is
|
|
a Celeron 466Mhz with 128Mb of memory, an 8Gb hard disk, an Intel
|
|
graphics card and a DM9102 network card.
|
|
|
|
<sect1>Linux setup
|
|
|
|
<sect2>Choice of distribution
|
|
<p>
|
|
Oracle seem to have done most of their development on RedHat Linux
|
|
6.0. For a fuss-free installation, do the same. I've heard horror
|
|
stories about trying to get it installed on other distributions.
|
|
|
|
However, anything <it/like/ RedHat should also do the trick. A recent
|
|
version of Mandrake or SuSE should be fine (SuSE, in fact, are fairly
|
|
active in supporting Oracle), and newer versions of RH pose no
|
|
problems either.
|
|
|
|
<sect2>Distribution Setup
|
|
<p>
|
|
Now that you've decided on which RedHat-like distribution you're going
|
|
to use, you'll need to work out which options to set and which of the
|
|
vast number of packages need to be installed to make Oracle work.
|
|
|
|
Firstly you need two to three times the amount of memory you have for
|
|
your swap space. (You'll need around 200Mb of memory, real or virtual,
|
|
just to run the installer!) Note that contrary to popular opinion,
|
|
Linux swap partitions can be larger than 128Mb.
|
|
|
|
The arrangements of your other partitions can also be important. Make
|
|
sure that the Oracle software is on a different partition to your
|
|
operating system, and make sure that the Oracle datafiles are on yet
|
|
another partition. The idea here is to make sure that your datafiles
|
|
do not get fragmented. (In a live environment, you're likely to have a
|
|
number of disk with Oracle spread across them. There are a number of
|
|
good books that you consult for more information on this.)
|
|
|
|
As for the software, I took the easy option and installed just about
|
|
everything. You certainly need all the 'base' packages, X Windows (the
|
|
installation routine is a Java GUI) and the development tools
|
|
regardless of whether you intend doing any coding or not. Compared to
|
|
the size of Oracle and your databases a Linux distribution is tiny,
|
|
probably less than a gigabyte. It's worth installing it all for an
|
|
easy life!
|
|
|
|
<sect2>Kernel parameters
|
|
<p>
|
|
The documentation suggests that you make changes to the Linux kernel
|
|
so you can get more shared memory. Since this is so difficult in Linux
|
|
(unlike most commercial Unix's you have to recompile the kernel), the
|
|
approach I took was to go ahead with the installation anyway. The
|
|
default RedHat Linux settings worked, although you may have to change
|
|
them for a larger development or production system.
|
|
|
|
Note that some people have had to recompile the kernel to get Oracle
|
|
to work at all. I guess it must depend on the other software that
|
|
you're running on the same machine.
|
|
|
|
Follow the instructions in the Oracle documentation (on the
|
|
installation CD in HTML format) and the <url name="Linux Kernel HOWTO"
|
|
url="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html"> to build your
|
|
new kernel.
|
|
|
|
<sect2>Users and groups
|
|
<p>
|
|
Using LinuxConf (or whatever other method you feel comfortable with),
|
|
you need to add a new group called "dba" and a new user called
|
|
"oracle", which should belong to your newly created "dba" group.
|
|
|
|
You can make any other user a DBA by putting them in the DBA group. If
|
|
you have several DBA's this is probably a good idea for auditing
|
|
purposes.
|
|
|
|
<sect2>Installing the right Java Virtual Machine
|
|
<p>
|
|
If you check the official documentation, you'll find that Oracle
|
|
recommend the Blackdown Java Runtime Environment version 1.1.6v5.
|
|
That's what they mean. Don't think 'newer versions will be less buggy'
|
|
as the installer probably won't work. And don't think, 'I'll be
|
|
developing software so I'll just get the JDK,' as that won't work
|
|
either.
|
|
|
|
There is one caveat to using this version of the JRE: the Oracle
|
|
installer seems to be hard-coded to expect the JRE executable to be at
|
|
<tt>/usr/local/jre/bin/jre</tt>. While this is inconvenient, it does
|
|
not mean that you have to install it there.
|
|
|
|
I performed the following steps to get a working copy of the JRE:
|
|
|
|
<enum>
|
|
<item>Download the Java Runtime Environment from the <url
|
|
name="Blackdown website" url="http://www.blackdown.org">
|
|
|
|
<item>Move to where you want to install the JRE:
|
|
|
|
<verb>cd /usr/local</verb>
|
|
|
|
<item>Uncompress the archive:
|
|
|
|
<verb>bzip2 -d -c jre-1.1.6-v5-glibc-x86.tar.bz2 | tar xvf -</verb>
|
|
|
|
<item>Create a symbolic link between where Oracle thinks it is and
|
|
where it actually is: <verb>ln -s jre116_v5 jre</verb>
|
|
|
|
</enum>
|
|
|
|
<sect1>Starting off questions and answers
|
|
|
|
<sect2>Do I really need 128Mb RAM?
|
|
<p>
|
|
I would recommend that you do use 128Mb of RAM or more. I think it
|
|
would be difficult to get any serious work done with less.
|
|
|
|
However, if you disable the Java option and set all the shared memory
|
|
settings to be relatively small, there's no reason why it shouldn't
|
|
work. I've heard success stories with 64Mb. You're probably not going
|
|
to get away with 32Mb, though.
|
|
|
|
There is a caveat. You may only need half of what Oracle recommends to
|
|
run the thing, but to install it their number starts to make
|
|
sense. I've heard reports of the installer using 150Mb of memory and
|
|
I've seen it well over 120Mb myself. If you have 64Mb or less of
|
|
memory, make sure you have lots of swap space and patience.
|
|
|
|
An alternative if you absolutely can't add more memory: install Oracle
|
|
on another, bigger machine and copy across the <tt/$ORACLE_HOME/
|
|
directory. You'll need to make sure that you have all the same users
|
|
and groups (preferably with the same numeric codes) and take special
|
|
care with SUID executables like <tt>$ORACLE_HOME/bin/oracle/</tt>.
|
|
|
|
<sect2>Does it work with RedHat 6.1 or above?
|
|
<p>
|
|
I'm still running 6.0 myself, so all I can say is that a number of
|
|
people have claimed success with this configuration.
|
|
|
|
At the time of writing, Oracle 8i has been certified with RedHat 6.0
|
|
and "Certification for other distributions is currently in progress"
|
|
(Oracle 8i Patch FAQ).
|
|
|
|
<sect2>Does it work with Debian/SuSE/Mandrake/some other distribution?
|
|
<p>
|
|
Oracle specify the Linux kernel version 2.2 or above and GLIBC version
|
|
2.1 with any window manager. In theory, any distribution that meets
|
|
these requirements should work.
|
|
|
|
In practice, Oracle may not support it and you may have more problems
|
|
trying to complete the installation. Unless you have a very good
|
|
reason to do otherwise I suggest you stick to RedHat 6.0 with all the
|
|
patches you can get hold of.
|
|
|
|
<sect2>Does it work with development kernels?
|
|
<p>
|
|
There's no obvious reason why it shouldn't work -- I used 2.3.19 for a
|
|
while because it supported my network card and the stable kernel at
|
|
the time didn't -- but unless there's a pressing need it's certainly
|
|
safest to stay well clear. I switched back to the stable series as
|
|
soon as the driver was included.
|
|
|
|
<sect2>Where do I get Oracle from?
|
|
<p>
|
|
Firstly, if you're brave, have a very fast Internet connection or
|
|
inexhaustible patience (and unmetered access) you can download it from
|
|
<url name="Oracle Technet" url="http://technet.oracle.com/">. Beware:
|
|
it's nearly 200Mb, and 8.1.6 is even bigger.
|
|
|
|
A better option is to get the CD. Oracle sometimes offer to send you a
|
|
free development CD when you join Technet. It's certainly worth
|
|
spending some time looking round their web site for
|
|
that. Alternatively, you can buy them from the Oracle Store for around
|
|
$40. It includes lots of other software too and comes on 15 discs.
|
|
|
|
<sect>The installer
|
|
<sect1>How?
|
|
<p>
|
|
Generally, following the documentation is a good idea. It's not that
|
|
bad and you'll get much better support from Oracle if you have. (I
|
|
ended up breaking things -- and knowing it would -- by following the
|
|
documentation for Oracle Applications. It was the only way to get
|
|
decent support.)
|
|
|
|
This document is going to give an overview, but you should still have
|
|
their documentation available.
|
|
|
|
<sect1>What do I tell the installation program?
|
|
<p>
|
|
As part of the installation Oracle will ask a number of
|
|
questions. Generally they're not too difficult but let's see what I
|
|
entered and why.
|
|
|
|
<enum>
|
|
<item>Many people make the mistake of following Oracle's documentation
|
|
and, therefore, fail at the first hurdle. Don't execute
|
|
<tt/runInstaller/ as it almost always fails. Instead move to
|
|
<tt>install/linux</tt> on the CD and run <tt/runIns.sh/ while logged
|
|
in as 'oracle'.
|
|
|
|
<item>It should show a title screen. Click 'Next.'
|
|
|
|
<item>It should ask you to enter the source directory of the
|
|
installation files ('jar' file) and your Oracle installation
|
|
directory. You should be able to leave the former alone. The Oracle
|
|
home directory is where you want to install the software. According to
|
|
the installation documentation is should be somewhere on
|
|
<tt>/u01</tt>, but I ignored that and put it in
|
|
<tt>/home/oracle</tt>. Oracles advice, in this respect, is usually
|
|
worth following. Click 'Next' when you've entered the details.
|
|
|
|
<item>Now it should ask you for the DBA group. This is the Unix group
|
|
you created in the last section and is probably 'dba'. Enter the
|
|
details and click 'Next.'
|
|
|
|
<item>This time it wants you to log in as 'root' and run
|
|
<tt>/tmp/OraInstall/orainstRoot.sh</tt>. Do as it says. (You may have
|
|
to run <tt/pdksh/ or <tt/bash/ in the 'Bourne compatibility mode' to
|
|
get it to complete successfully.) When you're done click 'Retry.'
|
|
|
|
<item>You're now given the option of what to install. Your best bet
|
|
here is 'Oracle Enterprise Edition,' as this includes just about
|
|
everything (table 3.1 in the Oracle documentation tells you exactly
|
|
what it installs). Make sure the right radio button is selected and
|
|
click 'Next.'
|
|
|
|
<item>It should now allow you to choose what you install with much
|
|
finer granularity. Unless you're particularly constrained by disk
|
|
space or know exactly what you need, I'd recommend leaving it exactly
|
|
as it is and clicking 'Next.' The Universal Installer won't let you
|
|
make any silly choices so don't worry too much if you unselect
|
|
something. You can always add it back in later.
|
|
|
|
<item>For any products that you've asked it to install, the installer
|
|
will allow you to change where it puts them. Again, only if you have a
|
|
good reason to should you change it. Click 'Next' when you're done.
|
|
|
|
<item>It now goes away and installs all the pieces of software you
|
|
asked it to. This will probably take quite a while and will use far
|
|
more memory than is reasonable.
|
|
|
|
<item>It should ask you if you want to create a database. Select
|
|
'no'. There are two reasons for this: it often doesn't work and, even
|
|
when it does, it's very slow (it seems to fire up another JVM, leaving
|
|
X, the Oracle back-end and <it/two/ virtual machines in memory; not
|
|
good with 128Mb of memory).
|
|
|
|
<item>The installer should now ask you about the network protocols
|
|
that you want Oracle to support. The boxes all came up blank for me. I
|
|
don't know what's supposed to be in there, but I clicked 'Next' and
|
|
found that everything worked.
|
|
|
|
<item>All the hard stuff is complete now. All the products you want
|
|
should be installed and are ready to go. Congratulations.
|
|
</enum>
|
|
|
|
<sect1>Installing the patch
|
|
<p>
|
|
Unfortunately, the CD that Oracle sent you was probably version
|
|
8.1.5.0.0. As with almost all first releases there are problems with
|
|
that version (problems include empty files, so they're quite serious)
|
|
and a patch, to version 8.1.5.0.2 is essential. You'll certainly need
|
|
it to progress to the "Configuration" section of this HOWTO. The patch
|
|
described here is a cumulative patch, i.e., it includes all the files
|
|
required to move from version 8.1.5.0.0 to 8.1.5.0.2.
|
|
|
|
The file you need is on <url name="the Oracle web site"
|
|
url="http://technet.oracle.com/software/products/oracle8i/software_index.htm">
|
|
and is relatively easy to install.
|
|
|
|
<enum>
|
|
<item>This is probably the first of many patches, so create a
|
|
directory called "patches" somewhere convenient (mine is in
|
|
<tt/$ORACLE_HOME/).
|
|
|
|
<item>Download the file into it.
|
|
|
|
<item>Create somewhere to put the files:
|
|
<verb>mkdir /tmp/orapatch
|
|
cd /tmp/orapatch</verb>
|
|
|
|
<item>Uncompress the file:
|
|
<verb>tar zvxf $ORACLE_HOME/patches/linux815patches.tgz</verb>
|
|
|
|
<item>Run the shell script that's now in the current directory:
|
|
<verb>./linux_815patches.sh</verb>
|
|
|
|
</enum>
|
|
|
|
Note that it's important not to uncompress the file in the current
|
|
directory. The patch installer checks that the correct number of files
|
|
are present and fails if there are not the right number. Of course, if
|
|
it finds the patch archive it finds too many files!
|
|
|
|
<sect1>Setting up your environment
|
|
<p>
|
|
Add the following lines to your ".profile" (or whatever the equivalent
|
|
is for your shell):
|
|
|
|
<verb>
|
|
. oraenv
|
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
|
|
</verb>
|
|
|
|
Quite why the Oracle installer doesn't do this I have no idea.
|
|
|
|
If you see "<tt/[: integer expression expected before -lt/" the next
|
|
time you log in, it's because 'oraenv' is expecting your ULIMIT to be
|
|
an integer rather than the default 'unlimited.' I've seen no ill
|
|
effects by ignoring the error, but you can fix it by setting the
|
|
ULIMIT to something finite.
|
|
|
|
<sect1>Installations questions and answers
|
|
|
|
<sect2>The installation program exits with 'CreateOUIProcess()'
|
|
<p>
|
|
Firstly, make sure that you're running the right version of the JVM. I
|
|
don't know what Oracle do with their software, but it's very dependent
|
|
on the version you use.
|
|
|
|
Secondly, it might help if, instead of running <tt/runInstaller/ from
|
|
the root of the CD, you move into <tt>install/linux</tt> and run the
|
|
<tt/runInst.sh/ shell script instead.
|
|
|
|
This problem seems more common on RedHat 6.1 than 6.0 and could be
|
|
something to do with a newer C library.
|
|
|
|
I've also heard reports that if you have the wrong version of Gnome's
|
|
usual window manager, Enlightenment, you might get this
|
|
problem. Upgrade or switch to another environment such as KDE or
|
|
Fvwm2.
|
|
|
|
<sect2>The installer just flashes on the screen and then vanishes
|
|
<p>
|
|
This is not an uncommon occurrence. Usually it means that you're
|
|
running an old version of Enlightenment. Upgrading or switching to
|
|
another environment should fix the problem.
|
|
|
|
A similar problem is the installation program vanishing at some later
|
|
point in the process, often around 80% of the way through. The
|
|
consensus seems to be that Oracle ran out of memory. You should
|
|
increase the amount of swap space your machine has, anything over
|
|
200Mb should be sufficient.
|
|
|
|
<sect2>Strange Java errors when I start the installation program?
|
|
<p>
|
|
Which version of the Java Virtual Machine are you using? People have
|
|
claimed success with other versions, but most of the problems that I
|
|
had disappeared when I downgraded to JRE 1.1.6v5, the one that Oracle
|
|
recommends in their documentation.
|
|
|
|
Two other things that are worth mentioning: make sure you use the JRE
|
|
and not the JDK and, secondly, you should be using "green"
|
|
threads. Unless you've set THREADS_FLAG to 'native' you almost
|
|
certainly have the correct setting.
|
|
|
|
<sect2>The installation program 'Segmentation Fault's
|
|
<p>
|
|
You do have GLIBC 2.1 don't you?
|
|
|
|
<sect2>Problems loading shared libraries
|
|
<p>
|
|
The error message that I'm talking about looks a bit like this:
|
|
|
|
<verb/error in loading shared libraries: libclntsh.so.8.0: cannot open
|
|
shared object file: No such file or directory/
|
|
|
|
This is the same as NT complaining that it can't find a DLL. It's very
|
|
easy to fix. Simply add the following line to the end of your
|
|
".profile" if you're using a Bourne-like shell (ask a local guru if
|
|
you don't know):
|
|
|
|
<verb>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib</verb>
|
|
|
|
Or use the following line if you're using a CSH-like shell:
|
|
|
|
<verb>setenv LD_LIBRARY_PATH "$LD_LIBRARY_PATH
|
|
$ORACLE_HOME/lib"</verb>
|
|
|
|
I don't use the C-Shell, so independent verification of this command
|
|
would be appreciated.
|
|
|
|
<sect2>Pro*C doesn't work
|
|
<p>
|
|
The answer to this took quite a bit of tracking down, although the
|
|
answer <it/is/ on the Oracle web site if you look hard enough.
|
|
|
|
The default configuration of Pro*C doesn't know where to find all its
|
|
libraries, so you need to tell it. After installation
|
|
<tt>$ORACLE_HOME/precomp/admin/pcscfg.cfg</tt> is empty, but it needs
|
|
to contain the following:
|
|
|
|
<verb>sys_include=(/home/oracle/precomp/public, /usr/include,
|
|
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/,
|
|
/usr/include, /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include,
|
|
/usr/include)
|
|
include=(/home/oracle/precomp/public)
|
|
include=(/home/oracle/rdbms/demo)
|
|
include=(/home/oracle/network/public)
|
|
include=(/home/oracle/plsql/public)
|
|
ltype=short</verb>
|
|
|
|
(The first four lines above, from <tt/sys_include/ to <tt/include)/
|
|
should all be on the same line in the file.)
|
|
|
|
The Oracle documentation doesn't mention this, but you also need to
|
|
edit <tt>$ORACLE_HOME/precomp/lib/env_precomp.mk</tt>. On the line
|
|
that defines <tt/CCPSYSINCLUDE/, put the following:
|
|
|
|
<verb>CCPSYSINCLUDE=sys_include='($(ORACLE_HOME)/precomp/public,
|
|
/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include,
|
|
/usr/include/g++-2, /usr/include)'</verb>
|
|
|
|
This works for RedHat 6.0, but may need tweaking for other
|
|
distributions or later versions of RH.
|
|
|
|
<sect2>I installed the patch but it made things worse!
|
|
<p>
|
|
This is tricky, barely documented by Oracle and common across all
|
|
their products and installation programs. It's about time they did
|
|
something about it!
|
|
|
|
Often what happens is as follows: you install Oracle Enterprise
|
|
Edition and, as Oracle tells you, you dash off and install all the
|
|
available patches. Then you decide you need the pre-compilers and
|
|
install Oracle Programmer from the same CD.
|
|
|
|
Before you installed Pro*C your database worked, and now it doesn't.
|
|
|
|
The problem is that the versions of the pre-compilers that you
|
|
installed were not patched and some of the Oracle server code relies
|
|
on the fixes; Oracle's installer is so stupid that it will overwrite
|
|
newer version of the same code.
|
|
|
|
The solution is not pretty. Since you can't extract an individual file
|
|
from the CD you need to install the whole thing again, this time
|
|
adding Oracle Programmer before the patch.
|
|
|
|
<sect2>Oracle thinks I don't have enough disk space
|
|
<p>
|
|
There's something wrong with the installation program. Assuming you
|
|
<it/do/ have enough space it will install okay.
|
|
|
|
<sect>Creating a database
|
|
<sect1>Overview
|
|
<p>
|
|
Hopefully you followed the advice from the previous section and didn't
|
|
create a database.
|
|
|
|
For most people, I can probably outline the process in a couple of
|
|
words: "Run 'dbassist'." Unless this is the first time you've ever run
|
|
Oracle, none of the questions should really phase you.
|
|
|
|
For completeness, I'll document what I did but I'd best say what I was
|
|
aiming for first. Bottom line: this is neither a production system nor
|
|
a 'serious' (i.e., several people, full time) development box. I
|
|
installed 8i to play around and see what was new or different from 8
|
|
and older versions.
|
|
|
|
This means that when 'dbassist' offered an easy option I took it. And
|
|
when it suggested using a different disk, or at least a different
|
|
partition, I declined. My <tt/$ORACLE_HOME/ is
|
|
<tt>/home/oracle</tt>. All the data files and software are in there,
|
|
all on one partition.
|
|
|
|
<sect1>Step-by-step guide
|
|
<p>
|
|
<enum>
|
|
<item>Bring up a command prompt and type: <verb>dbassist</verb>
|
|
|
|
<item>My machine tells me that "JNLS Exception:
|
|
oracle.ntpg.jnls.JNLSException. Unable to find any National Character
|
|
Sets." According to Oracles 8i Patch FAQ, this is a known problem
|
|
(884001) and can safely be ignored.
|
|
|
|
<item>Select the "Create a database" radio button and press "Next"
|
|
|
|
<item>There are two options: Typical and Custom. If you knew exactly
|
|
what you were doing you probably wouldn't be reading this and could
|
|
comfortably select Custom. I'm not going to cover that. Instead I'll
|
|
assume you select "Typical" and press "Next"
|
|
|
|
<item>Next it asks whether you want to copy the database from your CD
|
|
or to create the data files. Whenever I tried the first option, Oracle
|
|
couldn't find my CD player (you just installed from it!). So I
|
|
recommend choosing the second option. It's not difficult, it probably
|
|
just takes longer
|
|
|
|
<item>It's probably safe to select 'Hybrid' when it asks you what
|
|
environment the database will operate in
|
|
|
|
<item>Now it asks you how many users will be using your database at
|
|
any given time. I put five.
|
|
|
|
<item>Next it asks you what products you want to install in your new
|
|
database. Again, you know what you want better than me!
|
|
|
|
<item>Oracle needs a "Global Database Name" and a "SID" now. The
|
|
database name is like a fully qualified domain name (but
|
|
different). If you're the Oracle guru you'll know what to put, if not
|
|
your organisation might have some conventions. I called mine 'dev1'
|
|
(both the SID and database name).
|
|
|
|
<item>Now, do you want to create the database 'now' or should you let
|
|
it save the information to a shell script? With 128Mb of RAM I found
|
|
the former option painful.
|
|
|
|
I created the shell script, quit out of X and anything else using a
|
|
lot of memory and then ran the script. Much more snappy.
|
|
|
|
<item>I didn't notice this in any of the documentation, but your
|
|
database won't work properly without it! The database that 'dbassist'
|
|
creates is fine, but by default the user rollback segments are left
|
|
off-line. (Read: non-system users can't perform any operation that
|
|
requires transactions.)
|
|
|
|
Type: <verb>cd $ORACLE_HOME/dbs</verb>
|
|
|
|
You now need to edit a file called "init<SID>.ora"
|
|
("initdev1.ora" in my case).
|
|
|
|
About half-way down the file is a commented out line looking something
|
|
like this:
|
|
|
|
<verb># rollback_segments = (r01, r02, r03, r04)</verb>
|
|
|
|
Uncomment this line (remove the hash), save the file and you're done.
|
|
|
|
<item>This is a kind of meta-step. You have a database and you should
|
|
be able to start it up, but you probably don't know what any of the
|
|
system passwords are!
|
|
|
|
There are two that you need to know. The first is the SYSTEM
|
|
password. This defaults to '<tt/MANAGER/'. (It seems to be
|
|
conventional to put Oracle passwords in uppercase. In fact passwords
|
|
are not case sensitive.) I recommend you change it straight away by
|
|
typing <tt/password/ at the SQL*Plus prompt. (For people expecting an
|
|
<tt/ALTER USER/ command, this is new to the version of SQL*Plus
|
|
supplied with 8i.)
|
|
|
|
The other password that you need to know is the one for SYS. It
|
|
defaults to '<tt/CHANGE_ON_INSTALL/' and you should do exactly what it
|
|
says!
|
|
|
|
<item>Final step. This one gets rid of the annoying 'no profile'
|
|
warnings you get when you log into SQL*Plus.
|
|
|
|
Log into SQL*Plus as user 'system' (<tt>sqlplus
|
|
system/<password></tt>). Then type:
|
|
|
|
<verb>@?/sqlplus/admin/pupbld.sql</verb>
|
|
|
|
The question-mark is an alias for the <tt/$ORACLE_HOME/ directory.
|
|
|
|
<item>This is an optional step used to define the default editor for
|
|
SQL*Plus (it defaults to <tt/ed/ so you do!). Open
|
|
<tt>$ORACLE_HOME/sqlplus/admin/glogin.sql</tt> in your favourite
|
|
editor and add <tt>define_editor=<editor name></tt> to the end.
|
|
|
|
</enum>
|
|
|
|
And that's it. You should now have an operational database that you
|
|
can log into using SQL*Plus.
|
|
|
|
<sect1>Questions and answers
|
|
<sect2>Is it really that easy?
|
|
<p>
|
|
Yes and no. If you're just playing around, building a database for
|
|
yourself to learn the new features of 8i, then 'yes.' The database the
|
|
above instructions will build is complete and will work fine.
|
|
|
|
However, if you know anything about Oracle, you will quickly realise
|
|
that the default configuration is appallingly bad. If you're making a
|
|
serious, production system I recommend you use the "Custom" option.
|
|
|
|
Even for my toy system I did some tweaking. I increased the sizes of
|
|
most of the table-spaces and changed them so that they didn't grow
|
|
automatically (I hate software when it tries to be too clever).
|
|
|
|
<sect2>Is it really necessary to put all the files on different disks?
|
|
<p>
|
|
No and it will work fine if you don't, but I don't recommend putting
|
|
all your files on the same disk nevertheless.
|
|
|
|
Spreading the files over a number of disks, even it's just the data
|
|
files on one and the rollback segments on another, will have a
|
|
significant performance advantage. Read an Oracle DBA book if you need
|
|
further information.
|
|
|
|
<sect2>I can't start dbassist
|
|
<p>
|
|
Caused by several zero-length files in the initial
|
|
installation. Following the patch procedure will fix this problem.
|
|
|
|
<sect2>I get "ORA-01034: ORACLE not available"
|
|
<p>
|
|
To cut a long story short, your <tt/$ORACLE_SID/ is probably set
|
|
incorrectly or not at all. Make sure it's set to the same value you
|
|
gave 'dbassist' and that it's value is exported (i.e., <tt/export
|
|
ORACLE_SID/ in any Bourne compatible shell).
|
|
|
|
<sect2>I get "ORA-01012: Not logged in"
|
|
<p>
|
|
This is a very common error, and there are a number of different
|
|
things that cause it.
|
|
|
|
Firstly you'll want to make sure that you're not creating a Shared
|
|
Server configuration (sometimes known as MTS). Create a database using
|
|
Dedicated Server and convert it later.
|
|
|
|
If that's not it, check your <tt/NLS_LANG/ environment variable. The
|
|
easiest option is to unset it. If you really want to use it, make sure
|
|
that you have it exactly right. Make sure you don't transpose any '1's
|
|
(one's) for 'l's (the twelfth letter of the alphabet)!
|
|
|
|
<sect2>Can datafiles only be 1Gb in size?
|
|
<p>
|
|
'dbassist' won't let you create a datafile bigger than 1Gb. I believe
|
|
this to be a bug as Linux has no problem with files up to 2Gb.
|
|
|
|
<sect>Configuration
|
|
<sect1>Overview
|
|
<p>
|
|
Congratulations, you have Oracle running on your Linux box. You have
|
|
created a database and can connect to it using SQL*Plus.
|
|
|
|
Of course, this is not the end of it. Ideally, you'd be able to
|
|
connect to it as another Unix user or from a completely different
|
|
machine. That is what this section is for.
|
|
|
|
<sect1>Connecting as another user
|
|
<p>
|
|
Some of the details in this section are a little sketchy as this is
|
|
not a configuration that I personally use. However, performing one of
|
|
the following steps should work:
|
|
|
|
<itemize>
|
|
<item><verb>. oraenv</verb> if you run a Bourne-like shell (like Bash
|
|
or pdksh)
|
|
<item><verb>source coraenv</verb> if you prefer the C-Shell
|
|
</itemize>
|
|
|
|
When running "oraenv" I get an error if I use 'bash', the default
|
|
Linux shell. It seems not to cause any problems so don't worry. You
|
|
can always use 'pdksh' if it <it/does/ worry you.
|
|
|
|
<sect1>Connecting from another machine
|
|
<p>
|
|
I remember this being very complex with earlier versions of Oracle,
|
|
but just seemed to work here. I'm sure that must mean that I did
|
|
something wrong, forgot something I did or that there's a massive
|
|
security hole.
|
|
|
|
This is what I remember doing:
|
|
|
|
<enum>
|
|
<item>Logging into Linux as user 'oracle'
|
|
<item>Make sure that "oraenv" has been executed (i.e., your
|
|
<tt/$ORACLE_HOME/ is set correctly)
|
|
<item>Type: <verb>lsnrctl start</verb>
|
|
|
|
</enum>
|
|
|
|
On your client machine all you need to do now is point it at the right
|
|
machine and database instance.
|
|
|
|
If you want more control over the process, the "Net8 Configuration
|
|
Assistant" ('netec') should be able to help.
|
|
|
|
<sect1>Connecting to another machine
|
|
<p>
|
|
This used to be very difficult in many earlier version of Oracle,
|
|
involving editing many text files, most of which had an fantastically
|
|
complex syntax.
|
|
|
|
But in 8i, if you've got your JVM working, then all you need is the
|
|
"Net8 Easy Config" program. Follow these steps to allow your machine
|
|
to connect to a database on another machine:
|
|
|
|
<enum>
|
|
<item>Start "Net8 Easy Config" by typing <tt/netec/ at the command
|
|
prompt while logged in as 'oracle.'
|
|
|
|
<item>After a short delay while Java gets its act together, the
|
|
welcome screen appears. It should be asking what you want to do. Leave
|
|
the radio buttons on the left alone (the default is 'create') and
|
|
enter the name of the database in the text box. Click 'Next' when
|
|
you're done.
|
|
|
|
<item>Select one of the protocols it offers. Unless you know
|
|
differently, this should probably be 'TCP/IP' which is the
|
|
default. Press 'Next.'
|
|
|
|
<item>Enter the hostname (or IP address) of the remote machine. The
|
|
port number probably doesn't need changing. Press 'Next.'
|
|
|
|
<item>Select the type of database (8i or other) using the radio
|
|
buttons and enter the name in the appropriate text box. Press 'Next.'
|
|
|
|
<item>You can now test that the information you've enter makes sense
|
|
to Oracle. I found that 'netec' has a tendency to crash if some of the
|
|
details are wrong. Press 'Next' when you're sure that it all
|
|
works. You can keep pressing the 'Back' button to go back and correct
|
|
any information.
|
|
|
|
<item>If you're happy with all the information you've entered, you can
|
|
press the 'Finish' button and that's it!
|
|
|
|
</enum>
|
|
|
|
If you want more control over the process, you may need to use the
|
|
"Net8 Assistant" -- a big window with many confusing options -- which
|
|
can be started with the <tt/netasst/ command.
|
|
|
|
<sect1>Questions and answers
|
|
<sect2>I can't start 'netasst'
|
|
<p>
|
|
The problem is with a couple of zero-length files. Installing the
|
|
patch should fix this problem.
|
|
|
|
<sect>Final Words
|
|
<sect1>Useful Software
|
|
<p>
|
|
Now that you've managed to get Oracle installed, you'll want to try
|
|
and use it. Although it's possible to do everything from your server
|
|
PC, it's generally best to user the client-server facilities and use
|
|
another machine to access your database.
|
|
|
|
Naturally Oracle have a large collection of, largely, pretty good
|
|
client software, however there's not much for Linux at this time. Of
|
|
the Oracle software, I recommend getting hold of the following:
|
|
|
|
<itemize>
|
|
<item>Oracle Enterprise Manager. It's much easier not to have to
|
|
remember all those obscure ALTER USER and ALTER SYSTEM commands.
|
|
|
|
<item>Oracle WebDB. It can be quite difficult to install, but it can
|
|
allow people to build impressive web-sites without knowing any HTML.
|
|
|
|
</itemize>
|
|
|
|
But most of the best software comes from other places...
|
|
|
|
<itemize>
|
|
<item>Tool for Oracle Application Development (T.O.A.D.). This used to
|
|
be free but is now owned by <url url="http://www.quest.com"
|
|
name="Quest Software">. You can download a free version (if you're
|
|
prepared to do it every couple of months) or you can pay for it. It's
|
|
significantly more expensive than free but is not bad value.
|
|
|
|
<item>SQLNavigator. Also by <url url="http://www.quest.com"
|
|
name="Quest Software">. I've not really used it but it's been highly
|
|
recommended by all who have.
|
|
|
|
<item><url url="http://www.kkitts.com/orac-dba/" name="Orac">. Another
|
|
that I've not used much, but has been described as a nice,
|
|
configurable DBA-tool by a number of people.
|
|
|
|
</itemize>
|
|
|
|
<sect1>Useful Books
|
|
<p>
|
|
I seem to get most of my Oracle information from colleagues and
|
|
books. I'm not able to give away my colleagues, but the books I
|
|
recommend are as follows:
|
|
|
|
<itemize>
|
|
|
|
<item><#if output=html><url
|
|
url="http://www.amazon.com/exec/obidos/ASIN/1565922379/zx81orguk00"
|
|
name="Oracle Performance Tuning,"></#if>
|
|
<#unless output=html>"Oracle Performance Tuning,"</#unless>
|
|
Mark Gurry and Peter Corrigan,
|
|
O'Reilly and Associates, ISBN 1-56592-237-9.
|
|
|
|
<item><#if output=html><url
|
|
url="http://www.amazon.com/exec/obidos/ASIN/1565922689/zx81orguk00"
|
|
name="Oracle Design,"></#if>
|
|
<#unless output=html>"Oracle Design,"</#unless>
|
|
Dave Ensor and Ian Stevenson, O'Reilly and
|
|
Associates, ISBN 1-56592-268-9.
|
|
|
|
<item><#if output=html><url
|
|
url="http://www.amazon.com/exec/obidos/ASIN/1565923359/zx81orguk00"
|
|
name="PL/SQL Programming,"></#if>
|
|
<#unless output=html>"PL/SQL Programming,"</#unless>
|
|
Steven Feuerstein, O'Reilly and
|
|
Associates, ISBN 1-56592-335-9.
|
|
|
|
<item><#if output=html><url
|
|
url="http://www.amazon.com/exec/obidos/ASIN/1565923758/zx81orguk00"
|
|
name="PL/SQL Built-in Packages,"></#if>
|
|
<#unless output=html>"PL/SQL Built-in Packages,"</#unless>
|
|
Steven Feuerstein, O'Reilly and
|
|
Associates, ISBN 1-56592-375-8.
|
|
|
|
</itemize>
|
|
|
|
You'll note a bit of an <url url="http://www.ora.com" name="O'Reilly">
|
|
theme there. I've not found a bad O'Reilly book yet. Similarly, I've
|
|
never found a <it>good</it> Oracle Press book.
|
|
|
|
<sect1>Useful Internet resources
|
|
<p>
|
|
There's a lot of useful stuff on the web.
|
|
|
|
<itemize>
|
|
|
|
<item><url name="Oracle Technet"
|
|
url="http://technet.oracle.com">. This is Oracle's public and free
|
|
support website. Lot's of very useful information there.
|
|
|
|
<item><url name="Oracle Metalink"
|
|
url="http://support.oracle.com">. Oracle's private (you need a support
|
|
contract) support website. Only slightly more useful than Technet!
|
|
|
|
<item><url name="Oracle Fans"
|
|
url="http://www.orafans.com">. Editorials and support forums. No
|
|
official connection to Oracle (so the information there is less
|
|
biased!).
|
|
|
|
<item><url name="OraFaq" url="http://www.orafaq.org">. A site full of
|
|
questions and answers regarding Oracle on all platforms.
|
|
|
|
<item>Oracle Linux mailing list (Send a mail to <url
|
|
url="mailto:ListGuru@fatcity.com" name="ListGuru@fatcity.com"> with
|
|
the words 'SUBSCRIBE ORACLE-LINUX-L' in the body.
|
|
|
|
<item>And don't forget <url name="my website"
|
|
url="http://www.zx81.org.uk">!
|
|
|
|
</itemize>
|
|
|
|
</article>
|