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

Oracle8 Server

Release 8.0.4

Production

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

Copyright (C) Oracle Corporation 1993, 1997

Editor: Paul Lane

Contributing Authors: Rita Moran, Tracy Lee, Tom Portfolio, Greg

Doherty, Alan Downing, Bill Maimone, Carol Sexton, Alex Cheng, Amit

Jasuja, Sandy Venning, Richard Sarwal, Hasan Rizvi, Joyo Wijaya,

Karleen Aghevli, Juan Loaiza, Jonathan Klein, Ray Roccaforte, Connie

Dialeris, Steven Wertheimer, Debashish Chatterjee, Thomas Kurian, Ben

Chang, Shirish Puranik, Alok Pareek

This software/documentation contains proprietary information of Oracle

Corporation; it is provided under a license agreement containing restrictions on

use and disclosure and is also protected by copyright law. Reverse engineering

of the software is prohibited.

If this software/documentation is delivered to a U.S. Government Agency of the

Department of Defense, then it is delivered with Restricted Rights and the

following legend is applicable:

RESTRICTED RIGHTS LEGEND:

Use, duplication, or disclosure by the Government is subject to restrictions as

set forth in subparagraph (c)(1)(ii) of DFARS 252.227-7013, Rights in Technical

Data and Computer Software (October 1988).

If this software/documentation is delivered to a U.S. Government Agency not

within the Department of Defense, then it is delivered with "Restricted Rights,"

as defined in FAR 52.227-14, Rights in Data - General, including Alternate III

(June 1987).

Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065.

The information in this document is subject to change without notice. If you

find any problems in the documentation, please report them to us in writing.

Oracle Corporation does not warrant that this document is error free.

Oracle, CASE*Dictionary, Pro*COBOL, SQL*Connect, SQL*Forms, SQL*Loader,

SQL*Net, and SQL*Plus are registered trademarks of Oracle Corporation.

CASE*Designer, CASE*Method, Net8, Oracle7, Oracle8, Oracle Call Interface,

Oracle Parallel Server, Oracle Recovery Manager, PL/SQL, Pro*C/C++,

SQL*Module, Oracle Server Manager and Trusted Oracle are trademarks of

Oracle Corporation.

All trade names referenced are the service mark, trademark, or registered

trademark of the respective manufacturer.

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

TABLE OF CONTENTS

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

Introduction

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

0.1 Purpose of this README

0.2 Cover Letter and Licensing

0.3 Oracle8 and the Oracle8 Enterprise Edition

0.4 Oracle8, Release 8.0 Production Documentation

1.0 Compatibility

1.1 GLOBAL_NAMES initialization parameter

1.2 SELECT privilege will be required on tables that users update

1.3 Date Format Strings: Stricter Behavior

1.4 Serializable = TRUE

1.5 Partition Views

1.6 Sql.bsq

1.7 Sgadef File

1.8 Shutdown Changes

1.9 Index-organized tables with Long Primary Keys

1.10 X$KCBCBH and X$KCBRBH Fixed Tables

1.11 Connect Internal Desupport

1.12 2 GB File Size Limit

2.0 ROWIDs and Oracle7 Compatibility

3.0 Desupport Notification for V6 Compatibility behavior

4.0 Non-deferred linking

4.1 Single-Task Linking

5.0 PL/SQL

5.1 FIPS Flagging

5.2 Stricter Syntax checking of Calls

5.3 Implicit Columns and Number of Columns

5.4 Inter-version RPC and Default Arguments

5.5 Oracle7 PL/SQL Compatibility Issues

5.5.1 Behavior Change Caused by Bugfix 237911

5.5.2 Behavior Change Caused by Bugfixes 235190 and 235193

5.6 Bugs

5.6.1 Known Open Bugs

5.6.2 Closed Bugs

6.0 Utilities

6.1 Documentation Errata

6.2 Sql*Loader

6.3 Export/Import

7.0 SQL Execution

7.1 Optimizer

7.2 Parallel Query Execution

8.0 Migration

9.0 Object SQL

10.0 Oracle Call Interface (OCI)

10.1 OCI vs SQL Access to Objects

10.2 Known Open Bugs

10.3 Closed Bugs

11.0 XA

12.0 Transparent Application Failover

12.1 Known Open Bug

13.0 Advanced Queuing

14.0 Initialization Parameters

14.1 New Parameters

15.0 Backup and Recovery

15.1 Linking with a Media Manager

15.2 Special Note for Integration with Legato Networker

15.3 Closed Bugs

15.4 Recovery Manager

15.5 Tablespace Point-In-Time Recovery (TSPITR)

16.0 Parallel Server

17.0 Database Security

17.1 Password Management

17.2 Known Open Bugs

18.0 LOBs

19.0 Structured Query Language (SQL)

20.0 National Language Support

21.0 Replication

21.1 Interoperability

21.2 Dbms_defer_sys.copy removed

21.3 Warning

21.4 Known Open Bugs

21.5 Closed Bugs

22.0 Space Management

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

**********************

* *

* Introduction *

* *

**********************

0.1 Purpose of this README

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

This README file is relevant only to the delivered Oracle8 Server 8.0.4

and its integral parts, such as SQL, PL/SQL, the Oracle Call Interface (OCI),

SQL*Loader, Import/Export utilities, Enterprise Manager and so on.

There are separate README files for Net8 and precompilers.

For upgrading from 8.0.3 to 8.0.4, please see Oracle8 Migration.

This README documents any differences between the server (and its

integral parts) and its documented functionality, as well as fixed

bugs, and known problems and workarounds.

Each operating system release, such as UNIX, Windows NT, DEC Open VMS,

and so on, often also provides an operating system-specific README document.

There may also be additional README files for specific Oracle products such

as SQL*Forms. This README file is provided in lieu of release notes,

system bulletins, or similar publications.

0.2 Cover Letter and Licensing

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

Please read the cover letter that may be included with your Oracle8

8.0.4 package. It may contain important information about licenses

for Oracle8 product options.

0.3 Oracle8 and the Oracle8 Enterprise Edition

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

The biggest change in 8.0.4 is that, on install, customers will be able

to install only the product(s) they have licensed, and features that are

not installed will not function.

This README contains information relating to both Oracle8 and the Oracle8

Enterprise Edition. Some of the features documented in this README are

available only if you have purchased the Oracle8 Enterprise Edition.

Furthermore, some of these features are only available if you have purchased

a particular option, such as the Objects option.

For information about the differences between Oracle8 and the Oracle8

Enterprise Edition, please refer to Getting to Know Oracle8 and the

Oracle8 Enterprise Edition.

0.4 Oracle8, Release 8.0 Production Documentation

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

The following list of books and part numbers describes the Server printed

documentation set. The part number is A58405-01.

A58495-01 Oracle8 Generic Documentation Master Index

A58424-01 Oracle8 Concepts, Release 8.0

A58232-01 Pro*COBOL Precompiler Programmer's Guide,

Release 8.0

A58233-01 Pro*C/C++ Precompiler Programmer's Guide,

Release 8.0

A58397-01 Oracle8 Administrator's Guide, Release 8.0

A58396-01 Oracle8 Backup and Recovery Guide, Release 8.0

A58425-01 Oracle8 SQL Reference(2 volume set) Release 8.0

A58244-01 Oracle8 Utilities, Release 8.0

A58243-01 Oracle8 Migration, Release 8.0

A58238-01 Oracle8 Parallel Server Concepts & Administration, Release 8.0

A58246-01 Oracle8 Tuning, Release 8.0

A58241-01 Oracle8 Application Developer's Guide, Release 8.0

A58427-01 Oracle Call Interface Programmer's Guide, Release 8.0

A58236-01 PL/SQL User's Guide and Reference, Release 8.0

A58426-01 Oracle8 Error Messages, Release 8.0

A58245-01 Oracle8 Replication, Release 8.0

A58242-01 Oracle8 Reference Manual, Release 8.0

