/ 
/ $Header: readme.txt 6003604.2 92/10/07 11:54:12 jli Generic<base> $ 
/ 
                             README FILE    

            PLEASE READ THIS FILE BEFORE INSTALLING ORACLE.

                       VERSION 6.0.36.4 (6.2)
                      Updated 10th September 1992

   As of version 6.0.35.0 and 6.2.8.0, the version 6.0 and 6.2 products share
the same base RDBMS code and include all earlier features and bugfixes included
in both version 6.0 and 6.2. 

*****************************************************************************
*****   NOTE: IT IS IMPORTANT TO READ SECTION B IF YOU ARE UPGRADING    *****
*****    FROM A VERSION EARLIER THAN 6.0.35.0 OR 6.2.8.0 OF ORACLE.     *****
*****************************************************************************

   This README File describes several changes to the ORACLE RDBMS Version 6 not
covered in the revised (October 1990) DBA Guide or other RDBMS documentation.
The following topics are addressed in this file: 

A-  Migration from Earlier Versions of ORACLE to V6
B-  Upgrading From an Earlier V6 Release to this version
C-  Preparing for Version 7
D-  Documentation Clarification
E-  Version 6 Documentation
F-  Large SQL.BSQ for a large database.
G-  Summary of new features and fixed bugs

  
A-  Migration from Earlier Versions of ORACLE to V6
---------------------------------------------------  

1-  A new optional feature of IMPORT allows you to review the names and storage
allocation of indexes on a database.  To use this feature, first IMPORT the
tables without their indexes, using the INDEXES=N keyword.  Then execute IMPORT
using the new INDEXFILE=<filename> feature: 

     IMPORT username/password INDEXFILE=<filename>

   This will cause the index names to be written to a file called
<filename>.SQL, creating a SQL script.  This file will contain a list of CREATE
INDEX statements with storage parameters that  can be used to recreate the
database indexes.  You can modify  the file before using it to create all the
indexes for the newly  imported database. 

2-  The SYSTEM.DUAL table that SQL*Forms often references in triggers is now
called SYS.DUAL.  You should reference the public synonym, DUAL, that is
created by CATALOG.SQL. 

3-  Version 6 of ORACLE supports a maximum numeric precision of 38 digits.  The
maximum in Version 5 was also 38 digits but up to 42 digits may have been
specified (with no additional precision over 38 digits). 

   If you specified a precision of more than 38 digits, you must redefine the
field(s) with a valid precision before exporting the V5 table.  Otherwise, you
will not be able to import it into V6. 

4-  Indexes may not have the same name as tables, synonyms, or clusters in
Version 6.  See section A-1 earlier in this document for a description of how
to use IMPORT to rename your indexes. 


B- Upgrading from an Earlier V6 Release to this version
-------------------------------------------------------

1-  Upgrading from a version earlier than 6.0.35.0/6.2.8.0:

   This section describes the procedures necessary to upgrade your database
from a version of ORACLE earlier than 6.0.35.0 or 6.2.8.0. 

   Prior to upgrading, you must determine whether you have tablespaces which
are offline.  If you have offline tablespaces, the upgrade procedure varies
depending on the version of the RDBMS from which you are upgrading. 
    
NOTE: If you are upgrading from any 6.2 release of the RDBMS, the first three
steps are not required; proceed directly to step 4. 
    
1) Determine if there are any offline tablespaces by issuing the following
   statements from SQLDBA:
     
      SQLDBA> connect internal
      SQLDBA> select ts#,name from ts$ where online$ = 2;
    
      If there are no rows returned, then you do not have offline tablespaces
   and may continue with the upgrade.  Proceed to step 4. 
    
      If there are rows returned, you must perform different steps depending on
   the version of the RDBMS that you are running: 
    
      If you are running a version of the RDBMS prior to 6.0.34.3, go to step 3.
    
      If you are running RDBMS V6.0 with a version greater than or equal to
   6.0.34.3, go to step 2. 
    
2) Determine if the data in the offline tablespaces is in a consistent state
   by issuing the following statements from SQLDBA: 
    
      SQLDBA> connect internal
      SQLDBA> select indx ts#, kttvstnm name 
                 from x$kttvs where kttvstnm is not null;
    
      If there are no rows returned, then all offline tablespaces are in a
   consistent state.  Proceed to step 4. 
    
      If there are rows returned, start up the database in DBA mode, bring all
   tablespaces returned by the above query online and then take them offline
   without performing ANY update operations.  This forces all data in each
   offline tablespace to be in a consistent state. 
    
      Repeat step 2 until no rows are returned by the query.
    
      Note that you may bring each tablespace online and offline individually;
   they do not all have to be online at one time. 
    
      If you are unable to complete this step (i.e. rows are still returned
   from the above query), then please call Oracle Customer Support - DO NOT
   continue the upgrade; it will render your database useless. 
    
3) If you are running a version of the RDBMS prior to 6.0.34.3 and there are
   offline tablespaces you have three choices: 
    
   a) If you can do so, bring all offline tablespaces online and offline (as
      in step 2) above).  You may do them one at a time. The x$kttvs table does
      not exist prior to 6.0.34.3, so you will not be able to query it to make
      sure that the data in the tablespace is in a consistent state.  Make sure
      that NO modifications (i.e. CREATE, DROP, INSERT, UPDATE, DELETE, etc.)
      are done to the objects in the tablespaces while they are online. 

   b) Upgrade to 6.0.34.3 and go to step 2.

   c) If you cannot perform a) or b) then call Oracle Customer Support.
      DO NOT continue the upgrade; it will render your database useless.
 
4) Shutdown the database using SHUTDOWN NORMAL (not SHUTDOWN IMMEDIATE or 
   ABORT) to ensure data consistency.

5) Backup the database to disk or tape, including all of the database files,
   redo log files and control files.  (See the backup and recovery chapters in
   the Oracle Database Administrator's Guide for more information.)  If an
   offline backup cannot be done, do an online backup prior to shutting down
   the database in step 4). 

6) Install the new software.

7) Start the database up.

8) Backup the database again, as in step 5).  If an offline backup is done, the
   database must be shut down first.  If an offline backup cannot be done, do
   an online backup. 

9) If you wish to create instance free lists (these are only useful if running
   the parallel server) then you must set the INIT.ORA parameter
   "allow_freelist_groups = true".  Note: creating instance free lists makes it
   impossible to downgrade to previous 6.0 versions. 

   NOTE: Should it be necessary to apply archived redo logs generated using
   versions of the RDBMS less than 6.0.35.0/6.2.8.0 to a database running
   6.0.35.0/6.2.8.0, please call Oracle Customer Support for assistance. 


Downgrading from RDBMS 6.0.35.0+/6.2.8.0+ to previous Version 6.0 releases:

   Once you have upgraded to RDBMS version 6.0.35.0/6.2.8.0 or later you may
only downgrade to Version 6.0 versions of the RDBMS greater than or equal to
6.0.32.1.  However, you may NOT downgrade if you have performed any of the
following operations while using version 6.0.35.0+/6.2.8.0+: 

   a) created instance free lists 

   b) taken any tablespaces offline 

   c) started up the database in parallel server mode (i.e. STARTUP PARALLEL)

   If you desire to downgrade from RDBMS 6.0.35.0+/6.2.8.0+ to a previous
Version 6.0 release, go to step 1), below. 


Downgrading from RDBMS 6.0.35.0+/6.2.8.0+ to previous Version 6.2 releases:

   Once you have upgraded to RDBMS version 6.0.35.0+/6.2.8.0+ you may only
downgrade to Version 6.2 versions of the RDBMS greater than or equal to
6.2.6.3.  However, you may NOT downgrade if you have taken any tablespaces
offline while running the database with 6.0.35.0+/6.2.8.0+. 

   If you desire to downgrade from RDBMS 6.0.35.0+/6.2.8.0+ to a previous
Version 6.2 release, go to step 1), below. 


Procedure for downgrading from RDBMS 6.0.35.0+/6.2.8.0+ to either 6.0 or 6.2:

1) Shutdown the database using SHUTDOWN NORMAL (not SHUTDOWN IMMEDIATE or
   ABORT) to ensure data consistency.

2) Backup the database to disk or tape, including all of the database files,
redo log files and control files.  (See the backup and recovery chapters in the
Oracle Database Administrator's Guide for more information.)  If an offline
backup cannot be done, do an online backup prior to shutting down the database
in step 4). 

3) Install or restore the previous RDBMS software.

4) Start the database up using the previous RDBMS software.

5) Backup the database again, as in step 5).  If an offline backup is done, the
database must be shut down first. If an offline backup cannot be done, do an
online backup. 

---

2-  A tablespace now cannot be dropped if it contains a referenced table (such
as from a foreign key constraint on another table which references a table in
the tablespace).  You must first drop the reference and then you may drop the
tablespace. 

3-  The database format of this version has changed from versions 6.0.24 and
earlier.  To save data from 6.0.24 and earlier, you must recreate your database
and EXPORT/IMPORT. 

