-------------------------------------------------------------------------
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.