A58247-01 Oracle8 Distributed Database Systems, Release 8.0

A54660-01 SQL*Module for Ada Programmer's Guide, Release 8.0

A58228-01 Getting to Know Oracle8 and the Oracle8

Enterprise Edition, Release 8.0

A58373-01 Legato Storage Manager Administrator's Guide

A53718-01 SQL*Plus Quick Reference

A53717-01 SQL*Plus User's Guide and Reference

The following list of books and part numbers describes the Cartridges printed

documentation set. The part number is A58422-01.

A55713-02 Oracle8 Image Cartridge User's Guide, Release 8.0.4

A53264-02 Oracle8 Spatial Cartridge User's Guide and Reference,

Release 8.0.4

A57501-01 Oracle8 Time Series Cartridge User's Guide, Release 8.0.4

A55255-02 Oracle8 Visual Information Retrieval Cartridge

User's Guide, Release 1.0.1

A58165-01 Oracle8 ConText Cartridge Administrator's Guide

A58164-01 Oracle8 ConText Cartridge Application Developer's Guide

A57700-01 Oracle8 ConText Cartridge Workbench User's Guide

A58161-01 Oracle8 ConText Cartridge QuickStart

The following list of books and part numbers describes the Networking and

Security printed documentation set. The part number is A58423-01.

A58230-01 Oracle Net8 Administrator's Guide, Release 8.0

A58229-01 Oracle Advanced Networking Option

Administrator's Guide, Release 8.0

A54082-02 Oracle Cryptographic Toolkit Programmer's Guide

A54088-01 Oracle Security Server Guide

1.0 COMPATIBILITY

=================

This current release, as well as future releases, will have changes for

which you can prepare now; for example, to comply with future SQL ANSI

standards. If you follow these recommendations, upgrading to newer

releases of Oracle will be simplified.

1.1 GLOBAL_NAMES INITIALIZATION PARAMETER

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

Recommendation-

If you use or will use distributed processing, set this parameter to

TRUE to ensure a unique identifying name for your database in a

networked environment.

1.2 SELECT privilege will be required on tables that users update

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

Recommendation-

Always grant the SELECT privilege to a user or role if you grant the

UPDATE or DELETE privileges on the table. See also Oracle8 Server

Reference for more information about the initialization parameter,

SQL92_SECURITY.

1.3 DATE FORMAT STRINGS: STRICTER BEHAVIOR

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

In Oracle7, a space or punctuation character in the format string

caused the corresponding character in the date string to be discarded.

This caused incorrect dates to be entered into the database since

alphanumeric characters were thrown out. In Oracle8, an error occurs

if an alphanumeric character is found in the date string when a

punctuation character or space is found in the format string, with

one exception.

Example:

TO_CHAR(TO_DATE('0297', 'MM/YY'), 'MM/YY')

Oracle7 result: 02/07

Oracle8 result: ORA-1861

Exception:

TO_CHAR(TO_DATE('1996-05-19 12:37:48.196000',

'YYYY-MM-DD HH24:MI:SS."00000"')

Oracle8.0.4 result: 1996-05-19 12:37:48

This exception will be removed in future releases.

In addition, extraneous characters at the end of the date string will

also produce an error.

For example, given the date format mask 'YYYY-MM-DD HH24:MI:SS', the following

date strings will now produce errors in O8.0.4:

'1996-12-03 00:00:00 %'

'1996-12-03 00:00:00 X'

'1996-12-03 %'

Finally, use of the TH date format string suffix, e.g., 'FMMonth ddTH',

should not result in ORA-1801 anymore.

Closed Bugs

-----------

Bug 492736

Use of the TH date format suffix sometimes incorrectly resulted in error

1801. The error could be eliminated by placing the format using TH at the

beginning of the format string. Splitting the format string, calling

TO_CHAR twice, then concatenating the results allowed the TH format element

to appear anywhere in the eventual output.

Bug 528541

Extraneous characters at the end of the date string no longer produce errors.

1.4 SERIALIZABLE=TRUE

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

The init.ora parameter SERIALIZABLE=TRUE is no longer supported in Oracle8

and beyond. The default behavior henceforth is as if SERIALIZABLE was set

to FALSE. Use the SET TRANSACTION ISOLATION LEVEL SERIALIZABLE command to

Achieve similar transaction isolation behavior.

1.5 PARTITION VIEWS

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

In Oracle8, partitioned tables are strongly recommended in preference to

partition views.

In general, partition views should not be used and eventually will be

desupported. If you must use partition views, please see "Rules and

Guidelines for Use" in the 7.3.3 Tuning Guide on page 11-2.

1.6 SQL.BSQ

-----------

For performance reasons, due to the large number of objects in a typical

installation, some customers have noticed performance improvements by

making modifications to sql.bsq before installation. An example of this is

increasing initial extents. Do not do this as it may jeopardize

customer supportability.

1.7 SGADEF FILE

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

The contents of this file have been deleted, but the file remains since

its existence is needed for purposes that have never been documented.

It will be obsoleted in future releases.

1.8 SHUTDOWN CHANGES

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

Processes are now killed during shutdown; consequently, the error(s)

returned to users will be different.

1.9 INDEX-ORGANIZED TABLES WITH LONG PRIMARY KEYS

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

Beginning with 8.0.5, index-organized tables with long primary keys

(e.g., > 4000 bytes) will not be allowed.

1.10 X$KCBCBH AND X$KCBRBH FIXED TABLES

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

All references to X$KCBCBH should be replaced by references to

V$CURRENT_BUCKET and references to X$KCBRBH should be replaced by

V$RECENT_BUCKET.

References to the column named INDX should be replaced with ROWNUM.

1.11 CONNECT INTERNAL DESUPPORT

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

CONNECT INTERNAL is currently supported for backwards compatibility only.

It will be completely desupported in the first maintenance release after

Oracle 8.1, so that the CONNECT INTERNAL may no longer be used to connect to

Oracle. If you have not done so already, you should plan to migrate your

applications to use other connection syntax. See the Oracle8 Administrator's

Guide for further details.

1.12 2 GB FILE SIZE LIMIT

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

Oracle 8.0.4 is capable of accessing large files, subject to

Operating System dependencies. These dependencies can be

categorized as:

- file size: is the file size greater than 2 GBytes?

- file mode: is the file a file system file or a raw device file?

Many flavors of Unix support greater than 2 GBytes

file size only on raw devices.

- asynchronous IO: Does the OS supports asynchronous IO on files

for both, raw and file system files?

Is asynchronous IO supported for files that are greater

than 2 GBytes?

- OS revision: The OS release number. For example, in Solaris 2.5.1,

file size of greater than 2 GBytes is supported only on

raw devices. However, in Solaris 2.6, both raw and file systems

files can be greater than 2 GBytes.

- OS IO subsystem issues: As support for files greater than 2 GBytes

is fairly recent, many disk arrays or IO subsystems need

firmware upgrades to support large files. It is important

to determine from the OS vendor what firmware patches need to be

present for large file support.

It is very important to ascertain that the above OS dependencies

are checked before using files that are greater than 2 GBytes.


2.0 ROWIDs and Oracle7 Compatibility

====================================

Oracle8 is capable of addressing much larger databases than Oracle7.

This increased capability has imposed a limitation on the use of ROWIDs

in client applications that could influence Oracle7 applications'

compatibility with Oracle8.

The size of a ROWID, stored in either external binary format (datatype 11)

or a CHAR buffer, has not changed in Oracle8, therefore, the size and

datatypes of host variables used to hold Oracle8 ROWIDs has not changed.

Applications that employ ROWIDs to fetch rows from the database will be

compatible with Oracle8 as long as the ROWIDs are obtained from the

server and are otherwise unmodified.

However, in order to address a larger number of rows commensurate with

larger databases, the encoding scheme for ROWIDs has changed. When

fetching Oracle7 ROWIDs into CHAR datatype buffers it was possible to

interpret the string of digits as 'BBBBBBBB.SSSS.FFFF' (Block.Slot.File).

This interpretation no longer works under Oracle8. Oracle8 ROWIDs must

be treated as opaque data items whose constituent elements cannot be

accessed directly. Any applications that attempt to interpret or construct

ROWID contents will fail.

A number of functions have been provided to adapt your applications to

Oracle8. The DBMSUTIL.SQL script contains a PL/SQL package, DBMS_ROWID

that provides an API for constructing and extracting information elements

from an Oracle8 ROWID. Consult the documentation for the PL/SQL package

for more information.

Also note that, since Oracle8 ROWIDs are encoded differently from

Oracle7, any ROWIDs used by your applications that are fetched from and

stored in your Oracle7 database (for example, in CHAR or VARCHAR2

columns of tables), must be transformed to Oracle8 format. The

DBMS_ROWID package contains procedures for transforming stored Oracle7

ROWIDs to Oracle8 ROWID format. This must be done after migration to

Oracle8 8.0.3 has been successfully completed, but before applications

that depend on stored ROWIDs are run.

All indexes on ROWID columns must be dropped before migration.

When an Oracle7 client attempts to perform operations which rely on

ROWID structure, it usually results in errors. Following are known

examples of the problem:

1. INSERT AS SELECT and CREATE AS SELECT ROWID FROM <Oracle8>.table

into <Oracle7>.table.

2. JOIN of ROWID column of Oracle8 table and Oracle7 table.

3. Fast refresh of Oracle8 master and Oracle7 snapshot.

3.0 Desupport Notification for V6 Compatibility behavior

========================================================

With Oracle7, Oracle offered a Version 6 [V6] Compatibility flag that allowed

application developers developing Oracle7 applications to emulate Oracle6

behavior. With the release of Oracle8.0.3, users are cautioned that the

Version 6 compatibility flag is being desupported effective immediately in all

of the Oracle8 products including PL/SQL8, all the Oracle Precompilers, the

Oracle8 Oracle Call Interface, SQL*Module, and SQL*PLUS. The desupport of the

V6 compatibility flag is consistent with Oracle's policy of supporting

backwards compatibility and behavior from one version release upgrade to

another i.e. from Oracle6 to Oracle7 but not for more than one version release

upgrade.

Users who do not absolutely need to maintain V6 behavior are encouraged to

upgrade their Oracle7 clients to Oracle8. Users who absolutely need to

continue to emulate V6 behavior for certain applications need to maintain one

$ORACLE_HOME with an Oracle7 client for those applications. They can create a

separate $ORACLE_HOME with an Oracle8 client for those applications for which

they do not need V6 behavior.

Specifically, the V6 Compatibility flag emulated the following aspects of

Oracle6 behavior with Oracle7:

- String literals are fixed length in Oracle7 but are treated as variable

length with the V6 flag

- PL/SQL Local char variables are fixed length in Oracle7 but are treated as

variable length with the V6 flag

- Return value of SQL Functions (e.g. USER) are fixed length characters in

Oracle7 but are treated as variable length characters with the V6 flag

- Select/Fetch of a NULL with no indicator raises an ORA-1405 error with

Oracle7 but returns no error with the V6 flag

- SQL group function is called at FETCH time with Oracle7 but is called query

execution time with the V6 flag

- Describe of a fixed length string returns Type=96 with Oracle7 but returns

Type=1 with the V6 flag

All of these behaviors are being desupported with the desupport of the V6

Compatibility Flag with Oracle8.

4.0 NON-DEFERRED LINKING

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

Application developers are cautioned that Oracle plans to desupport

non-deferred mode linking beginning with the release of Oracle9 (it will

continue to be supported with all the releases of Oracle8). Recognizing these

plans, application developers should no longer use non-deferred mode linking

in developing new applications. Currently Oracle supports two linking modes:

1. Non-deferred linking: The Version 6 OCI (client) only supported

non-deferred linking which meant that for each SQL statement, a parse, a bind

and a define call were each executed separately with individual round trips

between the client and the server. This significantly increased network

traffic between the client and the server and reduced both the performance and

scalability of OCI applications.

2. Deferred linking: Unlike the Version 6 OCI, the Version 7 OCI supports

both non-deferred linking and deferred linking. Deferred mode linking

essentially defers the bind and define steps until the statement executes -

that is it automatically bundles and defers the bind and define calls to

execution time. Further, when the application is linked with deferred mode and

a special parsing call is used (the OPARSE call with the DEFFLG set to a

non-zero value), even the parse call can be deferred to execution time. Note

that deferred mode linking does not depend on the specific OCI calls that the

application uses, only on the link option that is selected.

Deferred mode linking therefore significantly reduces the number of round

trips between the client and the server and as a result improves the

performance and scalability of OCI applications. The default behavior of

Version 7 OCI connected to the Oracle7 server is deferred mode linking.

However, Version 7 OCI also supports non-deferred linking by setting specific

link time options.

Further, Version 8 OCI has two types of calls: first, all the Version 7 OCI

calls are supported with Version 8 OCI i.e. they will work with a Version 8

OCI client by relinking the version 8 OCI libraries. Second, there are

additional Version 8-specific OCI calls. The default mode with the first type

of calls continues to be deferred mode linking; however, non-deferred mode

linking is supported for these calls through all releases of Oracle8 by

setting link time options. However, Version 8-specific calls use a different

paradigm and as a result non-deferred mode linking is not necessary.

The various combinations of client side libraries and server with which

non-deferred linking is currently supported are summarized below:

Server *****************************************************************

* * Default: * Default: * * *

* Not * deferred * deferred * Not * Not *

Oracle9 * supported * Non- * Non- * supported * supported *

* * deferred * deferred * * *

* * supported * supported * * *

*****************************************************************

* * Default: * Default: * * *

* Not * deferred * deferred * Not * Not *

Oracle8 * supported * Non- * Non- * supported * supported *

* * deferred * deferred * * *

* * supported * supported * * *

*****************************************************************

* * Default: * Default: * * *

* Non- * deferred * deferred * Not * Not *

Oracle7 * deferred * Non- * Non- * supported * supported *

* mode only * deferred * deferred * * *

* * supported * supported * * *

*****************************************************************

* * Default: * * * *

* Non- * deferred * Not * Not * Not *

Oracle * deferred * Non- * supported * supported * supported *

Version6 * mode only * deferred * * * *

* * supported * * * *

*****************************************************************

OCIv6 OCIv7 OCIv8 OCIv8 OCIv9

(v7 calls) (v8 calls)

Client side libraries

Oracle will continue to support deferred-mode linking with all the releases of

Oracle8 (all 8.* releases). This has the following implications:

Applications using Version 6 OCI libraries

Since the Version 6 OCI library is not supported against the Oracle8 database,

applications using the Version 6 library cannot be run against an Oracle8

database.

Applications using Version 7 OCI libraries

Applications using Version 7 OCI libraries can run in two configurations

against an Oracle8 database:

1. They can be run with Version 7 OCI libraries against an Oracle8 database in

non-deferred mode provided link time options are set appropriately.

2. They can also be relinked with the Version 8 OCI libraries and run in

non-deferred mode provided link time options are set appropriately.

Oracle will support the first configuration through all the releases of

Oracle8. However, the second configuration will not be supported in Oracle9.

Therefore, applications that require non-deferred linking will not be able to

upgrade to Oracle9 client-side libraries.

Applications using Version 8 OCI libraries

Applications using Version 8 specific OCI calls, such as those used to access

Oracle8's object types, do not need to use non-deferred mode linking since the

Version 8 OCI uses a different paradigm. Applications using only Version 7 OCI

calls will be able to use non-deferred mode linking but only through Oracle8.1

4.1 Single-task linking

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

Single-task linking is a feature used by a limited number of Oracle's

customers primarily on the OpenVMS platform. Application developers are

cautioned that Oracle will continue to support single-task linking with all

the releases of Oracle8 (all 8.* releases) but will desupport it beginning

with the first release after Oracle8.

With single-task linking, Oracle supports two configurations to link Oracle

products and user-written applications against the Oracle database:

1. Single-task linking: In this case, applications are directly linked against

the Oracle shareable image making single-task connection to Oracle

2. Two-task linking: In this case, applications linked in a standalone

configuration can only connect to Oracle using SQL*Net's two task drivers such

as SQL*Net DECnet or SQL*Net VMS Mailbox on the OpenVMS platform. This is the

typical configuration used in the large majority of client-server

applications. With two task linking applications and tools connect with the

Oracle7 database through a programmatic interface that creates a shadow

process for each user process. This shadow process runs a copy of the Oracle

shareable image on behalf of the user process using SQL*Net protocols to

communicate between the user and shadow processes. Therefore, with this

interface, user routines that invoke the Oracle7 Server functions run as one

process or task, and the Oracle7 routines that execute these functions run as

the second task.

Oracle will continue to support single-task linking with all the releases of

Oracle8 (all 8.* releases) but will desupport it beginning with the first

release after Oracle8. Application developers who would like to use

single-task linking to run their applications will not be able to do so

against the first server release after Oracle8.

5.0 PL/SQL

==========

5.1 FIPS FLAGGING

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

FIPS flagging on non-compliant SQL introduced in Oracle8 is not supported

in the 8.0.3 (or higher) release of PL/SQL.

5.2 STRICTER SYNTAX CHECKING OF CALLS

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

In 8.0.3 a stored procedure declared as

foo (bar in number)

could be called as:

foo (bar in number);

instead of the simpler and more correct:

foo(bar);

Now in 8.0.4 using the "in number" in the call to the procedure

gives a syntax error.

5.3 IMPLICIT COLUMNS AND NUMBER OF COLUMNS

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

Tables containing Row Objects (Object tables) or Column Objects also

have a 1000 column limit. Oracle creates a column for every leaf-level, scalar

attribute of an object type. Additionally, Oracle creates implicit columns for

storing the system-generated Object Identifier for a row object, and a Nested

Table Identifier for a Nested Table column. Therefore, the number of

leaf-level attributes in an object type used to create an object table must

be less than 1000.

5.4 INTER-VERSION RPC AND DEFAULT ARGUMENTS

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

Function and procedure calls that are from a server to a second server

running a different version of Oracle, and using defaulted argument

values, may have problems. Customer-visible symptoms may vary

depending upon the source code involved; PLS-801[1411] and

PLS-801[1407] are quite likely, but other symptoms including silently

wrong results are possible. The suggested workaround is to provide an

explicit value for each argument on any call through a database link

if it is possible that the sending and receiving systems are running

different versions of Oracle.

5.5 ORACLE7 PL/SQL COMPATIBILITY ISSUES

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

5.5.1 Behavior Change Caused by Bugfix 237911 After Upgrading to PL/SQL

2.1.5 or Any Higher Release

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

Description of Behavior Change:

The PL/SQL compiler must check that the elements of the INTO-target

list of a select statement or cursor fetch statement are assignable and

report errors PLS-00363 or PLS-00403 if they are not assignable. PL/SQL

2.1.4 and earlier releases failed to correctly check the assignability

of all but the last element in the INTO-target list of select and fetch

statements.

Consider the following example PL/SQL procedure:

PROCEDURE p (...) IS

...

BEGIN

SELECT * INTO <<a>, <<b>, <<c> FROM <<table>;

END;

PL/SQL 2.1.4 correctly checked the assignability of <<c> while failing

to do the complete set of checks for <<a> and <<b>. In particular,

it failed to report errors on <<a> and <<b> if they were any of the following:

- a reference to an IN parameter

- the name of a function

- a string-literal

- a reference to a scalar for-loop variable

- a reference to a constant

- a reference to an enumeration-literal (e.g.: TRUE, FALSE)

Releases 2.1.5 and higher now correctly report this error.

If you upgrade to release 2.1.5, or higher, and your procedure has

the constructs described above, an attempt to recompile your procedure,

either automatically or manually, will result in either

- error PLS-00363, if the upgrade is to 2.1.5

- error PLS-00403, if the upgrade is to any release higher than 2.1.5

Corrective Action:

In 8.0.3 and higher releases you will need to fix the PL/SQL code.

Decide carefully if your procedure should use IN parameter

or an IN OUT parameter. Note that in 2.2 and 2.3 there is an

init.ora event available to disable bugfix 237911

but this event has been obsoleted in Oracle8.

If you are running 2.2.x or 2.3.x, do one of the following:

1. Disable bugfix 237911 permanently by performing the

following steps:

a. Shutdown the database instance

b. Add the following line to the INIT.ORA file:

event="10925 trace name context forever"

c. Start up the database instance

2. Disable bugfix 237911 temporarily to allow your procedure

to compile by performing the following steps:

a. Turn off bugfix 237911 temporarily by doing:

ALTER SESSION SET EVENTS='10925 trace name context forever';

b. ALTER PROCEDURE <proc> COMPILE;

c. Enable bugfix 237911 again by doing:

ALTER SESSION SET EVENTS='10925 trace name context off';

If you are running 2.1.6, do the following to permanently

disable bugfix 237911 in 2.1.6:

Call a Support Rep and ask for a 2.1.6 patch for bugfix 284597

to backout bugfix 237911.

5.5.2 Behavior Change Caused by Bugfixes 235190 and 235193

After Upgrading to PL/SQL 2.1.6 or Any Higher Release

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

The PL/SQL compiler must flag multiple incomplete (forward) type

declarations for the same type with error PLS-00105. It must also

flag incomplete types that are not completed within the same compilation

unit (stored PL/SQL procedure/package/function) with error PLS-00311.

PL/SQL 2.1.5 and earlier releases failed to flag these errors

(see bugs 235190 and 235193). PL/SQL 2.1.6 and higher releases

now correctly flag these errors. However, because of this combination

of errors, certain PL/SQL programs that previously compiled without

errors will now compile with either error PLS-00105 or PLS-00311.

For example:

PACKAGE PKG1 IS

TYPE r;

TYPE r; -- will now compile with error PLS-00105

TYPE r IS record (a VARCHAR2(10));

END;

PACKAGE PKG2 IS

TYPE r; -- will now compile with error PLS-00311

END;

Corrective Action:

You have two choices:

a) If you are in a position to fix the PL/SQL code:

Remove all but one of the incomplete type-declarations and recompile procedure.

b) If fixing the PL/SQL code is not an option, then:

If you are running 2.2.x or 2.3.x, do one of the following:

1. Disable bugfixes 235190 & 235193 permanently by performing

the following steps:

a. Shutdown the database instance

b. Add the following line to the INIT.ORA file:

event="10927 trace name context forever"

c. Start up the database instance

2. Disable bugfixes 235190 and 235193 temporarily to allow your

procedure to compile by performing the following steps:

a. Turn off bugfix 235190 & 235193 temporarily by doing:

ALTER SESSION SET EVENTS='10927 trace name context forever';

b. ALTER PROCEDURE <PROC> COMPILE;

c. Enable bugfixes 235190 and 235193 again by doing:

ALTER SESSION SET EVENTS='10927 trace name context off';

If you are running 2.1.6, do the following to permanently

disable bugfixes 235190 and 235193:

Call your Support Rep and ask for a 2.1.6 patch for bugfix 284598

to backout bugfixes 235190 and 235193.

5.6 OPEN AND CLOSED BUGS

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

5.6.1 KNOWN OPEN BUGS

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

BUG 593911

When creating a large PL/SQL package, the process doing the creation

may hang if resource limits (memory, disk space) are encountered.

Once the resource limits are addressed, the package can be created

successfully.

BUG 378133