4-  Users of V6 releases earlier than 6.0.27 who are upgrading to this release
and have EVER set the prebuild threshold to other than the default, 0, should
EXPORT/IMPORT due to the possibility of block corruption.  You can use the
SQL*DBA command SHOW PARAMETERS to find out what your
LOG_ENTRY_PREBUILD_THRESHOLD INIT.ORA parameter is currently set to. 

5- A new column has been added to the V$SESSION view.  When upgrading from
version 6.0.31.1 or earlier, this view must be dropped and recreated for it to
be available (or for the MONITOR USER, STAT, or IO to be available). The
following steps should be performed by user SYS: 
    DROP VIEW V_$SESSION;
    CREATE VIEW V_$SESSION AS SELECT * FROM V$SESSION;
    DROP PUBLIC SYNONYM V$SESSION;
    CREATE PUBLIC SYNONYM V$SESSION FOR V_$SESSION;

6-  For increased security, the unencrypted password may be removed from the
DBA_DB_LINKS dictionary view in version 6.0.31.2 and later. Recreate this view
as follows to perform this change: 
   DROP VIEW DBA_DB_LINKS;
   CREATE VIEW DBA_DB_LINKS (OWNER, DB_LINK, USERNAME, HOST, CREATED)
      AS SELECT U.NAME, L.NAME, L.USERID, L.HOST, L.CTIME
            FROM SYS.LINK$ L, SYS.USER$ U
            WHERE L.OWNER# = U.USER#;

7-  Beginning with version 6.0.32.3, Export requires several modified views. 
If you are upgrading from an earlier release of Version 6 you should update
these views by logging on to ORACLE as user SYS and running the EXPVEW SQL
script. 

8-  If your database was created prior to Version 6.0.32.4, the performance of
ORACLE auditing can be increased by changing the indexes.  Note that certain
queries on the AUDIT_TRAIL may take longer.  Change the indexes as follows: 
	CONNECT INTERNAL;
	DROP INDEX I_AUD1;	/* WAS (ACTION)      */
	CREATE INDEX I_AUD1 ON AUD$(SESSIONID, SES$TID);
	DROP INDEX I_AUD2;	/* WAS (RETURNCODE)  */
	DROP INDEX I_AUD3;	/* WAS (OBJ$CREATOR) */
	DROP INDEX I_AUD4;	/* WAS (USERID)      */

9-  The performance of synonym drops can be improved by adding the following
index (from user SYS): 
        CREATE INDEX I_XREF1 ON XREF$(OWNER, NAME)

10- Because of a log format change, online redo logs and archive logs generated
using V6.0 of the RDBMS may not be used on V6.2.  This means that you *MUST*
take a full backup of your database after a SHUTDOWN NORMAL with Version 6.0
and before starting up Version 6.2 in order to be able to guarantee recovery in
case of media failure. 

11- If you are upgrading from Version 6.0.32.3 or earlier, you must re-run the
EXPVEW.SQL script before performing any exports. 

12- The V$WAITSTAT view no longer contains the OPERATION and RANGE columns as 
they contained no useful information.


C- Preparing for Version 7
--------------------------

1-  Version 7 will require the constraint name before the constraint
definition, as defined by ANSI standard syntax.  This is a change from V6. 
Thus the following is an example of the correct syntax for V7: 
	CREATE TABLE dept
	       (deptno NUMBER CONSTRAINT pk_dept PRIMARY KEY,
	        ...  )

2- Version 6 introduces the GRANT RESOURCE (quota) format (FORM II of the GRANT
statement).  In Version 7, a different syntax will be used to grant specific
quotas on tablespaces.  Keep this in mind when writing programs that use FORM
II of the GRANT statement. 

   Specifying GRANT RESOURCE without the keyword quota means the list of users
have unlimited access to all tablespaces. The GRANT RESOURCE command without
the quota keyword will continue to be supported in future releases of ORACLE. 

3- V7 will be more stringent than V6 in rejecting two types of semantically
undefined outer-join queries.

   V7 will issue an error (1719) if the outer-join (+) operator is used in an
operand to an OR.  For example, the following predicate is illegal: 

  s.c(+) = t.c OR s.y = t.y

   The user can rephrase queries using the UNION or UNION ALL operators to
workaround this restriction.  Note that the outer-join operator may also not be
used in an operand to IN, since "a IN (b,c)" is equivalent to "a = b OR a = c."

   The syntax
      <column> (+) <relop> [ ANY | ALL | IN ] <subquery>

   where <relop> is any relational operator, is accepted in v6, but the (+)
operator is ignored.  In v7, use of this syntax produces an error (1799).  To
achieve the effect of v6, the user should simply remove the (+).  If an
outer-join is really required, then the <subquery> must be redefined as a view
and an outer-join may then be performed with the view. 

4- Several older OCI [HLI] routines will no longer be supported in the Version
7.0 OCI libraries, as documented in Appendix A of the Programmer's Guide to the
OCIs, Version 6.0 (p/n 5411-V6.0).  The calls are: 

        OBIND, OBINDN   Superceded by OBNDRV, OBNDRN
        ODFINN          Superceded by ODEFIN
        ODSRBN          Superceded by ODSC, ODESCR
        OLOGON          Superceded by OLON, ORLON
        OSQL            Superceded by OSQL3

   If you wish to preserve the functionality of existing OCI applications which
use the old calls, you may code your own interface routines, which map the old
call name and actual parameters to a current OCI call, taking care to add the
additional parameters that the current OCI calls require. 


D- Documentation Clarification
------------------------------

1-  The outer joins operator (+) may not be an operand to an OR. Furthermore,
outer join predicates of the form: 
   col (+) relop { ANY | ALL } subquery
are also illegal.  Although errors are not issued in V6, unpredictable results
occur.  An error will be issued in a future version of ORACLE (see Section
C-3). 

2-  Correction to Appendix B of October 1990 Revision of Database
Administrator's Guide -- page B-6: the first two paragraphs of the section
"Characteristics of All Displays" should read as follows: 

Characteristics of   The sample displays in this appendix come from a VAX/
All Displays         VMS displays and may vary by operating system.
 
                     The date and time of the display appear in the upper
                     right hand corner.  The current node and instance 
                     identifiers appear in the upper left hand corner.

3-  The SET and SHOW commands should include additional information for the 
INSTANCE and AUTORECOVERY options as follows:

SET command
-----------

Purpose     Sets the default instance for the current SQL*DBA session to the
            specified instance name.  The default instance is used for the the
            STARTUP, SHUTDOWN, and CONNECT commands when no instance is
            specified.  Also used to specify whether the RECOVER command should
            prompt for archived redo log filenames. 

Syntax      SET { INSTANCE [instance_path | LOCAL] | AUTORECOVERY [ON | OFF] }

Keywords    instance-path  sets the default instance for your SQL*DBA session
and                        to the specified instance path.  The default 
Parameters                 instance is used for the STARTUP, SHUTDOWN, and 
                           CONNECT commands when no instance is specified.  The
                           maximum length of the instance-path is 64
                           characters.  You can use any valid SQL*Net connect
                           string as the instance path.  See your Installation
                           and User's Guide for a complete description of how
                           your operating system specifies connect strings. 

            LOCAL          resets your default instance to the default value
                           for your operating system.  See your Installation
                           and User's Guide for a description of how to set the
                           initial default instance. 

            AUTORECOVERY   ON causes the RECOVER command to prompt you with the
                           filenames of archived redo log files needed during
                           media recovery.  OFF, the default, requires that you
                           enter the filenames manually. The filenames
                           displayed when AUTORECOVERY is ON are drived from
                           the value of the INIT.ORA parameter LOG_ARCHIVE_DEST.

Usage Notes    You may not issue a SET INSTANCE command while connected to a 
            database.
 
               The SET INSTANCE command specifies the default instance for the
            duration of your session.  (Note:  the instance to which you are
            currently connected can be different from the default instance.) 

Examples    SET INSTANCE LOCAL
            sets the default instance to the default value for your 
            operating system.

            SET INSTANCE
            has same effect as SET INSTANCE LOCAL

            SET INSTANCE D:DEVVMS-PROD
            sets the default instance to DEVVMS-PROD using DECNet

            SET AUTORECOVERY ON
            causes the RECOVER command to prompt you with a filename during
            media recovery.

SHOW command
------------

Purpose     Shows the default instance or autorecovery mode.

Syntax      SHOW { INSTANCE | AUTORECOVERY }
            
Usage Notes    The SHOW INSTANCE command displays the connect string for the
            default instance.  SHOW INSTANCE returns the value "local" if you
            have not used SET INSTANCE or if you have used the LOCAL option of
            the SET INSTANCE command. 

Examples    SHOW INSTANCE
            Instance              local
 
            SHOW INSTANCE
            Instance              D:DEVVMS-PROD

            SHOW AUTORECOVERY
            Autorecovery          OFF

4-  The "Prerequisites" of the ARCHIVE LOG command on page B-27 should read as
follows: 

Prerequisites     You must be connected to an open ORACLE database with the DBA
               privilege.

   The syntax of the ARCHIVE LOG command on page B-27 should read as follows:
 
Syntax         ARCHIVE LOG {   { LIST | STOP }
                             | { START | integer | NEXT | ALL }
                               [ 'filename' ]
                            }

   The second paragraph of the 'filespec' keyword of the ARCHIVE LOG command on
