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;