From:	jan_andersen@nord-data-detail.dk (Jan Andersen)
To:	'Alexander Saleemon' <lee@ewsd.chtts.ru>, "'linux-ibcs2@vger.rutgers.edu'" <linux-ibcs2@vger.rutgers.edu>
Subject: Description of how to install Oracle 7.3.3 on Linux 2.0.x for i386
Date:	Mon, 2 Feb 1998 09:31:40 +-100

Installing Oracle 7.3.3 on Linux 2.0.29

This text has - as all 'howtoids' - grown from just a couple of notes about
how to get around some troubles. Despite the name of the file, it isn't
quite a HOWTO; anyway - it does give a crude description of what one should
do to install Oracle 7.3.x - the Workgroup Server or the Enterprise Server.
It is (pt.) the policy of Oracle Corp. to give test licenses of their server
SW quite liberally. As a matter of fact you can even download it from
http://www.oracle.com - their home page is well worth looking at, BTW.

As I stated above, this is just a crude cook book description. It doesn't
tell you how to use Oracle when it's installed - maybe I, or someone else
will include this later. Oracle's own documentation is quite huge, to say
the least, but it's thorough, and now you get it as a set of HTML pages -
there even is a java based search engine in it - very useful feature.

I assume you have at least a rudimentary working knowledge about Linux or
UNIX (a Linux clone :-). You should know how to edit a file, how to use the
online manual (the 'man' command) and be generally confident about computers
- I know this is considerably more than what is expected of most Windoze 
users, but then again you wouldn't be using Linux if you didn't want to be
more competent than that, would you?

This file also doesn't tell anything about Oracle Terminal, or any other
sofisticated utilities - but this may be added later.