page B-28 should read as follows: 

   If not specified in the command line, the archive destination is derived
from the INIT.ORA parameter LOG_ARCHIVE_DEST.  The command ARCHIVE LOG START
'filename' causes the filename specified to become the new default archive
destination  for the life of the instance.  Specifying a filename with the NEXT
or ALL options, or with a specific log number causes only the files archived
with that command to be written to the temporary destination specified by
'filename'.  Specifying a temporary destination does not change the default
archive destination. 

5-  The following information concerning nulls should be added to the SQL
Language Reference Manual (02/90 edition) on page 3-25: 

   If a row lacks a data value for a particular column, that value is said to
be null.  A column of any datatype can contain nulls unless restricted by a NOT
NULL.  A null is equivalent to a character value with a length of 0.  You
should use a null when the actual data value is unknown, or when a value would
not be meaningful. 

   You can use the NVL function to return another value when a null occurs. For
example, the expression NVL(COMM,0) returns either 0 if COMM is null or the
value of COMM if COMM is not null. 

   The only comparison operators you should use with nulls are IS NULL and IS
NOT NULL.  If you use any other operator with nulls and the result depends on
the value of the null, the result is unknown.  Since null represents a lack of
data, a null cannot be equal or unequal to any value or to another null. 

   For the truth tables showing the results of logical expressions containing
nulls, see Tables 4-1 and 4-2 beginning on page 4-5. 

6-  Performing Open Database, Offline Tablespace Recovery
    -----------------------------------------------------

   Use the following steps to perform either open database, offline tablespace
recovery or open database, offline tablespace, individual data file recovery.
At this point, an open database has experienced a media failure, and the
database remains open while the undamaged data files remain online and
available for use and the damaged data files are automatically taken offline by
the ORACLE RDBMS. 

   Note:  Neither of the following procedures can be used to perform complete
media recovery on the data files of the SYSTEM tablespace.  If the media
failure damages any data files of the SYSTEM tablespace, the ORACLE RDBMS
automatically shuts down the database. 

Step 1.  The starting point for this recovery operation can vary, depending on
whether or not you have left the database open after the media failure has
occurred. 

Step 1a.  If the database has been shut down, restart a new instance, and mount
and open the database.  Once the database is open, take all tablespaces offline
that contain damaged data files.  Follow Step 1b for this procedure. 

Step 1b.  If the database is open, with all the damaged data files of the
database offline, take all tablespaces offline that contain damaged data files.
The ORACLE RDBMS should indicate the damaged data files by the error messages
it returns. 

Step 2.  Correct the hardware problem that caused the media failure.  If the
hardware problem cannot be repaired quickly, database recovery can proceed by
restoring damaged files to an alternative storage device.  Proceed to Step 3. 

Step 3.  If files are permanently damaged, restore the most recent backup files
(taken as part of either a full or partial backup) of only the data files
damaged by the media failure.  Do not restore any data files not damaged by the
media failure, or any online redo log files or control files.  If the hardware
problem has been repaired and the data files can be restored to their original
location(s), do so, and skip Step 4 of this procedure; if the hardware problem
persists, restore the data files to an alternative storage device of the
database server and perform Step 4 next. 

Step 4.  If one or more damaged data files were restored to alternative
locations in Step 3, the new location of these files must be indicated to the
control file of the associated database. 

Step 5.  Depending on the type of complete media recovery procedure desired,
follow Step 5a or 5b after connecting as INTERNAL. 

Step 5a.  Use SQL*DBA to start offline tablespace recovery of all damaged data
files in one or more offline tablespaces using the RECOVER TABLESPACE
statement.  Skip to Step 6 to continue the offline tablespace recovery
operation. 

Step 5b.  Use SQL*DBA to recover one or more damaged data files in an offline 
tablespace with the RECOVER DATAFILE statement.

   Note:  Multiple, concurrent sessions can be used to simultaneously recover a
damaged data file in each session.  If many data files need recovery, this
method can potentially speed up the media recovery process.  If this option is
used, make sure that all damaged data files are recovered.  Each session
behaves as in Steps 6 and 7. 

Step 6.  The ORACLE RDBMS now begins the roll forward phase of media recovery
by applying the necessary redo log files (archived and online) to reconstruct
the restored data file(s). 

   The ORACLE RDBMS continues to apply archived redo log files until all
required archived redo log files have been applied to the restored data
file(s).  The online redo log files are then automatically applied to the
restored data file(s) to complete media recovery, as indicated by the following
message: 
	Media recovery complete.

   Note:  If no archived redo log files are required for complete media
recovery, the ORACLE RDBMS does not prompt for any.  Instead, all necessary
online redo log files are applied, and the "Media recovery complete." message
is returned. 

Step 7.  The damaged tablespaces of the open database are now recovered up to
the moment that media failure occurred.  The offline tablespaces can be brought
online using the SQL command ALTER TABLESPACE with the ONLINE option. 


E- Version 6 Documentation
--------------------------

1-  There is a new file, NEWERRS.TXT, included along with this file, that
describes additional errors not included in the ORACLE RDBMS Error Messages and
Codes Manual. 

2-  The following are the latest versions of ORACLE RDBMS documentation:
    *  ORACLE RDBMS Database Administrator's Guide, 3601-V6.0, 10/90
    *  SQL Language Reference Manual, 778-V6.0, 2/90
    *  ORACLE Utilties User's Guide, 3602-V6.0, 06/91
    *  ORACLE RDBMS Error Messages and Codes, 3605-V6.0, 02/90
    *  ORACLE RDBMS Performance Tuning Guide, 5317-V6.0, 02/90
    *  ORACLE RDBMS V6.2 DBA Guide - Addendum, 5990-V6.2, 03/91
    *  SQL Language Quice Reference Guide, 5421-V6.0, 01/90
    
3-  The ORACLE RDBMS V6.2 DBA Guide - Addendum is now available for the
Parallel Server.  This new publication includes the following topics: 
   *  The architecture of shared disk systems (such as the VAXcluster) and how
      ORACLE V6.2 takes advantage of that architecture
   *  The ORACLE Parallel Server architecture
   *  Parallel Server database administration
   *  Parallel Server performance tuning

4-  The ORACLE Utilities User's Guide has been updated (06/91) and now includes
information on Version 1.1 of SQL*Loader, plus additional information on
Version 1.0 of SQL*Loader. 



F-  Large SQL.BSQ for a large database.
---------------------------------------
   A version of SQL.BSQ, named LARGESQL.BSQ, creates the appropriate data
dictionary objects with much larger sizes.  This avoids fragmentation in very
large databases which could occur with the default SQL.BSQ. 

   LARGESQL.BSQ is NOT supported by Oracle Corp. 



G-  Summary of new features and fixed bugs
------------------------------------------

New features:
-------------

Version 6.0.34:

-  There is a new version of SQL*Loader, Version 1.1, available.  SQL*Loader 1.1
   has a new option, the direct path, which makes it possible to load data at 
   much higher speeds than with SQL*Loader 1.0.  Documentation can be found in 
   the 6/91 Utilities Guide.


-  The following OCI call has been added:

odescr/ODESCR
=============

Purpose
-------
   odescr describes select-list items for dynamic SQL queries.  The odescr
function returns internal datatype and size information for a specified
select-list item. 

C Syntax
--------
odescr(struct cda_def *cursor, int pos, long *dbsize,
      [short *dbtype], [char *cbuf],[long *cbufl],
      [long *dsize], [short *prec], [short *scale], [short *nullok]);

COBOL Syntax
------------
CALL "ODESCR" USING CURSOR, POS, DBSIZE, 
                     [DBTYPE], [CBUF], [CBUFL], [DSIZE],
                     [PREC], [SCALE], [NULLOK].

FORTRAN Syntax
--------------
CALL ODESCR(CURSOR, POS, DBSIZE, [DBTYPE], [CBUF], [CBUFL], [DSIZE],
1            [PREC], [SCALE], [NULLOK])

Comments
--------
The odescr function replaces the older odsc.  You can call odescr after an
osql3 call to obtain the following information about select-list items in a
query: 

           maximum size (dbsize | DBSIZE)
           internal datatype code (dbtype | DBTYPE)
           column name (cbuf | CBUF)
           length of the column name (cbufl | CBUFL | CBUFL)
           maximum display size (dsize | DSIZE | DSIZE)
           precision of numeric items (prec | PREC | PREC)
           scale of numerics (scale | SCALE | SCALE)
           whether null values are permitted in the column
                   (nullok | NULLOK | NULLOK)

   The odescr function is particularly useful for dynamic SQL queries, that is,
queries in which the number of select-list items, and their datatypes and
sizes, might not be known until runtime. 

   The return code fields of the cursor data area indicate success (zero) or
failure (non-zero) of the odescr call. 

   The odescr function uses a position index to refer to select-list items in
the SQL query statement.  For example, the SQL statement: 

   SELECT ename, sal FROM emp WHERE sal > :Min_sal