Programs that worked in Oracle 7.3 and used records with refcursor

fields, will not compile with following error in 8.0.2:

err 989, sev 1, (0,0) Cursor Variable in record, object,

or collection is not supported by this release.

BUG 403994

Currently 4000 is the maximum value allowed for char(acter) varying and when

a regular table is created using char(ater) varying (4001), an ORA-00910

is generated; however, there is no error when an adt, varray or nested table

is created w/ a char(acter) varying attribute that exceeds the 4000 maximum

limit.

Example:

SVRMGR> create type t1 (c1 char varying(4001), c2 character varying(4001));

Statement processed.

SVRMGR> create type v1 is varray(10) of char varying(4001);

Statement processed.

SVRMGR> create type nt1 as table of character varying(4001);

Statement processed.

Workaround: None

BUG 488295

Description/Symptoms:

SQL does not support references to pl/sql "collection methods"

(e.g.: COUNT, FIRST, LAST, EXISTS, PRIOR, NEXT, DELETE, LIMIT, TRIM, EXTEND)

on a collection-type column or attribute inside a SQL DML statement.

Upon encountering such references inside SQL DML statements in PL/SQL

blocks, the PL/SQL compiler must issue an error message saying that such

references are not supported. However, the compiler fails to issue such

an error and goes on to incorrectly do one of the following:

a) issue an incorrect error saying name not declared or

b) (worse), resolve the name incorrectly to another object.

Example 1)

declare V NUMBER; begin select CORL.COL_T3.COUNT into V from TBL CORL; end;

/

Here the compiler issues PLS-201 saying CORL.COL_T3 not declared.

Example 2)

connect CORL/SOMEPASSWORD

create package COL_T3 is function COUNT return number; end;

/

create package body COL_T3 is function COUNT return NUMBER is

begin return 10; end; end;

/

connect scott/tiger

declare V NUMBER; begin select CORL.COL_T3.COUNT into V from TBL CORL; end;

/

This ends up resolving to the packaged function COL_T3.COUNT in user CORL.

BUG 505791

In Pro*C or OCI

1) Open a ref cursor in a begin end block with a host bind in WHERE clause

2) Close begin-end block cursor

3) Fetch multiple times from ref cursor; at some point it causes

the cursor to reexecute which uses the *stale* address of the host bind

thus potentially giving bad results or causing an access violation.

BUG 344074

Due to a bug in 8.0.4, the DBMS_SQL.PARSE function will

now signal a PL/SQL exception if it is called to execute a CREATE of

a PL/SQL function or procedure which compiles with warnings. Previously,

DBMS_SQL.PARSE did not signal such exceptions on warnings. This change

in the default behavior will only exist in the 8.0.4 release. Beginning

in 8.0.5, the default behavior for DBMS_SQL.PARSE will be to not signal

an error when a statement compiles with warnings.

5.6.2 CLOSED BUGS

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

This section gives an abstract of some of the key customer-visible bugs

that were fixed in 8.0.4

Bug 523301

A PLS-123 error can occur in the 8.0.3 release on a program

which compiled fine in 7.3.

Bug 514136

If your program is very large, and has many 'select *' or operators

'||', your program might not compile in 8.0 even though it

does in 7.3 Fix requires recompilation.

Bug 516326

Version 6 compatibility has been disabled in RDBMS, PL/SQL 8.0.4

Bug 504692

Use of SYS.PSTUB to generate client-side stubs for calls to db stored

databases) would not see those procedures with a parameter using a

procedures (a system used by PL/SQL V1 clients when calling to V7

or V8 message during overload resolution for the callsite.

'character set any_cs' clause. This would frequently lead to an error.

6.0 UTILIIES

============

6.1 DOCUMENTATION ERRATA

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

Chapter 4: Case Study 2: Loading Fixed-Format Fields

The case study control file for this case provided on your distribution

medium is incorrect. To use the file ULCASE2.CTL, you you must edit it to

add the value for the fixed format load ("fix 52"):

LOAD DATA

INFILE 'ulcase2.dat' fix 52

INTO TABLE emp

[...]

6.2 SQL*LOADER

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

KNOWN OPEN BUGS

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

BUG 571751

Duplicate rows are loaded, but the index enforcing the constraint is

put into index unusable state. It is necessary to disable the constraint,

re-enable the constraint and filter out the duplicates.

BUG 525134

SQL*Loader returns an error when using OS authentication on a remote

procedural call.

BUG 561983

When processing a variable data file using the "VAR" option such that

each record starts with the 5 length bytes, if a record is rejected when

it is written to a bad file, the length bytes are not included, meaning

a) a new control file is needed to load the correct records or

b) the data contains linefeeds and you cannot load it.

6.3 EXPORT

----------

KNOWN OPEN BUGS

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

BUG 574664

Create snapshot DDL is incorrect when exporting snapshot of another user

in user mode. The import of the snapshot returns an error. The

workaround is to do the export as the user.

BUG 573946

Export should create unique and primary keys enabled , rather than the two

step enable novalidate then enable, when the index is unique. Unique

indexes are physically incapable of storing duplicates, so the novalidate

state is effectively ignored in this case. This cannot be changed as long

as export depends on unique indexes by ENABLE NOVALIDATE constraints.

CLOSED BUGS

-----------

BUG 490837

Export would truncate the data file size in the CREATE TABLESPACE statement

when the data file size was greater than 4 GB.

Bug 334685

IMPORT/EXPORT versions before 8.0.4 were not be able to process the new

'ALTER TABLE MODIFY' statement. Thus, the user had to manually enter

the default clause.

7.0 SQL EXECUTION

=================

7.1 OPTIMIZER

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

CLOSED BUG

----------

BUG 502927

Creating a partitioned table with a unique local index, inserting some

unique values, analyzing the table and looking at the statistics. The

number of distinct keys for a unique local index is returned as the

maximum of the number of unique keys across all partitions, not the sum.

BUG 524658

Queries with very large IN-lists using bitmap indexes can use large

amounts of memory during compilation.

7.2 PARALLEL QUERY EXECUTION

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

KNOWN OPEN BUG

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

BUG 490790

CREATE INDEX with NOSORT and PARALLEL currently raises an internal error

ORA-600, which results in ORA-12801. Create index is not supposed to

parallelize when nosort is used.

8.0 MIGRATION

=============

Due to bug #571546, you should NOT run catalog.sql after downgrading from

8.0.4 to 8.0.3. The recreation of package STANDARD causes this bug. Since

catalog.sql will recreate STANDARD, we have provided a new script

(catd8003.sql) that effectively does everything the 8.0.3 catalog.sql script

does, except for recreating package STANDARD.

Please replace these steps for the instruction to run catalog.sql during the

8.0.4 to 8.0.3 downgrade...

Step #1 Copy catd8003.sql to your catalog directory in the 8.0.3 distribution

(from the 8.0.4 distribution).

Step #2 Run catd8003.sql connected as user SYS.

NOTE: Do not run 8.0.3's catalog.sql after downgrading from 8.0.4 to 8.0.3.

CLOSED BUGS

-----------

BUG 503622

When migrating from 7.x, before the migration, drop the V$BH view and

clean up the entry in OBJ$. If migration has already been performed,

delete V$BH and type# is 4 (view) from view$ and typed_view$; and do not

delete from OBJ in this case.

BUG 503636

When migrating from 7.x to 8.0.3 and when upgrading from 8.0.2 to

8.0.3, drop the views dba_histograms before starting the migration or

upgrade.

9.0 OBJECT SQL

==============

9.1 KNOWN OPEN BUGS

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

BUG 556122

Oracle does not support outer-join predicate which includes an

attribute reference via a scoped REF column or attribute.

Workaround:

Specify the table with the scoped REF column as a degenerate

derived table in the from clause. For example,

select ....

from customers c, (select * from orders) o

where.....

Bug 573746

Fetching of 10000 oracle number column values into DBMS_SQL array

