ACS Documentation :
ACS Installation Guide :
Installing Oracle 8.1.6
Oracle is the RDBMS utilized by the ArsDigita Community System. If
you have trouble installing it, please refer to Oracle's
documentation.
Table of Contents
- Acquire Oracle 8.1.6 Enterprise Edition for Linux
- Things to Keep in Mind
- Pre-Installation Tasks
- Installing Oracle 8.1.6 Server
- Creating the First Database
- Acceptance Test
- Automating Startup and Shutdown
- Appendix A: What to Do About Wrong Dates
- Appendix B: Useful Procedures
- Appendix C: Oracle Defaults
Acquire Oracle 8.1.6 Enterprise Edition
You can obtain the software through a variety of methods:
- Order a CD from the Oracle Store. There is a link
under the heading Buying Tips that says "Learn how to
trial Oracle software." Click this for instructions on how to
make your order. The cost is currently $39.95 with delivery
estimated between 3-4 business days.
- Request a free demonstration CD. At the Oracle
Downloads page, click on the appropriate version of Oracle 8.1.6
Release 2 for your OS. You should see a "Try Online" link. After
filling out some information forms, you should be able to order a
version of the CD. This takes about 2-3 weeks for delivery.
- You can download Oracle from the Technet ftp site. The Linux
version is at ftp://ftp.oracle.com/pub/www/otn/linux/oracle8i/oracle8161_tar.gz
Note that the Oracle tarball that you will download is huge (>
250MB).
TOP
Things to Keep in Mind
Throughout these instructions, we will refer to a number of
configurable settings and advise certain defaults. With the
exception of passwords, we advise you to follow these defaults
unless you know what you are doing. Subsequent documents will
expect that you used the defaults, so a change made here will
necessitate further changes later. For a guide to the defaults,
please see Appendix 3.
TOP
Pre-Installation Tasks
Though Oracle 8.1.6 has an automated installer, we still need to
perform several manual, administrative tasks before we can launch
it. You must perform all of these steps as the root user.
We recommend entering the X window system as a user other than
root and then doing a su -
. This command gives
you full root access.
- Login in as a non-root user
- Start X by typing
startx
- Open a terminal window type and login as root
$ su -
; Enter the root password when prompted.
#
- Create and setup the oracle group and oracle account
We need to create a user oracle, which is used to install
the product, as well as starting and stopping the database.
# groupadd dba
# groupadd oinstall
# groupadd oracle
# useradd -g dba -G oinstall,oracle -m oracle
Now change the oracle account password
# passwd oracle
You will be prompted for the New Password and Confirmation of that password.
- Setup the installation location for Oracle
While Oracle can reside in a variety of places in the file system,
ArsDigita has adopted '/ora8' as the base directory.
Note: the Oracle install needs about 1 GB free on '/ora8' to install successfully.
# mkdir /ora8
# cd /ora8
# mkdir -p m01 m02 m03/oradata/ora8
# chown -R oracle.dba /ora8
# exit ; Logs out.
- Set up the oracle user environment
- Log in as the user oracle
In the same terminal window, type the following.
$ su - oracle
; Enter oracle's password
- Use a text editor to edit the .bash_profile file in the
oracle account home directory.
$ emacs ~oracle/.bash_profile
You may get this error trying to start emacs:
Xlib: connection to ":0.0" refused by server
Xlib: Client is not authorized to connect to Server
emacs: Cannot connect to X server :0.
Check the DISPLAY environment variable or use `-d'.
Also use the `xhost' program to verify that it is set to permit
connections from your machine.
If so, do the following.
Open a new terminal window.
$ xhost +localhost
Now, back in the oracle terminal
$ export DISPLAY=localhost:0.0
$ emacs ~oracle/.bash_profile
Try this procedure anytime you get an Xlib connection refused error.
- Add the following lines to ~oracle/.bash_profile:
export ORACLE_BASE=/ora8/m01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/8.1.6
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=ora8
export ORACLE_TERM=vt100
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
umask 022
Save the file by typing CTRL-X CTRL-S
and then exit by
typing CTRL-X CTRL-C
. Alternatively, use the
menus.
Make sure that you do not add any lines like the following
# NLS_LANG=american
# export NLS_LANG
These lines will change the Oracle date settings and will break
the ArsDigita Community System (ACS) because ACS depends on the
ANSI date format, YYYY-MM-DD dates.
- Log out as oracle
$ exit
- Log back in as oracle and double check that your environment variables are as intended
$ su - oracle
$ env | grep ORA
If it worked, you should see:
ORACLE_SID=ora8
ORACLE_BASE=/ora8/m01/app/oracle
ORACLE_TERM=vt100
ORACLE_HOME=/ora8/m01/app/oracle/product/8.1.6
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
If not, try adding the files to ~oracle/.bashrc
instead
of .bash_profile
. Then
logout and log back in again. Also, be certain you are doing
su -
and not just su
. The
-
means that .bashrc
and
.bash_profile
will be evaluated.
Make sure that /bin, /usr/bin, and
/usr/local/bin are in your path by typing:
$ echo $PATH
/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/oracle/bin:/ora8/m01/app/oracle/product/8.1.6/bin
If they are not, then add them to the .bash_profile by changing the
PATH statement above to PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
TOP
Installing Oracle 8.1.6 Server
Congratulations, you have just installed Oracle 8.1.6 Server!
However, you still need to create a database which can take about an
hour of non-interactive time, so don't quit yet.
TOP
Creating the First Database
This step will take you through the steps of creating a customized
database. Be warned that this process takes about an hour on a
Pentium II with 128 MB of RAM.
-
Make sure you are running X. Open up a terminal and su to oracle and
then run the
dbassist
program.
$ xhost +localhost
$ su - oracle
; Enter oracle password
$ export DISPLAY=localhost:0.0
$ dbassist
- The "Welcome" screen in the Oracle Database Configuration Agent (ODCA)
- Select "Create a database"
- Click "Next"
- The "Select database type" screen in the ODCA
- Select "Custom"
- Click "Next"
- The "Primary Database Type" window in ODCA
- Select "Multipurpose"
- Click "Next"
- The "concurrent users" screen of the ODCA
- Select "60" concurrent users.
- Click "Next"
- Select "Dedicated Server Mode", click "Next"
- Accept all of the options, and click "Next"
Oracle Visual Information Retrieval may be grayed out. If so,
you can ignore it; just make sure that everything else is checked.
- For "Global Database Name", enter "ora8"; for "SID", also enter "ora8" (it should do this automatically). Click "Next".
- Accept the defaults for the next screen (control file location). Click "Next"
- Go to the "temporary" and "rollback" tabs, and change the Size (upper-right text box) to 150MB. Click "Next"
- Increase the redo log sizes to 10000K each. Click "Next"
- Use the default checkpoint interval & timeout. Click "Next"
- Increase "Processes" to 100; "Block Size" to 4096 (better for small Linux boxes; aD uses 8192 on the big Solaris machines).
- Accept the defaults for the Trace File Directory. Click "Next"
- Finally, select "Save information to a shell script" and click "Finish" (We're going to examine the contents of this file before creating our database.)
- Click the "Save" button. Oracle will
automatically save it to the correct directory and with the
correct file name. This will likely be
/ora8/m01/app/oracle/product/8.1.6/assistants/dbca/jlib/sqlora8.sh
- It will alert you that the script has been saved successfully.
- Now we need to customize the database configuration a bit.
While still logged on as oracle, edit the database
initialization script (run when the db loads). The scripts are
kept in
$ORACLE_HOME/dbs
and the name of the script
is usually initSID.ora
where SID is the SID
of your database. Assuming your $ORACLE_HOME matches our
default of /ora8/m01/app/oracle/product/8.1.6
, the
following will open the file for editing.
$ emacs /ora8/m01/app/oracle/product/8.1.6/dbs/initora8.ora
- Add the following line to the end:
nls_date_format = "YYYY-MM-DD"
- Now find the
open_cursors
line in the file. If
you're using emacs
scroll up to the top of the
buffer and do CTRL-S
and type
open_cursors
to find the line. The default is
100. Change it to 500.
open_cursors = 500
- Save the file. In emacs, do
CTRL-X CTRL-S
to save
followed by CTRL-X CTRL-C
to exit or use the menu.
- At this point, you are ready to initiate database creation. We
recommend shutting down X to free up some RAM unless you have
256 MB of RAM or more. You can do this quickly by doing a
CRTL-ALT-BACKSPACE
, but make sure you have saved
any files you were editing. You should now be returned to a
text shell prompt. If you get sent to a graphical login screen
instead, switch to a virtual console by doing
CRTL-ALT-F1
. Then login as oracle.
- Change to the directory where the database creation script is
and run it:
$ cd /ora8/m01/app/oracle/product/8.1.6/assistants/dbca/jlib
$ ./sqlora8.sh
In some instances, Oracle will save the file to
/ora8/m01/app/oracle/product/8.1.6/assistants/dbca
Try running the script there if your first attempt does not
succeed.
- Your database will now be built. It will take > 1 hour - no
fooling. You will see lots of errors scroll by (like:
"ORA-01432: public synonym to be dropped does not exist")
Fear not, this is normal.
Eventually, you'll be returned to your shell prompt. In the
meantime, relax, you've earned it.
TOP
Acceptance Test
For this step, open up a terminal and su to oracle as usual. You
should be running X and Netscape for this phase.
- You need to download the "Oracle Acceptance Test"
file. It's available here and at http://photo.net/wtr/oracle/acceptance-sql.txt. Save
the file to
/tmp
- In the oracle shell, copy the file.
$ cp /tmp/acceptance-sql.txt /tmp/acceptance.sql
- Once you've got the acceptance test file all set, stay in your term and type the following:
$ sqlplus system/manager
SQL*Plus should startup. If you get an ORA-01034: Oracle not
Available
error, it is because your Oracle instance is not
running. You can manually start it as the oracle
user.
$ svrmgrl
SVRMGR> connect internal
SVRMGR> startup
- Now that you're into SQL*Plus, change the default passwords for system, sys, and ctxsys to "alexisahunk" (or to something you'll remember):
SQL> alter user system identified by alexisahunk;
SQL> alter user sys identified by alexisahunk;
SQL> alter user ctxsys identified by alexisahunk;
- Verify that your date settings are correct.
SQL> select sysdate from dual;
If you don't see a date that fits the format
YYYY-MM-DD
,
please read this information.
- At this point we are going to hammer your database with an
intense acceptance test. This usually takes around 30 minutes.
SQL> @ /tmp/acceptance.sql
; A bunch of lines will scroll by. You'll know if the test worked if
; you see this at the end:
SYSDATE
----------
2000-06-10
SQL>
Many people encounter an error regarding maximum key
length
:
ERROR at line 1:
ORA-01450: maximum key length (758) exceeded
This error occurs if your database block size is wrong and is usually
suffered by people trying to load the ACS into a pre-existing
database. Unfortunately, the only solution is to create a new
database with a block size of at least
4096. For instructions on how to do this, see
Creating a new database above. You can set the
parameter using the dbassist
program or by setting
the
DB_BLOCK_SIZE
parameter in your database's creation
script.
If there were no errors, then consider yourself fortunate. Your Oracle installation is working.
TOP
Automating Startup & Shutdown
You will want to automate the database startup and shutdown
process. It's probably best to have Oracle spring to life when you
boot up your machine.
- Oracle includes a script called dbstart that can be used to automatically
start the database. Unfortunately, the script shipped in the Linux distribution does not
work out of the box. The fix is simple. Follow these directions to apply it. First, save
dbstart to /tmp. Then login, and su to oracle.
$ cp /tmp/dbstart.txt /ora8/m01/app/oracle/product/8.1.6/bin/dbstart
$ chmod 755 /ora8/m01/app/oracle/product/8.1.6/bin/dbstart
- While you're logged in as oracle, you should configure the oratab file
to load your database at start. Edit the file /etc/oratab:
- You will see this line.
ora8:/ora8/m01/app/oracle/product/8.1.6:N
By the way, if you changed the service name or have multiple
databases, the format of this file is
service_name:$ORACLE_HOME:Y || N (for
autoload)
- Change the last letter from "N" to
"Y". This tells Oracle that you want the database to
start when the machine boots. It should look like this.
ora8:/ora8/m01/app/oracle/product/8.1.6:Y
- Save the file & quit the terminal.
- You need a script to automate startup and shutdown. Save
oracle8i.txt in /tmp. Then login as
root and install the script.
$ su -
# cp /tmp/oracle8i.txt /etc/rc.d/init.d/oracle8i
# chown root.root /etc/rc.d/init.d/oracle8i
# chmod 700 /etc/rc.d/init.d/oracle8i
- Test the script by typing the following commands and checking
the output.
# /etc/rc.d/init.d/oracle8i stop
Oracle 8i auto start/stop
Shutting Oracle8i:
Oracle Server Manager Release 3.1.6.0.0 - Production
Copyright (c) 1997, 1999, Oracle Corporation. All Rights Reserved.
Oracle8i Enterprise Edition Release 8.1.6.1.0 - Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
SVRMGR> Connected.
SVRMGR> Database closed.
Database dismounted.
ORACLE instance shut down.
SVRMGR>
Server Manager complete.
Database "ora8" shut down.
# /etc/rc.d/init.d/oracle8i start
Oracle 8i auto start/stop
Starting Oracle8i:
SQL*Plus: Release 8.1.6.0.0 - Production on Sat Jun 10 17:56:02 2000
(c) Copyright 1999 Oracle Corporation. All rights reserved.
SQL> Connected to an idle instance.
SQL> ORACLE instance started.
Total System Global Area 85004272 bytes
Fixed Size 69616 bytes
Variable Size 76374016 bytes
Database Buffers 8388608 bytes
Redo Buffers 172032 bytes
Database mounted.
Database opened.
SQL> Disconnected
Database "ora8" warm started.
- If it worked, then run these commands to make the startup and
shutdown automatic.
# cd /etc/rc.d/init.d/
# chkconfig --add oracle8i
# chkconfig --list oracle8i
; You should see:
oracle8i 0:off 1:off 2:off 3:on 4:on 5:on 6:off
- You also need some scripts to automate startup and shutdown of
the Oracle8i listener. The listener is a name server that allows
your Oracle programs to talk to local and remote databases using a
standard naming convention. It is required for Intermedia Text
and full site search.
Download these three scripts into /tmp
Now issue the following commands (still as root).
# su - oracle
# cp /tmp/startlsnr.txt /ora8/m01/app/oracle/product/8.1.6/bin/startlsnr
$ cp /tmp/stoplsnr.txt /ora8/m01/app/oracle/product/8.1.6/bin/stoplsnr
$ chmod 700 /ora8/m01/app/oracle/product/8.1.6/bin/startlsnr
$ chmod 700 /ora8/m01/app/oracle/product/8.1.6/bin/stoplsnr
$ exit
; You should now be back as root.
# cp /tmp/listener8i.txt /etc/rc.d/init.d/listener8i
# cd /etc/rc.d/init.d
# chmod 700 listener8i
Test the listener automation by running the following commands
and checking the output.
# ./listener8i stop
Oracle 8i listener start/stop
Shutting down Listener for 8i:
LSNRCTL for Linux: Version 8.1.6.0.0 - Production on 10-JUN-2000 18:28:49
(c) Copyright 1998, 1999, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))
The command completed successfully
# ./listener8i start
Oracle 8i listener start/stop
Starting the Listener for 8i:
LSNRCTL for Linux: Version 8.1.6.0.0 - Production on 10-JUN-2000 18:28:52
(c) Copyright 1998, 1999, Oracle Corporation. All rights reserved.
Starting /ora8/m01/app/oracle/product/8.1.6/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 8.1.6.0.0 - Production
System parameter file is /ora8/m01/app/oracle/product/8.1.6/network/admin/listener.ora
Log messages written to /ora8/m01/app/oracle/product/8.1.6/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 8.1.6.0.0 - Production
Start Date 10-JUN-2000 18:28:53
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /ora8/m01/app/oracle/product/8.1.6/network/admin/listener.ora
Listener Log File /ora8/m01/app/oracle/product/8.1.6/network/log/listener.log
Services Summary...
PLSExtProc has 1 service handler(s)
ora8 has 1 service handler(s)
The command completed successfully
This test will verify that the listener is operating normally. Login
into the database using the listener naming convention.
sqlplus username/password@SID
# su - oracle
$ sqlplus system/alexisahunk@ora8
SQL> select sysdate from dual;
SYSDATE
----------
2000-06-10
SQL> exit
$ exit
#
Now run chkconfig
on the listener8i
script.
# cd /etc/rc.d/init.d/
# chkconfig --add listener8i
# chkconfig --list listener8i
listener8i 0:off 1:off 2:off 3:on 4:on 5:on 6:off
- Test the automation
As a final test, reboot your computer and make sure Oracle comes up.
You can do this by typing
# /sbin/shutdown -r -t 0 now
Log back in and ensure that Oracle started automatically.
$ su - oracle
$ sqlplus system/alexisahunk@ora8
SQL> exit
Congratulations, your installation of Oracle 8.1.6 is complete.
TOP
Appendix A: Troubleshooting Oracle Dates
Oracle has an internal representation for storing the data based on the
number of seconds elapsed since some date. However, for the purposes
of inputing dates into Oracle and getting them back out, Oracle needs
to be told to use a specific date format. By default, it uses an
Oracle-specific format which isn't copacetic. You want Oracle to use
the ANSI-compliant date format which is of form 'YYYY-MM-DD'.
To fix this, you should include the following line in
$ORACLE_HOME/dbs/initSID.ora
or for the default
case, $ORACLE_HOME/dbs/initora8.ora
nls_date_format = "YYYY-MM-DD"
You test whether this solved the problem by firing up
sqlplus
and typing:
SQL> select sysdate from dual;
You should see back a date like 2000-06-02
. If some
of the date is chopped off, i.e. like 2000-06-0
, everything
is still fine. The problem here is that sqlplus is simply
truncating the output. You can fix this by typing:
SQL> column sysdate format a15
SQL> select sysdate from dual;
If the date does not conform to this format, double-check that you
included the necessary line in the init scripts. If it still isn't
working, make sure that you have restarted the database since adding
the line if you didn't do it prior to database creation.
If you're sure that you have restarted the database since adding the
line, check your initialization scripts. Make sure that the following
line is not included:
export nls_lang = american
Setting this environment variable will override the date setting. Either
delete this line and login again or add the following entry to your
login scripts after the nls_lang
line:
export nls_date_format = 'YYYY-MM-DD'
Log back in again. If adding the nls_date_format
line
doesn't help, then let the
maintainer of this document know about it.
TOP
Appendix B: Useful Procedures
- Dropping a tablespace
- Run sqlplus as the dba:
$ sqlplus system/changeme
- To drop a user and all of the tables and data owned by that user:
SQL> drop user oracle_user_name cascade;
- To drop the tablespace: This will delete everything in the tablespace overriding
any referential integrity constraints. Run this command only if you want to
clean out your database entirely.
SQL> drop tablespace table_space_name including contents cascade constraints;
For more information on Oracle, please consult the
documentation.
TOP
Appendix C: Defaults
We used the following defaults while installing Oracle.
Variable | Value | Reason |
ORACLE_HOME | /ora8/m01/app/oracle/product/8.1.6 | This is
the default Oracle installation directory.
|
ORACLE_SERVICE | ora8 | The service name is a
domain-qualified identifier for your Oracle server.
|
ORACLE_SID | ora8 | This is an identifier for your Oracle
server.
|
ORACLE_OWNER | oracle | The user who owns all of the oracle
files.
|
ORACLE_GROUP | dba | The special oracle group. Users in the
dba group are authorized to do a connect internal
within svrmgrl to
gain full system access to the Oracle system.
|
bquinn@arsdigita.com
Last modified: $Id: //websites/developer/prd/packages/acs-core-docs/www/install-guide/oracle.html#1 $