contains two select-list items: ename and sal.  The position index of sal is 2,
and ename's index is 1. 

   Note: In general, you cannot do a bind operation (using the functions obndrv
or obndrn) after an odescr operation.  If you have placeholders for bind
variables in a SQL SELECT statement, and you want to use odescr to obtain the
size or datatype of select-list items, you should do the bind operation first. 
If it is necessary to do a describe before doing a bind, you must reparse the
statement (using osql3) after the describe, and then do the binds. 

C Parameters
------------
Parameter Name                  Type                    Mode
---------------------------------------------------------------------------
cursor                          struct cda_def *        IN/OUT
pos                             int                     IN
dbsize                          long *                  OUT
dbtype                          short *                 OUT
cbuf                            char *                  OUT
cbufl                           long *                  IN/OUT
dsize                           long *                  OUT
prec                            short *                 OUT
scale                           short *                 OUT
nullok                          short *                 OUT

COBOL Parameters
----------------
Parameter Name                  Type                            Mode        
--------------------------------------------------------------------
CURSOR                          PIC X(64)                     IN/OUT
POS                             PIC S9(9) COMP                    IN
DBSIZE                          PIC S9(4) COMP                   OUT
DBTYPE                          PIC S9(4) COMP                   OUT
CBUF                            PIC X(n))                        OUT
CBUFL                           PIC S9(9) COMP                IN/OUT
DSIZE                           PIC S9(4) COMP                   OUT
PREC                            PIC S9(4) COMP                   OUT
SCALE                           PIC S9(4) COMP                   OUT
NULLOK                          PIC S9(4) COMP                   OUT

FORTRAN Parameters
------------------
Parameter Name                  Type                            Mode        
--------------------------------------------------------------------
CURSOR                          INTEGER*2 (32)                IN/OUT
POS                             INTEGER*4                         IN
DBSIZE                          INTEGER*2                        OUT
DBTYPE                          INTEGER*2                        OUT
CBUF                            CHARACTER*n                      OUT
CBUFL                           INTEGER*4                     IN/OUT
DSIZE                           INTEGER*2                        OUT
PREC                            INTEGER*2                        OUT
SCALE                           INTEGER*2                        OUT
NULLOK                          INTEGER*2                        OUT

cursor
------
   The address of a 64-byte cursor data area in the program.  The odescr
function uses the cursor address to reference a specific SQL query statement
which has been passed to ORACLE by a prior osql3 call. 

pos
--------
   The position index of the select-list item in the SQL query.  Each item is
referenced by position index, starting at 1 for the first (or left-most) item. 
If you specify a position index greater than the number of items in the
select-list, or less than 1, odescr returns a variable not in select-list error
in the return code fields of the cursor data area. 

dbsize
-------
   The address of a variable which receives the maximum size of the column, as
stored in the ORACLE data dictionary.  Values returned in dbsize are: 

   ORACLE Column Type              Value

   CHAR, VARCHAR, RAW              maximum length of the column in the table
                                   (i.e. CHAR(n) returns n)
   NUMBER                          22 (the internal length)
   DATE                            7 (the internal length)
   LONG, LONG RAW                  0
   ROWID                           13
   functions returning datatype
   1 (such as TO_CHAR())           same as the dsize parameter

dbtype
-------
   The address of a variable that receives the internal datatype code of the
select-list item.  See Table 3-1 in Chapter 3 of the OCI Guide for a list of
ORACLE internal datatype codes. 

cbuf
------
   The address of a buffer in the program that receives the name of the
select-list item (name of the column or wording of the expression).  The
program must allocate a string long enough to receive the item name. 

cbufl
----------
   The address of a variable that contains the length in bytes of cbuf, and
must be set before calling odescr.  If cbufl is not specified (that is,
passed as NULL), then the select-list item name is not returned.  The name is
truncated if it is longer than cbufl.  On return from odescr, cbufl
contains the length of the returned string in bytes. 

dsize
------
   The address of a variable that receives the maximum display size of the
string.  The dsize parameter is especially useful when functions, like SUBSTR
or TO_CHAR, are used to modify the representation of a column. 

prec
---------
   The address of a variable that returns the precision of numeric select-list
items.  Precision is the total number of digits of a number.  Pass this
parameter as NULL if you do not require the precision value. 

   See the table below in the description of 'scale' for a summary of the
precision and scale values returned by odescr.  See the Internal Datatypes
section in Chapter 3 of the OCI Guide for additional information. 

scale
-----
   The address of a variable that returns the scale of numeric select-list
items.  Pass as NULL if you do not require the scale value. 

   For Version 6, odescr returns correct precision and scale for fixed-point
numbers, and returns prec=scale=0 for floating point numbers.  This is
summarized below: 

        NUMBER(p) -> prec=p, scale=0
        NUMBER(p,s) -> prec = p, scale=s
        NUMBER, FLOAT(b) -> prec=scale=0

   Note that INTEGER, INT, and SMALLINT are mapped to NUMBER(38,0).  DOUBLE
PRECISION and FLOAT are the same as FLOAT(126).  REAL is the same as FLOAT(63).

   In Version 7, ODESCR will be enhanced for floating point numbers as follows:

        FLOAT(b) -> prec=b, scale=-127

nullok
-------
   The address of a variable that returns zero if null values are not permitted
for the column, and non-zero if nulls are permitted.  Pass as NULL if you do
not require the null status of the select-list item. 

See Also
--------
odefin, osql3.


Version 6.0.33.1:

-  A new command, CREATE CONTROLFILE, is available to recreate a control file
   for a database in the event that all copies of the controlfile have been
   lost or destroyed.  More information on this command, and assistance in
   using it, is available from the Oracle Customer Support Organization. 


Version 6.0.33:

- Transaction-level control of rollback segment use
  -------------------------------------------------
   Transactions store information in rollback segments that can be used to roll
back the modifications the transaction makes.  A transaction can be rolled back
either because it is aborted (due to system failure or the user manually
aborting it), or because a query needs a previous version of the data to
satisfy read consistency requirements. 

   Rollback segments are stored in the database in the same way as table
segments and index segments.  A rollback segment has two or more extents, and
each extent consists of many database blocks.  Rollback segments are stored in
tablespaces, and like any segment, they can span data files within a single
tablespace, but they cannot span tablespaces. 

   When a transaction begins, it is assigned a rollback segment to use for the
duration of its existence.  Transactions cannot span rollback segments, so once
a transaction is assigned a rollback segment, it continues to use that rollback
segment until it commits.  A "round robin" algorithm is used to determine which
rollback segment is used next.  This automatically spreads the processing
evenly across all of the rollback segments that are in use by the system. 

   In systems with widely varying types of transactions, some of which generate
large amounts of rollback data (by modifying large amounts of data before
committing), and some of which generate much smaller amounts of rollback data,
this round robin algorithm means that all rollback segments eventually expand
to be as large as the largest transaction needs, even if most of the time the
extra space is not needed by any transaction. 

   A new feature allows each transaction to explicitly choose which rollback
segment to use, instead of letting the RDBMS use its normal algorithm to do so.
 This allows the user to maintain different sized rollback segments for
different kinds of transactions without the smaller (and usually faster-
accessed) rollback segments expanding.  The potential benefits of this feature
include better usage of space, and better performance in mixed transaction
systems. 

Syntax
------
   The syntax of the new feature is:

      SET TRANSACTION USE ROLLBACK SEGMENT <rollback_segment_name>;

   where <rollback_segment_name> is any rollback segment that is currently 
   available.

Description
-----------
   This statement must be the first statement of a transaction (similar to the
"SET TRANSACTION READONLY" statement).  An error message is returned if the
"SET TRANSACTION USE ROLLBACK SEGMENT" statement appears anywhere except as the
first statement of a transaction. 

   The statement applies only to the transaction in which it appears.  This
means that consecutive transactions executed from the same session must each
re-execute a "SET TRANSACTION USE ROLLBACK SEGMENT" statement if they want to
override the default round robin mechanism of rollback segment selection. 


Version 6.0.32.3:

-  The EXPVEW.SQL view was changed to support reference grants.
   This view should be re-run.


Version 6.0.32.1:

-  The following character sets are now supported:
   I7DEC       Italian 7-bit for DEC
   N7DEC       Dutch 7-bit for DEC
   CH7DEC      Swiss (German and French) 7 bit for DEC


Version 6.0.32:

-  The XXX_INDEXES data dictionary views now indicate whether an index is in
   DLS (direct load) state (set by SQL*Loader Version 1.1) (49672) 

-  WHERE clauses are now pushed down into unoptimized views (views with a
   UNION, INTERSECT, etc.) resulting in improved performance 

Version 6.0.31.2:

-  For increased security, the unencrypted password is now no longer included
   in the DBA_DB_LINKS dictionary view (47910) 

-  For increased performance, additional subqueries are now transformed into
   joins by the optimizer.  Queries with an "IN subquery" such as:
      SELECT col_list FROM t1 WHERE col2 IN (SELECT col2 FROM t2)
   are now transformed into the form:
      SELECT col_list FROM t1, t2 WHERE t1.col2 = t2.col2
   when t2.col2 is known to be unique.  The EXPLAIN command indicates the new
   execution plan.


Version 6.0.31.1:

-  A new column, AUDSID, is available in V$SESSION.  This column is the
   auditing session id from USERENV('SESSIONID').