results in a core dump.

BUG 590783

Dereferencing an object containing a large VARRAY, e.g., over 170

numbers or over 434 dates, can produce internal error ORA-0600.

10.0 ORACLE CALL INTERFACE (OCI)

================================

The following information on object access can be added to the release 8.0

Oracle Call Interface Programmer's Guide, Chapter 8.

10.1 OCI vs. SQL Access to Objects

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

If an application needs to manipulate a graph of objects (inter-related via

object references) then it is more effective to use the OCI navigational

interface rather than the SQL interface for accessing objects. Retrieving a

graph of objects using the SQL interface may require executing multiple

SELECTs which would mean multiple network roundtrips. Using the complex object

retrieval capability provided by the OCI navigational interface, the

application can retrieve the graph of objects in one OCIObjectPin() call.

Consider the update case where the application retrieves a graph of objects

and modifies it based upon user interaction and then wishes to make the

modifications persistent in the database. Using the SQL interface, the

application would have to execute multiple UPDATE statements to update the

graph of objects. If the modifications involved creation of new objects and

deletion of existing objects then corresponding INSERT and DELETE statements

would also need to be executed. In addition, the application would have to do

more bookkeeping, such as keeping track of table names, because this

information is required for executing the INSERT/UPDATE/DELETE statements.

Using the navigational interface's OCICacheFlush() function, the application

can flush all modifications (insertion, deletion and update of objects) in a

single operation. The navigational interface does all the bookkeeping, thereby

requiring less coding on the part of the application. So for manipulating

graph of objects the navigational interface is not only efficient but also

provides an easy to use interface.

Consider a different case in which the application needs to fetch an object

given its REF. In the navigational interface this is achieved by pinning the

object via the OCIObjectPin() call. In the SQL interface this can be achieved

by dereferencing the REF in a SELECT statement (e.g. SELECT DEREF(ref) from

tbl;). Consider situations where the same REF (i.e. reference to the same

object) is being dereferenced multiple times in a transaction. By calling

OCIObjectPin() with the OCI_PIN_RECENT option, the object will be fetched from

the server only once for the transaction and repeated pins on the same REF

will result in returning a pointer to the already-pinned object in the cache.

In the case of the SQL interface, each execution of the SELECT DEREF...

statement would result in fetching the object from the server and hence would

result in multiple roundtrips to the server and multiple copies of the same

object.

Finally, consider the case in which the application needs to fetch a

non-referenceable object. For example,

CREATE TABLE department

(

deptno number,

deptname varchar2(30),

manager employee_t

);

employee_t instances stored in the manager column are non-referenceable. Only

the SQL interface can be used to fetch manager column instances. But if

employee_t has any REF attributes, OCI calls can then be used to navigate the

REF.

10.2 KNOWN OPEN BUG

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

Bug 441894

An interrupt signal "^c" during logon causes an access to potentially

un-allocated memory, resulting in a core dump. Until patch installation,

users should avoid interrupting the DBMS logon sequence.


10.3 CLOSED BUGS

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

Bug 458873

OCIDescribeAny can't handle dblink, and in order for SQL*Plus to

convert upi to oci, we have to have this function support it in order to not

break V7 functionality.

Bug 482533

When you perform a SQL function within the select-list,

extra labels are displayed along with the description

of the SQL function.

Bug 496281

SQLPlus 8.0.3 does not support describe of tables, views, procedures

and functions of a V7 server. Use SQLPlus V7 release to circumvent

this problem.

Bug 508970

OCIDescribeAny can now be used to describe fixed tables and views.

BUG 536553

OCISessionEnd was core dumping after a successful server attach and an

unsuccessful server attach (intended for negative testing) to an already

connected client.

Bug 378287

OCIChangePassword(ocicpw) changes password even if the length is more

than 32 characters and after the password changes, you cannot login to the

user account. workaround: Use the password with less than 32 characters.

Bug 401112

If 'create database' is issued with no file size specified then a

default file size of 5M is used which is too small to hold the

catalog views.

Bug 424368

If the enqueue_resources parameter is set to a very low value then

the instance can crash during a create tablespace statement.

Bug 440068

The $RP package for a table with blob and/or clob columns supports

only the V8 interface (min_communication=>true). However, a rowid-based

snapshot must use min_communication=>false. Hence we can not

successfully

push the queue for changes to the snapshot.

Bug 443238

Description: When OCITransForget is called without setting a global

transaction identifier (using OCIAttrSet) Oracle

generates

internal error number 12309.

Solution: Ensure that the transaction handle has a valid global

transaction

identifier before calling OCITransForget.

Workaround: Pass a valid transaction handle to OCITransForget

11.0 XA

=======

When building a TP-monitor XA application ensure that the TP-monitors

libraries (that define the symbols ax_reg and ax_unreg) are placed in the link

line before Oracle's client shared library. If your platform does not support

shared libraries or if your linker is not sensitive to ordering of libraries

in the link line use Oracle's non-shared client library. These link

restrictions are required only when using XA's dynamic registration (Oracle XA

switch xaoswd).

V8 database will not support 7.1.6 XA calls (although it does support 7.3 XA

calls). The answer, hence, is that they need to relink the tuxedo applications

with Oracle 8 XA libraries.

11.1 CLOSED BUG

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

Bug 493816

Workaround: Pass valid XIDs

PROBLEM DESCRIPTION: A badly formatted XID passed to the server could

crash the server.

12.0 TRANSPARENT APPLICATION FAILOVER

=====================================

Select Failover is implemented by transparently reexecuting the select

statement and then bringing the cursor up to the same point as it was before

the failure. Thus, if the original query to an hour, failing over the query

will also take about an hour. Also, Select Failover only occurs after Session

Failover has happened. Thus, if a client is doing a parallel query and a slave

dies, the query will not be transparently restarted.

12.1 KNOWN OPEN BUG

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

Bug 402700

If the client loses its connection while reading a lob, the user must

manually replay the read command after the application fails over to

the surviving node.

13.0 ADVANCED QUEUING

=====================

The new client-side AQ propagation features are only allowed under 8.0.4

compatibility. A callback function was implemented to check for

compatibility when the database compatibility is reset.

Fine grain access control to AQ objects.

Oracle8's Advanced queuing packages DBMS_AQADM and DBMS_AQ are owned by

SYS and they operate under SYS's security domain. This allows any user who has

been granted AQ_ADMINISTRATOR_ROLE to create, drop, start and stop any queues

in any user schema. Similarly, any user who has been granted AQ_USER_ROLE role

can enqueue and dequeue to any queues. However, the user will not need any

other DML or DDL privileges to use or manage the queues.

When fine grain security is required, customers can build a simple

application wrapper on top of DBMS_AQADM and DBMS_AQ, that will limit the

application users to access or manage a specific set of queues.


14.0 INITIALIZATION PARAMETERS

==============================

14.1 NEW PARAMETERS

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

Several parameters have been added. For more information, see

Oracle8 Reference.

14.2 KNOWN OPEN BUG

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

Bug 484006

When the fixed_date init.ora parameter is set, objects do not get

invalidated when they should.

15.0 BACKUP AND RECOVERY

========================

15.1. Linking with a Media Manager

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

The following example is UNIX specific. Please see your platform

specific O/S documentation, and the Media Manager's documentation

for information on how to link Oracle with the Media Manager.

On Unix systems, the server can be re-linked, specifying the media

manager API library on the re-link command line.

Below is an example of how to integrate Oracle with two Media Managers.

The examples assume the location is in '/usr/lib', and name of the

library provided by the Media Manager Vendor is 'libobk.so' on Solaris,

and 'libobk.sl' on HP/UX.

WARNING:

You should ensure all database using this ORACLE_HOME are shutdown before

performing this step.

On Solaris, using Legato Networker:

cd $ORACLE_HOME/rdbms/lib

make -f ins_rdbms.mk ioracle LIBMM=/usr/lib/libobk.so