A note about memory: Oracle needs a lot of it, though I'm not sure exactly
how much. I tried installing it on a SCO 5.04 with 32Mb RAM, but it failed.
But then SCO has absurd ideas about how much RAM one should have (If you
ever try to boot an SCO machine, you'll see that Microsoft owns a patent
in it - maybe that's part of the explanation). I guess that 64Mb will be
satisfying - I have it in 80Mb now, and free tells me it's all in use, but
then I run fvwm95 (an X window manager that uses a lot of resources), httpd 
and several others too.

Most of this description came from Roland van Hout <rvh@foxim.uucp> - I
just bruised it up a little, tried it out and added a few points.

In short this is what I did (Oracle Enterprise Server 7.3.3):

-2. Get Oracle: Either a CD (nowadays it comes on several, but then you 
get a lot of other things besides the server) or you can download it from
http://www.oracle.com (it's BIG! About 140Mb). A tip if you download it:
After finding your way through the home pages and forms at Oracle, and
just before you start downloading, you'll see, that you can choose between
one big file and about 10 smaller files. Take notice of the URL that points 
to the actual file(s) - it's an ftp://... address. Grinding your way 
through several huge downloads with a Web browser can be quite tedious,
but using the ftp address, you can (in Linux, at least) do it using,
guess what: ftp - either as a number of parallel ftp sessions of as a
'batch job':

ftp -n oracles.ftp.server<<!
user ftp my_email@myserver.com
cd /the/relevant/directory
get file_number_one
get file_number_two
...
!

See man ftp for more details.

-1. Get and install iBCS - the latest version can be found at 
ftp://tsx-11.mit.edu/pub/linux/BETA/ibcs2/ Make sure that you read the
READMEs! The SMP (Symmetric Multi Processor) option is on by default and
will cause an annoying error on a system without SMP. Make it with SCO
support, at least. You'll need some libraries that support SCO calls too
- you can get them from the same place.

0. You'll need to set (at least) three environment variables (see below):

ORACLE_HOME		#The 'home directory' of the Oracle database
ORACLE_SID		#The 'System ID' of your database - any four letter word
ORACLE_TERM		#The terminal specification to use - vt100 always works

Notice - while case doesn't matter in most of Oracle's commands, it is important
in ORACLE_SID. This is because it corresponds to the name of Oracle's parameter 
file. Thus if ORACLE_SID is TEST, the parameter file is initTEST.ora, not 
inittest.ora.

1. Create group dba and user oracle as a member of dba and with home
directory = $ORACLE_HOME. Look in 'man group' to see how to create a
user group in Linux - essentially it means adding a line to /etc/group
like this:

dba::101:oracle

'dba' is the group name, '101' the group number and 'oracle' is a member of
the group 'dba'.

2. Log out and log in as oracle (or do an 'su - oracle') - this way you can 
'connect internal' in svrmgrl without getting asked for a password. Plus you 
don't have to change owner/group on the files you create.

3. Copy the entire CD to $ORACLE_HOME. When you've done that, you must unpack
the packed files - they end with '_'. The program to do this is oiuncomp - it
is in the orainst directory. Copy it to eg. /bin and do something like (from
the $ORACLE_HOME):

find . -name "*_" -print -exec oiuncomp {} \;

This will find all the compressed files, print it's name and execute oiuncomp
on it.

4. There are some directories called mesg_ship in this new tree - copy 
or move the content of these to their parent directory (they're called 'mesg')
- if you don't, you won't get meaningful error messages.

5. Create these directories:

$ORACLE_HOME/rdbms/log,
$ORACLE_HOME/rdbms/audit
$ORACLE_HOME/network/log

- if you don't you'll get messages like 'couldn't create audit trail ...'
when you start svrmgrl (see below)

6. Edit either /etc/profile or oracle's .profile to set ORACLE_HOME to the 
directory where you placed the content of the CD. Set ORACLE_TERM=vt100
and ORACLE_SID=<a four letter word like orcl or test>

7. In $ORACLE_HOME/dbs create init<$ORACLE_SID>.ora from init.ora
and edit it to fit your needs. Remember to set the following:

compatible = 7.3.3.2.0			# or whatever your version (> 7.2.0.0.0)
license_max_sessions = <a number>
license_max_users = <a number>

NB: There's a link between 'processes' and 'license_max_users':

processes >= license_max_users + <number of background processes (at least 5)>

(Look in the sample file dbs/init.ora to see the option 'processes').

8. Now you can start svrmgrl (actually just sqldba) - there is a svrmgrm,
which requires Motif to run, but I couldn't get it to run. This is because of
an error in the iBCS. Anyway I prefer the line interface.

9. CONNECT INTERNAL - the response should be 'connected to an idle instance'

10. STARTUP NOMOUNT - you get some lines of status info

11. CREATE DATABASE - look in the doc's for the details. Specify at least:

create database datafile '<filename>' size <a number>;

Do yourself a favour and make an SQL file, eg createdb.sql and run it from
svrmgrl with:

@createdb

This is because svrmgrl (and sqlplus) probably don't interpret your 
<backspace> correctly - this has caused me endless troubles :-) To solve the
problem, make sure your terminal works as whatever is the value of the 
ORACLE_TERM, and that TERM is set to the right value. This may involve editing
/etc/termcap or terminfo and using oraterm to add a terminal description.

12. Now you can start at running scripts from rdbms/admin:

@rdbms/admin/catalog		#runs rdbms/admin/catalog.sql
@rdbms/admin/catproc		#runs rdbms/admin/catproc.sql
@sqlplus/admin/pupbld		#runs sqlplus/admin/pupbld.sql

- assuming that you started svrmgrl from $ORACLE_HOME.

13 When this is done, configure the listener - the daemon that accepts
connections from SQLnet. What you need is /etc/listener.ora:

TEST=
	(ADDRESS_LIST=
		(ADDRESS=
			(PROTOCOL=TCP)
			(HOST=linux)
			(PORT=1521)
		)
	)

SID_LIST_TEST=
	(SID_LIST=
		(SID_DESC=
			(SID_NAME=test)
			(ORACLE_HOME=/usr/local/oracle7)
		)
	)

STARTUP_WAIT_TIME_TEST=0
CONNECT_TIMEOUT_TEST=10
TRACE_DIRECTORY_TEST=/usr/local/oracle7/network/log
TRACE_FILE_TEST=TEST
LOG_DIRECTORY_TEST=/usr/local/oracle7/network/log
LOG_FILE_TEST=TEST

The many occurrences of 'TEST' is the name of the listener - you 
can replace it with what you like. If you omit the last 6 lines, 
they should get sensible defaults. When you've made this file,
execute lsnrctl and issue the command 'start test' (or whatever
you've called your listener) - and that should be it! Now you
should be able to see the Oracle over the net - from ODBC and via
SQLnet. Use SQLnet clients whenever possible - it's far better 
than ODBC (much faster).

14. If you want to be able to connect from this machine to an Oracle
on another server, you'll have to make an /etc/tnsnames.ora:

<Host string> =
  (DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS =
          (PROTOCOL = TCP)
          (Host = <Remote Oracle host>)
          (Port = 1521)
        )
    )
    (CONNECT_DATA = (SID = <Remote ORACLE_SID>)
    )
  )

/etc/tnsnames.ora consists of 1 or several sections like this one - 
each defines a 'Host string' which is used by Oracle clients when
connecting to a remote database. The <Host string> could be any
string (without spaces), like 'TEST'. The <Remote Oracle host> is
either an ip address, a name defined in /etc/hosts or a hostname
that is visible on a name server. <Remote ORACLE_SID> is the System
ID (ie. SID) of the remote database you want to connect to.

On the remote host, this SID must be listed in /etc/listener.ora
under a listener that listens on the port you connect to - in this
example 1521.

Now you can write (assuming <Host string> is TEST):

sqlplus system/manager@test

to connect as user system with password manager on the host which
is described with host string 'TEST'. Or you can make a database
link (in sqlplus):

create database link remotedb
	connect to system
	identified by manager
	using 'test';

Now you can use tables on the remote database like:

select * from all_tables@remotedb;