Version 6.0.31:

-  The SOME keyword is supported as a synonym to ANY.

-  If you omit the column list from the FOR UPDATE clause of a SELECT
   statement, then all rows returned from all from-list tables are locked.
   For example:
        SELECT * FROM emp, dept FOR UPDATE;
   locks all rows in the EMP and DEPT tables.


Version 6.0.30.4:

-  The previous limit of 10 (V5) or 50 (V6) tables that can be imported has 
   been removed.  There is now no limit (31739, 7498)


Version 6.0.30.3:

-  The ALTER SYSTEM SWITCH LOGFILE command is now available.  This command
   causes a log switch to be performed and initiates a checkpoint.  It may be
   used after an online backup so that the active online backup begins with
   entries issued subsequent to the backup. 


Version 6.0.29:

-  RECOVER DATAFILE, described in RECOVERY.DOC and in the V6 DBA Guide
   (revised 10/90)

-  An alert file is now written which logs unusual database occurences
   including:
            *  Instance startup and shutdown
            *  Messages to the operator console
            *  Any error which causes a trace file
            *  A CREATE, ALTER, or DROP operation on a 
               database, tablespace, or rollback segment.
      The alert file is located in the directory specified by the
   BACKGROUND_DUMP_DEST INIT.ORA parameter.  The file name is operating system
   dependent but is of the form ALERT_<instance-name>.LOG. 



Summary of fixed bugs
---------------------

   As of version 6.0.35.0 and 6.2.8.0, the version 6.0 and 6.2 products share
the same base RDBMS code and include all earlier features and bugfixes included
in both version 6.0 and 6.2. 

Version 6.0.36.4

- Internal errors were fixed ( 110714, 121146, 126192, 125590, 128165)

- Fixed a deadlock while doing an extend of a table which requires that 
  free space be coalesced (123364)

- The utility program TSLDM no longer access violates (104608)

- Fixed a problem where connects to VMS databases would hang (119087)

- User deadlocks now generate better trace files (122504)

- Grants can now be done on views with CONNECT BY (127881)

- Export will now allow a larger parameter file (124988)

Version 6.0.36.3

- Internal errors were fixed ( 123614, 116375, 121060, 120574, 123742,
  119898, 120755, 121146)  

- Import now correctly imports all constraints on tables (122608, 94442)

- When an attempt is made to archive across Decnet, a correct error 
  is generated (33056)

- Archival now parses the archive control string correctly (55364)

- Online backups no longer time out with an internal error (118171)

- SQL*Loader will now read fixed or variable files with any record
  length the user specifies (120445, 78866)

- Turkish language support problems were fixed (110442, 110443)


Version 6.0.36.2

- Internal fix (115289)

- When using multiple archivers and the archive disks fill up, not all
  archivers would be freed after disk space was reclaimed. This problem is
  fixed (80513)

- When several sub-processes are created for queries, very occasionally one of
  the sub-processes would loop, effectively hanging database. This problem is
  fixed (108090)

- Minor buffer address alignment problem fixed (112313)

- Using an outer join with SELECTs on columns of LONG datatype, no longer 
  occasionally give ORA-3113 (113310, 118940)

- Memory management improved by freeing up re-usable memory from shadow
  process (116253)



Version 6.0.36.1 (6.2):
- Internal errors fixed (110719)

- Rounding numbers into a character buffer of length 1 to 5 no longer
  occasionally hangs (104511)

- Index failure space usage improved (105333)

- Shutdown immediate no longer occasionally hangs during trace dumps (105943)

- Parsing filenames with a dollar sign are now accepted (106053)

- Improved handling of auditing in SQL*PLUS (106148)

- Selecting a long value from a view with a pseudo column, such as, ROWNUM, 
  no longer occasionally hangs (106418)

- Occasional incorrect handling of longs in EXEC SQL statements fixed (109103)

- Creating a tablespace offline and shutting down no longer occasionally
  gives an error (110714)

- EXPORT no longer occasionally corrupts when the CREATE VIEW ... WITH CHECK
  OPTIONS CONSTRAINT statement is used (110774)



Version 6.0.35.1 (6.2):
-  Internal errors fixed (104516, 100932, 100834, 100329, 100328, 100327,
      100326, 100324, 99753, 96982, 94334, 70298, 48037) 

-  For very large databases, the default SQL.BSQ causes fragmentation in the
   database when large numbers of objects are created. The file LARGESQL.BSQ
   creates the appropriate data dictionary tables with much larger sizes. This
   file is NOT supported by Oracle Corporation (104051)

-  Slovak sorting provided (98245)

-  Distributed queries containing ORed join predicates no longer sometimes
   produce incorrect results when one of the first OR condition is not true
   (96118)

-  A PL/SQL block that opens a cursor, does a fetch, selects a row based on 
   fetched data, and then inserts into another table (of the selected data) no
   longer inserts incorrect data into final table (94799)

-  Inserting then commiting after 100 records using a Pro*FORTRAN script no 
   longer occasionally hangs (94607)

-  An occasional problem where the ORACLE instance stops due to an error
   involving recovery of temporary sort space is fixed (88314)

-  DBWR no longer sometimes dies when BYTLM is too low because auto-quota is
   now implemented (80899, 76087)

-  PMON and SMON no longer write "lock conflict" messages to trace files unless
   there is a severe error (73703)

-  Recover datafile no longer disconnects from database when online backup files
   are used, the database is not open and there other online files (70586) 


Version 6.0.35.0 (6.2):

-  Several internal errors were fixed (86910, 86238, 85593, 85591, 82399, 
   79637, 74943, 74549, 74276, 67325, 67219)

-  Various bugs in NLS (National Language Support) were fixed (77691,
   80313, 88270, 88271, 88791)

-  The STatistics monitor no longer supports cycles per second, which was 
   redundant with the setting in the Cycle section (80760)

-  PMON now cleans up dead processes that had long-running transactions
   correctly (77757)

-  BACKUP CONTROLFILE no longer occasionally closes the controlfile, resulting
   in an access violation the next time the controlfile is accessed (77684)

-  The DROP TABLESPACE command no longer fails if there is a table in it
   with a quoted name (i.e. "foo$") (75084)

-  Lock conflicts that are ignored are no longer reported to the trace 
   file (73703)

-  Column FILE# is now available in V$FILESTAT (72811)

-  Dropping a table when running in parallel server mode no longer
   hangs in certain situations (70958)

-  ALTER SYSTEM SWITCH LOGFILE now works correctly in all situations 
   when running in parallel server mode (72699, 78013)

-  Running grants in parallel on two instances when running in parallel
   server mode now works correctly (88261)

-  Shutdowns given on two instances simultaneously when running in parallel
   server mode now works correctly in all situations (96261)

-  Grants on views and all indexes are now imported from a version 5 export 
   (26136, 60759)

-  Export now handles "tables=*" correctly (61008)

Version 6.2.7.5:

-  Some VMS-specific internal errors were fixed (86364, 84233)

-  Shutdown Immediate now works correctly (72549)

Version 6.2.7.4:

-  Some .SQL scripts caused internal error [3221] when the database
   had been started in shared mode. This is fixed. (72372)

-  The machine name in the alert file now prints correctly (72026)

Version 6.2.7.3:

-  The TSLDM.EXE file is now linked on site, instead of being provided
   in the shipset (66941)

Version 6.2.7.2:

-  The redo logs are no longer damaged when the INIT.ORA parameter
   GC_ROLLBACK_SEGMENTS is set to a value less than the number of
   rollback segments (66605)

Version 6.2.7:

-  An internal error is fixed (68400)

-  Header lines for internal use no longer appear in the INIT.ORA
   files (63652)

-  PSVIEWS.SQL now creates the V$CACHE and V$PING dynamic 
   performance views correctly (63602)

Version 6.0.34.3:

-  Internal errors fixed (92569, 98480, 98466)

-  Remote queries using OR conditional in WHERE clause no longer give
   incorrect results (96118)

-  Export now frees memory after exporting views (90441)

-  Database no longer hangs waiting for row cache enqueue lock
   (74276, 88261, 84147, 99327, 100398)

-  Successfully dropped tablespace (without "INCLUDE CONTENTS" clause) will
   also drop deferred rollback segments (71130)

-  Deleted rows are now recovered (76502)

-  Certain command line numeric parameters no longer cause internal error
   (94428)

-  "imp full=y grants=n" no longer imports tablespace quotas (103543)

-  Import no longer gives access violation when dumping contents of a bad row
   (91600)

-  Import now reports all object creation errors when "ignore=n" (95832)

-  Loader no longer gives access violation when large number of rows discarded
   (97382)

Version 6.0.34.2:

-  Several internal errors were fixed (85590, 85164)

-  Index errors written to the SQL*Loader log file no longer sometimes
   causes a memory access violation (91917)

-  When searching for rows using an index and with a ROWNUM condition 
   specified, an extra row is no longer searched for, thereby reducing
   the number of I/Os (90304)

-  An unsuccessful INSERT ... AS SELECT with rows too long to fit in a
   block is now treated as an atomic operation and competely rolls 
   back if unsuccessful (89913)