On HP, using EMC's Epoch:

cd $ORACLE_HOME/rdbms/lib

make -f ins_rdbms.mk ioracle "LIBMM=/usr/lib/libobk.sl -lC"

15.2 Special Note for Integration with Legato Networker

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

Note on DMO scheduled backups with obkasm.

As part of the Database Module for Oracle, Legato provides an ASM

(Application Specific Module) called obkasm. An ASM is a program

that can be used in a NetWorker directive to specify the way that

a set of files is to be backed up according to a schedule.

obkasm is designed specifically for use with the Oracle Enterprise

Backup Utility (EBU) and is NOT compatible with Oracle8. As a result,

setting up NetWorker schedules to use obkasm is not supported

with Oracle8 Recovery Manager.


15.3 CLOSED BUGS

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

Bug 434807

When an incremental backup (> level 0) was performed after

adding a datafile, the whole backup terminated with errors. This was

because there are no pre-existing level 0 backup of the new datafile.

Work around was to do a level 0 incremental backup a datafile

immediately after adding it.

BUG 567062

RMAN now checks the version of the dbms_backup_restore package, and the

version of the recovery catalog packages. Errors were issued if a version

mismatch was detected. If a customer upgrades from 8.0.3 to 8.0.4 , but

forgets to install the upgraded PL/SQL packages, RMAN will fail and issue

either RMAN-6185 or RMAN-6186.

BUG 558352

The previous doc for linking Oracle wiht Media Manager should be changed

to read LLIBMM, instead of LIBMM.

15.4 RECOVERY MANAGER

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

New Features:

* catalog datafilecopy ... LEVEL=0;

Allow a user-created datafilecopy to be cataloged as a level 0 backup. This

allows subsequent incremental backups to be based on the user-created

backup.

* CHECK READONLY option on RESTORE and RECOVER commands:

To fix bug 510199, RESTORE DATABASE and RECOVER DATABASE have been changed to

avoid processing datafiles that are in offline or read-only tablespaces, if

they were offline or read-only at the desired point-in-time. It is usually

not necessary to process such files because the file does not change while it

is offline or read-only, so should not need to be restored or recovered.

If the CHECK READONLY option is specified on the RESTORE DATABASE or

RECOVER DATABASE command, RMAN will examine all read-only datafiles to make

sure that they are the correct versions of those files before omitting them

from the restore or recover operation. This option should be used when it is

known that some read-only files have been damaged, and should be restored or

recovered.

Note that offline and read-only files are only omitted when the entire

DATABASE is being restored or recovered. If DATAFILE or TABLESPACE is

is specified instead, then all the specified datafiles, or all the datafiles

in the specified tablespaces, will be processed regardless of their status.

* product factoring

The Oracle8 Product allows only 1 channel to be allocated at a time.

Incremental backups are not supported. RMAN returns an error if these

features are used in the Oracle8 Product. (These limitations are present

only in Oracle8; there are no such limitations in the Oracle8

Enterprise Edition.)

* DELETE SCRIPT

This command is now implemented.

* SETSIZE parameter

This is a new optional parameter for the BACKUP command. It specifies the the

maximum size of a backup set. The value is specified in units of kilobytes

(1024 bytes). The actual size of the backup sets that are created will never

be larger than the specified SETSIZE value. For archivelog backup sets,

the actual size will usually be close to the specified SETSIZE value. For

datafile and datafilecopy backup sets, the actual backup set size will

usually be less because of unused block compression and because of incremental

backup.

* Load balancing

RMAN now attempts to assign files to backup sets so that each backup set

will *read* approximately the same number of blocks of input. This does not

guarantee that each backup set will be the same size. Backup sets will differ

in size because of unused block compression, and because of incremental backup.

* Channel utilization

When multiple channels have been allocated for performing a BACKUP, then RMAN

will automatically partition the backup into a sufficient number of backup

sets so that all channels will be used. Note that when the number of files to

be backed up is small, then RMAN may have to make backup sets smaller than the

SETSIZE parameter. When there are more channels than files to be backed up,

then some channels will not be used.

* Inline command files

It is now possible to run an RMAN command file after the

executable has been started. The syntax is similar to svrmgrl and sqlplus:

@file_name. The specified file is processed as if its contents had appeared

in place of the @ command. Note that the file must contain only complete

recovery manager commands. A syntax error will result if the file contains

a partial command. @@file_name is also supported, the difference being that

the filename need not be a full pathname: the current working directory is

assumed. This enhancement satisfies bug 433605.

To backup to and restore from tape when using Recovery Manager, you

must have a Media Manager integrated with Oracle. For more information,

see the Oracle8 Backup and Recovery Guide.

15.5 TABLESPACE POINT IN TIME RECOVERY CLOSED BUGS (TSPITR)

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

Bug 502117

When running the view TS_PITR_CHECK non partitioned global indexes were not

detected, the view has been fixed to capture dependencies between indexes

(partitioned or non-partitioned) and tables that are not fully contained

in the recovery set.

Bug 493620

TSPITR does not allow snapshots in the recovery set.

TS_PITR_CHECK did not detect snapshots without logs in the recovery set; this

is now fixed.

Bug 490157

The import phase of TSPITR used to fail with IMP-00015 when trying to import

bitmap indexes. The index had to be dropped and recreated at the end of TSPITR.

This has been fixed.

Bug 520050

It is quite easy for users to overwrite the primary database's logfiles during

a clone resetlogs in TSPITR, this can happen if the clone controlfile is

accidentally pointing to the primary logfiles' location.

In 8.0.4 new functionality has been added which forces the clone logfiles to be

renamed using either the LOG_FILE_NAME_CONVERT init.ora parameter or the

ALTER DATABASE RENAME FILE command.

16.0 PARALLEL SERVER

====================

ROLLING UPGRADE CAVEATS:

While parallel server rolling upgrade allows simultaneous operation of

multiple Oracle instances running different product versions against

the same database, there are some special considerations and

limitations while the upgrade of the first instance is taking place.

Part of the upgrade procedure recreates the SQL catalog and

Oracle-supplied PL/SQL packages by running a series of scripts. While

these scripts are being processed, the following problems may be

encountered:

As upgrade scripts recreate or drop/create objects, they must acquire

exclusive locks on each object. While one or more parallel server

instances are in operation, these object definitions may be locked in

share mode for the duration of a program interface call. For

frequently used objects, this means that the upgrade script may

proceed more slowly than usual as it queues for exclusive locks on

each object.

At intermediate points in these scripts, users referencing catalog

views through a public synonym may briefly encounter "ORA-942 table or

view does not exist" as the synonym is dropped and recreated. If such

errors are encountered the operation may be retried; the period of

invalidation is very brief. If necessary the errors may be avoided

entirely by fully specifying object names, avoiding use of the

synonyms. Note, this recommendation applies only to the

Oracle-defined synonyms present in the catalog scripts, not to

synonyms present in application code.

The upgrade process recreates and recompiles all Oracle-supplied

server-side PL/SQL procedures and packages. Since all PL/SQL code

directly or indirectly depends on package STANDARD, the effect will be

to force recompilation of all PL/SQL packages, procedures, and

functions. All users who have referenced and instantiated a PL/SQL

package will encounter "ORA-4061 existing state of package has been

discarded" at the next reference to that package, as the entrypoints

and memory layout of the recreated package may be different from the

old package. Re-executing the same statement will reinstantiate all

the packages.

At intermediate points in the upgrade scripts, the Oracle-supplied

server-side PL/SQL procedures and packages may not be consistent. For

example, the number of parameters to a procedure declared in an

internal PL/SQL package can change between releases. After the

procedure declaration is changed, the procedure implementation and all

callers of the procedure must change to reflect the new declaration.

A user submitting a request that directly or indirectly invokes

Oracle-supplied PL/SQL procedures and packages may encounter

"ORA-06550" and "PLS-00905" exceptions when the request comes across