-  The text for error 1403 is now available in PL/SQL in SQLERRM (89457)

-  Using a LONG local PL/SQL variable, then reassigning it with a value 
   less than 255 characters, no longer results in error ORA-3113 (89259)

-  Releasing cursors when temporary segments have been allocated now
   may be much faster (89167)

-  When using clusters, the SIZE parameter is no longer sometimes ignored,
   leading to excessive block chaining and storage usage (87819)

-  On platforms where program termination is reported as either success or
   failure, warnings are now treated as successful termination for 
   backward compatibility (85589)

-  EXP versions from 6.0.32.2 or before now correctly run against the EXPVIEW
   from 6.0.34.2 and later (85245)

-  A user mode import of user SYSTEM from a full database export no longer
   imports non-user mode structures (81265)

-  Remote logons no longer occasionally access violate (74894)

Version 6.0.34.1:

-  Up to 508 columns or expressions of columns can now be selected
   from a table, an increase from 254 (79428)

-  EXP/IMP now exits with a warning message if a non-fatal error was
   issued during processing (79111, 60421)

-  A call to OEXEC which receives a user-side error, and which follows
   a call that received a kernel-side error, no longer returns the 
   earlier kernel-side error a second time (78440)

-  An INSERT across a dblink now returns an error instead of a dump
   (77045)

-  Auditing no longer sometimes incorrectly records the object owner
   as SYS (76359)

-  Error ORA-1073 no longer randomly occurs (72538, 66529)

Version 6.0.34:

-  Several internal errors were fixed (73049, 72906, 69556, 68391, 68389,
   68387, 68382, 68380, 68377, 67814, 67471, 67204, 65898, 63107, 59142, 
   57856, 54726, 53104, 21064)

-  An internal error is no longer issued when a long with a length 
   approximately the same size as the block is updated (74389)

-  Internal error ORA-600 [3270] is no longer unnecessarily given in some
   cases during an online backup (73485)

-  A table with 3 or more columns in a composite primary key can now be
   used for table replication (72847, 70487)

-  Several simultaneous operations that release disk space no longer 
   occasionally result in an internal error (72372)

-  After receiving error 1034, 1089, 1090, 3113, or 3114 with a dblink, 
   the dblink is closed and a successive query now attempts to reopen the 
   dblink (71464)

-  Local operations no longer fail after an error is encountered in a remote
   operation (71462)

-  An access violation or wrong answer no longer results from a query on an
   unoptimized view with functions in the select list plus a set operation
   in the view or an embedded view (68942)

-  Recovery is now possible and no error is returned if an instance aborts
   after a tablespace is set online but before a log switch occurs (68786)

-  A revoke of a resource on a tablespace now no longer occasionally gives
   the user a large quota instead of revoking access (68394)

-  The initial cycle time on the first MONITOR ROLLBACK screen is now
   initialized correctly (68379)

-  ALTER INDEX no longer occasionally fails after an index is dropped and
   recreated (68004)

-  A table created with a remote SELECT now uses the same precision for
   number columns (67054)

-  Multiple updates of long fields in the same transaction no longer 
   occasionally lose blocks (66140)

-  After running MONITOR ST ALL 0 0 error 1001 is no longer issued (65940)

-  The cumulative numbers no longer drop in the MONITOR I/O screen after
   a process dies (65315)

-  Index blocks are now reused earlier resulting in more efficient space
   utilization of indexes (65232)

-  The instance name is now printed correctly and written to the trace file
   correctly after the archiver process gets stuck (64906)

-  PMON no longer fails with ORA-600 when a user is aborted while doing an
   indexed insert (64645)

-  The ARCH process now writes to the control file every 5 to 10
   minutes instead of every 5 to 10 seconds (64339)

-  MONITOR I/O now correctly displays even when there is exactly one screenful
   of data (62642)

-  IMP no longer occasionally prematurely terminates a command and fails to 
   create objects (61671)

-  PMON now cleans up processes after CTRL-C (61655)

-  EXP no longer fails when exporting a table with long constraint text (61633)

-  PMON no longer occasionally dies when trying to clean up a dead process
   (60103)

-  DROP TABLESPACE INCLUDING CONTENTS now works properly when the tablespace
   includes tables with quoted names (58308)

-  CTRL-C checking was changed from once per row to once per block to improve
   the performance of SELECT COUNT(*) and DELETE operations (51485)

-  The KTUNDO message is no longer sent to the console unless an event is 
   turned on (47710)

-  A view created with a GROUP BY now inherits the NOT NULL attribute of the
   underlying table (47221)

-  Network errors are now recovered from correctly instead of returning error
   1075 ("Not logged on") then crashing (41170)

-  Parameters are now supplied in RDBMS errors encountered within a PL/SQL
   environment (35583)

-  MONITOR STATISTICS no longer shows the MIN column with a value of -1.00
   (29312)

Version 6.0.33.2:

-  Numbers of n digits to the left of the decimal point which, when rounded, 
   have n+1 digits to the left of the decimal point, are now rounded
   correctly (70397, 69090)

Version 6.0.33.1:

-  Recovery with RESETLOGS no longer assigns datafiles to the system tablespace
   (68028)

-  The SQL.BSQ script has been modified to create an index to improve
   the performance of synonym drops (64347)

-  In Pro*C, SELECTs can now be done for columns with length above
   255 followed by a SELECT for a column with length less than
   255 (64187)

-  CREATE CONTROLFILE no longer assigns all files to the system tablespace
   (63278)

-  Predicates with a FUNCTION(COLUMN) BETWEEN two values in a complex
   view now operate correctly (62662)

-  An ORDER BY on a set expression involving a character string and a
   non-character string, when NLS_SORT=TRUE, now orders the rows
   correctly (60247)

-  The new "free list block" statistic (added in 6.0.30.0) no longer
   displays as "rollback seg", and "rollback seg" no longer displays
   as "???" (53784)

-  The COBOL datatype DISPLAY SIGN LEADING SEPARATE is now supported
   in the COBOL precompiler and through OCI calls (47230)

-  Outer joins on a rowid column now work properly (35434)


Version 6.0.33:

-  Several internal errors were fixed (60365, 59685, 57934, 56807, 
   55588, 52677, 52676, 52675, 52674, 47155, 44704, 44223, 43878, 
   41239, 36398, 27074)

-  Allocating temporary storage in a very fragmented tablespace with a 
   small workarea no longer results in a class violation (62409)

-  Queries on views with outer joins with a WHERE clause now are
   correct (61911)

-  The performance was improved for certain queries where a subquery is 
   transformed into a join (61502)

-  Inserting rows into a cluster block by several users simultaneously
   no longer occasionally corrupts the block (60910)

-  Queries with expressions that filter complex views no longer 
   unnecessarily return an error (60817)

-  The DC_CONSTRAINTS INIT.ORA parameter must be 1 - unlimited (60389)

-  Predicates with date expressions are now passed to the remote site 
   when accessing a remote table (60326)

-  Several processes simultaneously inserting entries into the same 
   index block no longer abort when one process' changes are rolled 
   back (59761)

-  Auditing is now enabled when used in SQL*Plus Version 3.0.8 and later
   (59371)

-  Storage is now properly reused in clusters after rows are deleted
   and new rows are inserted (58081)

-  WHERE clauses with a reference to ROWNUM in an UPDATE or DELETE
   statement no longer occasionally result in an internal error (57082)

-  Accessing a zero-length column through a view with a DBlink no
   longer returns an error (57006)

-  The blocks read and blocks written statistics in MONITOR FILE
   of SQL*DBA are no longer reversed (56361, 54942)

-  Internal transaction information is no longer sometimes left in
   an invalid state during recovery (53953)

-  An unsuccessful attempt to drop a tablespace no longer results
   in ORA-600 errors when later operations are performed (53385)

-  A bad PL/SQL block no longer causes an infinite loop in SQL*DBA (52682)

-  SQL*DBA no longer uses the previous username/password to connect
   when a SQL*DBA keyword is used as the username (51770, 38034)

-  A problem with the read consistency area was fixed that sometimes caused
   a process to loop using high CPU but no I/O (50746)

-  A SHUTDOWN ABORT followed by a STARTUP MOUNT and an ALTER DATABASE
   OPEN in the same session no longer occasionally result in an 
   internal error (48854)

-  The IMPORT INDEXFILE=<filename> now creates a file with the .SQL
   suffix instead of the .DMP suffix (see section A-1 above) (48792)

-  TKPROF now handles SQL statements from PCC programs (47797)

-  There is now a message for error DBA-337 (47538)

-  Very long INIT.ORA parameter strings no longer overflow the SQL*DBA
   buffer and cause SQL*DBA to hang (46237)

-  MONITOR FILE no longer causes a dump to be produced when there are
   more than 8 files (a screen full) (45430)

-  EXP now terminates with an unsuccessfull completion code after 
   detecting an error (44326)

-  SQL*DBA errors 129 and 305 now correctly print their parameters (36403)

-  Error 2612 is now correctly reported as an internal error, not an 
   ORA error (35718)

-  Error messages are now returned correctly from DB2 when using
   SQL*Connect (33237)

-  SQL*DBA correctly displays remaining data which follows a field
   with a binary zero (31349)

-  EXP now correctly returns the ORACLE error along with the EXP
   error (31321)

-  SQL*DBA now returns an error when an attempt is made to STARTUP
   SHARED with a version of ORACLE that does not support SHARED (28929)

-  You now get an ORACLE error in addition to a SQL*DBA error if you
   try to connect and the ORACLE_SID is not set (23457)

-  A security violation is no longer issued if you try to EXPLAIN a
   query on a fixed (X$) table (22582)

-  IMP now correctly displays column values for rejected rows (22451)


Version 6.0.32.4:

-  Several internal errors were fixed (60426, 58124)

-  An INSERT into a view with the CHECK option where a subquery
   is transformed into a join no longer always issues an error (59733)

-  The MAX function no longer ignores duplicate rows if the
   ROWNUM is in the query (58985)

-  Long fields are no longer truncated using OCOM() OCI call (58434)

-  Specifying a large INITRANS (over 20% of the block) no longer
   causes a database corruption (58372)

-  Performance of auditing has been increased (see section B-7) (52646)

-  Data is no longer corrupted when a bind variable of type CHAR or
   VARCHAR gets values that increase in length on successive executions
   (48654)


Version 6.0.32.3:

-  SQL*DBA and other tools no longer incorrectly display
   numbers such as -999 with format masks such as 9.9EEEE (57249)

-  Errors 7805 and 7806 now include message text (56197)

-  If a user owns objects but does not have CONNECT privilege,
   his objects can now be exported/imported and he is no longer
   left with CONNECT privilege when IMP finishes (54221)

-  The view used for incremental export (EXUDEL) now does not 
   perform an unnecessary table scan (52526)

-  IMP no longer ignores the GRANTS flag in full and user 
   mode (47893)

-  EXP no longer generates an invalid INITIAL extent size
   for tables larger than 2GB when the compress option is
   selected (46497)

-  Table imports now import comments on the tables (46097)

-  IMP now imports REFERENCES grants (26360)

-  EXP now orders grants by sequence numbers instead of by 
   time to correctly order multiple grants that were entered
   at the same second in time (18050)

Version 6.0.32.2:

-  PMON no longer terminates with ORA-600 [4420] (55784)

-  ORA-600 [6006] no longer issued when doing an undo
   to a key in a leaf block or many simultaneous requests 
   for storage extents (55750, 53709, 50347, 39635)

-  ORACLE no longer hangs when the upiall() call is used
   to parse and execute the first DML statement after an
   incremental export (51278)

Version 6.0.32.1:

-  Several internal errors were fixed (53723, 26409)

-  An INSERT into a clustered table based on a SELECT

-  A problem reading blocks created by earlier versions 
   of ORACLE was fixed (54583)

-  An interactive user import, like a command line user import, 
   now imports synonyms (54508)

-  A problem was fixed with the CURRVAL of NOCACHE 
   sequences returning an error instead of a number (54356)

-  Incompatible versions of the RDBMS now cannot both run
   and refer to the same SGA (54354)

-  The optimizer was changed slightly to more closely select
   an access path similar to the V5 optimizer in certain 
   situations (54213, 52828)

-  An internal error was fixed on an array insert using
   SQL.NEXTVAL (53261)

-  A problem was fixed in version 6.0.31.2 and 6.0.32 where
   two people simultaneously inserting the same new cluster
   key corrupted a block (53133)

-  An abnormal logoff when auditing database connections no longer
   gives an ORA-0602 error (52916)

-  Blocks are now reused when PCTUSED is very high (52018)

-  Certain audit codes are now recorded correctly to audit trail
   when auditing both successful and unsuccessful connects (51612)

-  COMMITs are now sent via SQL*Connect immediately to a remote
   database, instead of with the following statement (45878)

-  A CREATE TABLE (or CLUSTER) command with the 4 consecutive 
   characters S, I, Z, E in an identifier can now be imported 
   from a V5 export (52794)

-  SQL*Loader can now load zoned decimal data correctly (52124)

-  An INIT.ORA parameter with a very long value can now be displayed
   by the SHOW PARAMETERS command (51688)


Version 6.0.32:

-  Several internal errors were fixed (52344, 51521, 49382,
   49945, 49669, 47083, 46128, 45652, 45280, 43096, 43003,
   43002, 39182, 36313, 22859, 20561, 16799, 52506, 53192,
   52896)

-  A problem with not reusing deleted space in tables with 
   a very low PCTFREE setting was fixed (52579)

-  A problem with not reusing deleted space in some cases
   was fixed (52052)

-  Parse locks are now released before a PL/SQL block reuses
   a cursor (51695)

-  A problem was fixed where the system rollback segment was
   not checked for the maximum number of transactions active
   in it, and recovery was unable to complete (50510)

-  ARCH now releases locks after encountering errors (50432)

-  A problem was fixed when dropping a tablespace without first
   dropping the rollback segments in the tablespace, and then
   recreating the tablespace and rollback segments, the new
   rollback segments were not created correctly (50201)

-  Can now ALTER SEQUENCE NOMAXVALUE and NOMINVALUE (47135)

-  Can now end a line with a slash in SQL*DBA without ending
   the PL/SQL block (46660)

-  A problem was fixed where inserting more data than fits in
   a block resulted in error ORA-0602 (44757)

-  Spelling mistakes in errors were corrected (41867)

-  Simultaneous CREATE SEQUENCE commands no longer timeout on
   a DDL lock (41010)

-  SQL*DBA MONITOR F no longer returns 0s for READ REQUEST RATE/S,
   WRITE REQUEST RATE/S, BATCH SIZE BLKS/R, and BATCH SIZE BLKS/W
   (36231)

-  SQL*DBA no longer aborts when a line over 128 characters is
   entered (28720)

-  ALTER DATABASE CLOSE now returns an error if there are other
   sessions connected (23991)

-  SQL*DBA no longer endlessly prints spaces after an error on
   a blank line (47178)

-  Can now grant select on V$WAITSTAT to users (44288)

-  Dropping a tablespace in use by another person is now dropped
   successfully (42164, 52115)

-  Simultaneously starting many processes no longer results 
   in an internal error (50158)

-  PMON now successfully cleans up processes aborted in certain
   critical section (49207)

-  Expected errors handled by PMON are no longer logged in the 
   trace file (46115)

-  A logical symbol in the LOG_ARCHIVE_DEST init.ora parameter
   is now translated only up to the first delimiter (44234)

-  The ARCH process issues an error and does not start up if
   the maximum number of processes is already reached (30798)

-  The maximum DB_BLOCK_SIZE is now 8K (VMS systems) (38549, 10220)

-  A problem reusing space after deletes were done, with
   concurrent inserts and deletes occurring, was fixed  (51065)

-  A problem in PL/SQL with allocating and returning memory many
   times was fixed (32530)

-  Many processes can now insert into a common indexed table
   without internal deadlocks (52100)


Version 6.0.31.2:

-  Several internal errors were fixed (51142, 51065, 50991, 
   49631, 44862, 27481, 27224, 27223, 26043, 21919)

-  A problem with two 21-byte numbers (the maximum size of
   ORACLE internal numbers) being added together resulting in
   an overflow was fixed (50180)

-  OERHMS now returns error message text when called from 
   FORTRAN (49639)

-  An internal error allocating space in a cluster for changes
   to the table/row directory in a block with little available 
   space was fixed (48563)

-  A problem with reusing space in a cluster, across different
   cluster keys, was fixed (45919)

-  A problem was fixed with a recent change that incorrectly counted
   the number of bind variables.  All instances of the bind variable
   are now returned (43033)

Version 6.0.31.1:

-  An internal error was fixed (48205)

-  Error 904 is no longer issued if you have more columns in 
   the database than defined in DC_COLUMNS (47850)

-  Many simultaneous connects no longer return an internal 
   error (47360)

-  A problem was fixed where a distributed query with a local 
   sort returned invalid data (38493)

-  A problem was fixed where an internal error was occasionally
   given for a SQL statement which was not reparsed that performs
   a join with a remote table (46146)

-  A problem was fixed where the DBWR was busy with a checkpoint
   and did not respond promptly to a process that required its 
   services, an internal error was given (47562, 36416)

-  A problem was fixed where an corrupted redo log file read 
   during recovery caused an infinite loop (45061)

Version 6.0.31:

-  Several internal errors were fixed (39201, 36987, 46129,
   44862, 44779, 46693, 38504, 36902)

-  EXP and IMP now send the copyright banner to STDERR
   along with all other messages (44483, 19231)

-  EXP of a user's objects by a DBA with 'CONSTRAINTS=Y' now
   correctly exports the user's synonyms and views instead of 
   the DBA's (44334)

-  A problem which occasionally caused PMON to terminate was
   fixed (42419)

-  A problem which occasionally caused complex nested subqueries
   in an update statement to fail was fixed (38270)

-  EXP no longer requires lower case for the INCTYPE (37457)

-  VALIDATE INDEX now checks and returns an appropriate message 
   if the index is being loaded (43203)

-  A problem was fixed with sequence numbers which caused new
   sequence numbers to appear to be generated correctly from the
   cache after a sequence failure, but were in fact not being 
   generated correctly (42739)