an invalid object that can not yet be successfully recompiled. It is

strongly recommended that users wait until the upgrade scripts

complete before submitting such a request.

For the reason above it is strongly recommended that upgrade scripts

be run during a period of minimal activity on all database instances.

Once the upgrade scripts have completed using one instance, they need

not be repeated on other instances as they are upgrade to the newer

code version.

Addendum:

8.0.4 PLSQL requires 8.0.4 packages, and cannot process 8.0.3 packages.

You can upgrade one instance at a time and limit downtime.

Oracle basic replication and Oracle advanced replication do not

support rolling upgrade.

17.0 DATABASE SECURITY

=======================

17.1 PASSWORD MANAGEMENT

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

Some of the Password Management features are not supported by svrmgrl.

This means that when a password is about to expire and is in the grace period,

if the user connects through svrmgrl, the warning message that the password is

about to expire will not appear.

Also, if the password has already expired, it simply returns the error and

does not allow the user to connect. Whereas SQLPlus does display the message

that password has expired and asks for the old and new passwords and changes

the password after authentication, verification, etc.


17.2 KNOWN OPEN BUGS

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

Bug 523359

In dedicated server mode, you can successfully connect to the

database with OSS authentication. But on multi-threaded server mode, you fail

to establish connection with OSS authentication and ORA-3113 "end of file in

communication channel" occurs.

Bug 562225

The server-to-server mutual authentication step performed as part of

a privileged database link does not check that all prior databases in

a chain of links are trusted.

18.0 LOBs

=========

The user will not be able to specify the LOB index clause in

future releases of Oracle. The user should *NOT* put the

LOB index in a different tablespace than the LOB data. In a future

Oracle release, if the LOB index is in a different tablespace than

the LOB data, export/import will coalesce the LOB index with

the LOB data.


19.0 STRUCTURED QUERY LANGUAGE (SQL)

====================================

19.1 Documentation Errata

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

Documentation regarding the DBMS_UTILITY schema (Chapter 10 in the Application

Developer's Guide) is not completely correct. Currently, it is as follows:

"This procedure is equivalent to calling alter_compile

on all procedures, functions, and packages accessible by you.

Compilation is completed in dependency order."

It should read:

"This procedure is equivalent to calling alter_compile

on all procedures, functions, packages and triggers accessible by

you. Compilation is completed in dependency order."

19.2 SYNTAX DIAGRAMS

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

Some of the syntax diagrams in the Oracl8 SQL Reference did not filter

properly into the HTML version of the online documentation. If you find

the syntax diagram for a given command illegible or confusing in the HTML

version, please refer to the PDF version of the online documentation, or to

the printed SQL Reference, Volume 2.

19.3 KNOWN OPEN BUG

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

Bug 450760

In 8.0.2, if you declare a forward declaration for a type and then

attempt to ALTER the type with REPLACE option, the RDBMS fails to

issue an error message. This will then get you into a state where you can

incorrectly create a valid, but rather unusable type without any

attributes in it.

Example:

create type t1;

alter type t1 replace (member function f1 return number);

# The above compiles validly, but has no meaning because there are

# no attributes.

19.4 CLOSED BUG

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

BUG 490888

This problem has been fixed in 8.0.4 by disallowing ROWID access inside

of an INSTEAD-OF trigger. In future releases, this might be relaxed,

so that ROWID can be accessed in triggers over simple views and other views

where the rowid can be got from the underlying tables.

20.0 NATIONAL LANGUAGE SUPPORT

==============================

20.1 OPEN BUGS

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

Bug 454867

The banner displayed at import start up time has garbage date in a

Korean NLS environment.

Bug 469386

Character set conversion fails when the character sets are same but

the nchar character sets are different.

21.0 REPLICATION

================

21.1 INTEROPERABILITY

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

Oracle8 Masters can interoperate with masters on Oracle7.3.3 and above.

Snapshots with Oracle8 Masters must be on Oracle7.3.4 or above.

Updatable Oracle 8 snapshots can have masters on Oracle 7.3.3

and above. Read-only Oracle 8 snapshots can have masters on Oracle 7.1.3

and above.


21.2 DBMS_DEFER_SYS.COPY REMOVED

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

The COPY procedure of the DBMS_DEFER_SYS package has been removed.

CLOSED BUG 433036

Changes to the $RP and $RR replication packages in 8.0.3 reduced the

maximum number of columns in a replicated table and the maximum amount

of conflict resolution on a replicated table that the ORACLE server

can support as compared to the 7.3 release. The 8.0.4 fix for bug

433036 increases the maximums to at least the maximums in release 7.3.

As a result, a table that may be replicated in release 7.3 and in

release 8.0.4 may not be able to be replicated in release 8.0.3.

Migrating an 8.0.4 database to release 8.0.3 or adding an 8.0.3

database to an 8.0.4 replication configuration may cause problems for

a replicated table that has many columns or a large amount of conflict

resolution.

21.3 WARNING

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

Oracle basic replication and Oracle advanced replication do not

support rolling upgrade.

21.4 KNOWN OPEN BUGS

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

Bug 574881

Replication manager connects as SYSTEM to create users and grant privileges

for replication administration. In particular, sys.dbms_repcat_admin is used

to grant repadmin privileges to users. This does not work in a database

with dictionary protection enabled because SYSTEM does not have

execute privileges for this package. But SYSTEM is granted the

EXECUTE_CATALOG_ROLE role. Therefore, this problem can be resolved by

by granting execute on sys.dbms_repcat_admin to EXECUTE_CATALOG_ROLE:

GRANT EXECUTE ON dbms_repcat TO EXECUTE_CATALOG_ROLE

Bug 591389

The rep_delete procedure in the $RP package deletes a row in the

table. The WHERE clause assumes every column may or may not be

sent. This is not true for the key columns, which are always sent.

The bug forces a full table scan as opposed to an index look up.

Bug 588595

Having a subset of replicated columns for an updatable snapshot is

not supported. However, creating such a snapshot succeeds. An error

will be raised when a refresh is attempted for that snapshot.

21.5 CLOSED BUGS

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

Bug 452485

Modifications to a master table's partitions (e.g., drop partition,

truncate partition, etc.) are not captured in the snapshot log. Thus

snapshots should be forced to perform a complete refresh after modifications

are made to a partition. Currently, the system does not force snapshots to

perform a complete refresh after modifications to a partition.

Bug 474694

When a configuration involves any 7.x databases, always set

min_communication=false.

22.0 SPACE MANAGEMENT

=====================

22.1 CLOSED BUG

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

BUG 461293

The new error, ORA-3232, may be returned during queries that successfully

completed in earlier Oracle versions. The error message was introduced as a

part of resolving bug 461293.

The error is returned during hash joins where the necessary extent size cannot

be allocated from a temporary tablespace. The error can only be encountered if

the HASH_MULTIBLOCK_IO_COUNT init.ora parameter is set to a value other than

the default. The parameter can be set in the init.ora file or dynamically by

the ALTER SYSTEM SET statement. If the parameter is set in one of these ways,

then replace HASH_MULTIBLOCK_IO_COUNT with the parameter's value in the query

below. This will report the tablespaces that may encounter the ORA-3232 during

hash joins.

select t.tablespace_name, t.next_extent

from dba_tablespaces t, v$parameter p

where t.contents = 'TEMPORARY' and

t.next_extent/p.value < HASH_MULTIBLOCK_IO_COUNT and

p.name = 'db_block_size';

Typically, the simplest resolution is to change the NEXT value for each

tablespace using the ALTER TABLESPACE DEFAULT STORAGE statement. An

alternative is to decrease the value of HASH_MULTIBLOCK_IO_COUNT.

Note that determining the value of HASH_MULTIBLOCK_IO_COUNT from v$parameter

may be misleading as the default value was erroneously set to 8 in earlier

versions. The bug fix for 461293 corrects the default value to 1.