-  Storage is now correctly reused for databases with an 
   INITRANS greater than 1 (41969)

-  A problem was fixed where a long row inserted with an INSERT 
   statement that includes a SELECT query with a sequence number 
   occasionally resulted in an ORA-600 [3226] error (41160)

-  A problem in 6.0.30.0 was fixed where insert into a cluster
   with a long sometimes returned an ORA-600 error (44682)

-  CTRL-C entered in certain critical sections no longer 
   causes excessive cleanup work.  PMON now recovers processes
   aborted by an operator faster (42147)

-  A reused cursor which requires temporary storage, following
   the failure of an operation which required temporary storage, 
   no longer fails (24752)

-  EXP now correctly generates quotes around column names with
   special characters or in lower case in an ALTER TABLE ADD
   FOREIGN KEY statement (44454)

-  IMP/EXP now correctly handle linefeeds in DEFAULT and CHECK
   clauses (34661)

-  A numeric field in a view composed of numeric columns 
   unioned together has type NUMBER instead of NUMBER(38) 
   (32833)

-  A full export no longer generates a CREATE statement
   for the SYSTEM rollback segment (40455)

-  A problem was fixed where an error in a DML statement in 
   PL/SQL did not properly return the error and placed the
   user in an invalid state (46658)

-  A problem was fixed where memory allocated in PL/SQL
   was not released or reused (32530)

-  A problem was fixed where certain SELECT DISTINCT queries
   with a subquery containing START WITH ... CONNECT BY
   returned an internal error (39048)

-  A problem was fixed where certain SELECT queries without
   DISTINCT but with a WHERE clause with an OR predicate and
   a subquery predicate returned incorrect results (40115)

-  A problem was fixed where in some queries with date functions 
   with an ORDER BY, the DESC was ignored (44787)

-  Constant expressions that generate errors (such as zero divide)
   now report the errors at execution time instead of parse
   time (45383)

-  A problem was fixed where certain outer joins with all predicates
   in an index and a subquery sometimes returned wrong results (45838)

-  An error is now issued when at attempt is made to define a 
   second PRIMARY KEY on a table (32281)

-  Storage allocated to a table no longer increases when many rows 
   are deleted and inserted into the table (41513)

Version 6.0.30.4:

-  Several internal errors were fixed (42819, 42499, 41433,
   41154, 35955)

-  The array interface no longer uses an excessive number
   of extents with very small row sizes (42832)

-  The ORA-1578 error now checks for and skips corrupted 
   clustered blocks during a table scan (42643)

-  A problem was fixed where array inserts create redo log
   entries too large for recovery to read, causing the 
   recovery to fail (38271)

-  A problem was fixed where PMON ocassionally failed to 
   fully clean up all transaction locks (31916)

-  Grants may now be exported from table mode in EXPORT
   (27529)

-  Import now returns an error instead of hanging when
   some corrupted data files are input (42005)

-  Import now correctly reads linefeed characters 
   from an EBCDIC file on an ASCII machine (41496)

-  Read-consistent snapshots of data are now correctly
   generated instead of looping for some blocks with a
   large amount of changes applied to it (39428)

-  Import now accepts all characters within quotes,
   allowing names with linefeed characters (13366)

Version 6.0.30.3:

-  EXPORT successfully works with cross-table 
   integrity constraints, for both DBAs and non-DBAs
   (29884)

-  The ALTER DATABASE NOARCHIVELOG command can be
   issued immediately after mounting the database, 
   without first issuing a RECOVER DATABASE (40432).

-  An ORA 00602 error is no longer issued on a SELECT
   statement using a UNION and ORDER BY DESC when
   NLS_SORT is TRUE (31380)

-  A SELECT with a UNION and ORDER BY and NLS_SORT is 
   TRUE now results in the proper sequence (31381)

-  The PCTFREE value is now available through the
   ALL_, USER_, and DBA_INDEXES dictionary views (33810)

-  The ALL_VIEWS dictionary view now contains the TEXT
   and TEXT_LENGTH columns (35876)

-  The comment on USER_ and DBA_CROSS_REFS was corrected
   (38207)

-  The DBA_ and USER_SEGMENTS dictionary views now correctly 
   indicate the creator of rollback segments (18656)

-  The COL, COLUMNS, and SYSCOLUMNS V5 data dictionary views 
   (from CATALOG5.SQL) now contain the REMARKS column, and
   WIDTH indicates the precision of numbers; the 
   SYSTABAUTH and SYSUSERAUTH views now indicate a blank 
   instead of 'N' if a user does not have a privilege
   (28120, 28121)

-  A SELECT with an ORDER BY and an extremely large number
   of literals now works properly (35353, 35355)

-  %NOTFOUND correctly works with large fields (35803, 38186,
   38246)

Version 6.0.30.2:

-  Several internal errors were fixed (35868, 28465)

-  Some queries unnecessarily failed with a Snapshot Too
   Old error and now operate correctly (38363)

Version 6.0.30.1:

-  Several internal errors were fixed (37679, 19462)

-  An occasional access violation in SMON is fixed (35730)

-  All space used for LONG columns is now fully reclaimed
   after rows are deleted (23668)

-  Some complex updates with subqueries containing joins that
   resulted in internal errors were fixed (22965)

-  A problem with the LGWR occasionally terminating with 
   error 602 was fixed (31848)

-  A problem renaming a file in a offline tablespace, without
   restarting ORACLE, was fixed -- processes now refer to the
   new file name (33995, 30244)

-  Deleted space is now more readily reused (38196)

-  A problem with outer join select for updates when null rows 
   are generated was fixed (26786)

-  A problem was fixed where occasionally restarting a database
   after a machine crash would receive error 3020 (26038)

-  A problem was fixed which occasionally gave an ORA-600 [6006]
   error when inserts entered entries into an index, and other
   inserts were rolled back causing the block to be put on the
   free list (37039)

-  A deadlock was fixed which occasionally occurred when an 
   insert/update of a key tried to acquire a new block from 
   the free list (35640, 31675)

Version 6.0.30:

-  Several internal errors were fixed (35258, 35050, 19462)

-  A concurrency problem was fixed which sometimes resulted 
   in a WHERE clause evaluating an expression based on the
   original data from the read-consistent snapshot, but then
   updating the data changed and committed by the other 
   concurrent user.  The row is now rechecked to ensure the
   row remains a candidate for the update (37218)

Version 6.0.29.2:

-  An invalid ROWID was internally used if it was being
   located by an index search while another process deleted 
   the same key entry (34263)

-  A rare block corruption was fixed (28843)

Version 6.0.29.1:

-  Several Internal Errors were fixed and additional error 
   checking was added (34290, 21702)

-  The PCTFREE and PCTUSED parameters now work correctly
   when PCTUSED is very small (less than 5), and when
   PCTFREE + PCTUSED is close to or equal to 100 (33230,
   31943, 31151, 29722)

-  The BACKGROUND_DUMP_DEST INIT.ORA parameter is now used
   as the location for debugging trace files by the 
   background processes (34336, 23870)

-  EXPORT now properly exports a cross-table constraint 
   for DBAs (29884)

-  EXPORT now issues an appropriate error instead of looping 
   with long columns and a buffersize too small (24579)

Version 6.0.29:

-  Several Internal Errors were fixed and additional error 
   checking was added (33217, 32193, 32065, 31985, 31652, 
   29269, 28963, 27062, 26935, 26106)

-  A system hang was fixed which sometimes resulted from
   a process dying while in a critical state (33215)

-  A system hang was fixed which sometimes resulted from
   a DROP TABLESPACE INCLUDING CONTENTS when a temporary
   segment was still in use (27323)

-  A system hang was fixed which sometimes resulted from
   index blocks being split (33291)

-  A bug was fixed which sometimes caused RECOVER DATABASE 
   UNTIL to get a memory violation and abort in a two
   task environment (29024)

-  Repeated CTRL-C now only terminates the statement and
   does not terminate the session (22897, 33609)

-  A space management problem was fixed which sometimes 
   resulted in a block not being put on the free list 
   after rows were deleted (31151)

-  The performance has been improved in some cases where
   a rollback of index inserts is done (31697)

-  The error "OUT OF MESSAGE BLKS AFTER 60 SECOND TIMEOUT"
   is now not issued without reason during a normal shutdown
   (31079)

-  The V5 OOPT routine is now fully functional in V6 except 
   for the rollback options -- these may be handled with
   V6 savepoints (32193)

-  The LGWR no longer occasionally terminates with errors 
   447 and 600 while a very large data file is being 
   created (30581)

-  The character whose ASCII or EBCDIC code is 255 can now 
   be used in SQL statement strings (30037)

-  The SYSTABAUTH view is now compatible with V5.1 (Note: 
   this may not be supported in future versions) (29307)
   
-  If a tablespace is defined as a temporary tablespace for 
   a user and is dropped and recreated with the same name, the
   new tablespace will continue to be the user's temporary
   tablespace (20045).

-  READ ONLY transactions which modify the database (auditing,
   storage allocation for sorting, etc.) are now allowed (30841,
   26202)

----------------------------------------------------------------
