Oracle9i Database Migration
Release 1 (9.0.1)

Part Number A90191-02
Go To Documentation Library
Home
Go To Product List
Book List
Go To Table Of Contents
Contents
Go To Index
Index

Master Index

Feedback

Go to previous page Go to next page

9
Compatibility and Interoperability

This chapter describes compatibility and interoperability issues that may arise because of differences between Oracle releases. These differences may affect general database administration and existing applications.

This chapter covers the following topics:

What Is Compatibility?

When you upgrade to a new release of Oracle, certain new features may make your database incompatible with your previous release. Your upgraded Oracle database becomes incompatible with your previous release under the following conditions:

The COMPATIBLE Initialization Parameter

Oracle enables you to control the compatibility of your database with the COMPATIBLE initialization parameter. By default, when the COMPATIBLE initialization parameter is not set in your initialization parameter file, it defaults to the lowest possible setting for the release, which is 8.1.0 for release 9.0.1. You cannot use new features that would make your database incompatible until you reset the COMPATIBLE initialization parameter to a higher value.

This default behavior has the following advantages:

Of course, the major disadvantage of the default setting is that many of the features of the new release are not available to you if you leave the COMPATIBLE initialization parameter unset.

See Also:

"Features Requiring 9.0.0 or Higher Compatibility Level" and "Features Requiring 8.1.0 or Higher Compatibility Level" for a list of these features in the new release. 

Depending on the products you chose to install during your release 9.0.1 installation of Oracle, the Oracle Universal Installer may set the COMPATIBLE initialization parameter to a higher value, such as 9.0.0. Check your initialization parameter file if you are unsure of the current setting of the COMPATIBLE initialization parameter.

Figure 9-1 illustrates the default settings and the possible settings for release 8.0, release 8.1, and release 9.0.1 of Oracle.

Figure 9-1 The COMPATIBLE Initialization parameter


Text description of mig81010.gif follows
Text description of the illustration mig81010.gif

How the COMPATIBLE Initialization Parameter Operates

The COMPATIBLE initialization parameter operates in the following way:

Figure 9-2 Database Structures Depend on the COMPATIBLE Setting


Text description of mig81012.gif follows
Text description of the illustration mig81012.gif

See Also:

Oracle9i Database Concepts for more information about database structures 

Downgrading and Compatibility

Once you upgrade or migrate to a new release, you can set the COMPATIBLE initialization parameter to match the new release. Doing so enables you to use all of the features of the new release, but may make it more difficult for you to downgrade to your previous release. If you want to downgrade, then you must remove all of the incompatibilities with the release to which you are downgrading, which is a process that may require a great deal of time and effort.

See Also:

Chapter 13, "Downgrading to Release 8.1" for more information about downgrading. 

Compatibility Level

The compatibility level of your database corresponds to your COMPATIBLE initialization parameter setting. For example, if you set the COMPATIBLE initialization parameter to 8.1.6, then the database runs at 8.1.6 compatibility level.

Checking Your Current COMPATIBLE Initialization Parameter Setting

To check your current COMPATIBLE initialization parameter setting, issue the following SQL statement:

SQL> SELECT name, value, description FROM v$parameter
         WHERE name = 'compatible';

Checking the Compatibility Level of Specific Features

To check the compatibility level of specific features, issue the following SQL statement:

SQL> SELECT * FROM v$compatibility;

Features with a compatibility level of 0.0.0.0.0 are not currently in use.

When to Set the COMPATIBLE Initialization Parameter

You should set the COMPATIBLE initialization parameter at a specific point in your migration, upgrade, or downgrade process. Follow the procedure in the appropriate chapter and set the COMPATIBLE initialization parameter only when you are instructed to do so.


Note:

After the migration, upgrade, or downgrade procedure is complete, you can set the COMPATIBLE initialization parameter whenever necessary. 


Setting the COMPATIBLE Initialization Parameter

Complete the following steps to set the COMPATIBLE initialization parameter:

  1. Perform a backup of your database before you set the COMPATIBLE initialization parameter (optional).

    Setting the COMPATIBLE initialization parameter may cause your database to become incompatible with earlier releases of Oracle, and a backup ensures that you can return to the earlier release if necessary.

    See Also:

    Oracle9i User-Managed Backup and Recovery Guide for more information about performing a backup. 

  2. If you are changing the COMPATIBLE initialization parameter to a lower setting, complete the following steps. If you are changing the COMPATIBLE initialization parameter to a higher setting, skip to Step 3:

    1. Make sure your database does not have any incompatibilities with the intended lower setting.

    If you plan to lower the COMPATIBLE initialization parameter to an 8.1.x setting, see Chapter 14, "Removing Incompatibilities Before Downgrading to Release 8.1" and follow the instructions for removing incompatibilities with 8.1 releases.

  3. Run ALTER DATABASE RESET COMPATIBILITY:

    ALTER DATABASE RESET COMPATIBILITY;
    
    

    See Also:

    "About ALTER DATABASE RESET COMPATIBILITY" for more information. 

  4. Shutdown the database:

    SHUTDOWN IMMEDIATE
    
    
  5. Edit the initialization parameter file to enter or change the COMPATIBLE setting.

    For example, to set the COMPATIBLE initialization parameter to 8.1.0, enter the following in the initialization parameter file:

    COMPATIBLE=8.1.0
    
    
  6. Start the database using STARTUP.

About ALTER DATABASE RESET COMPATIBILITY

You use the ALTER DATABASE RESET COMPATIBILITY statement to instruct Oracle that you want to change the compatibility level to a lower release. Some Oracle features, such as external tables for example, require a compatibility level of 9.0.0 or higher. If you set the COMPATIBLE initialization parameter to 9.0.0 or higher and then create an external table, then the external table is a 9.0.0 compatible object in the database.

ALTER DATABASE RESET COMPATIBILITY checks for each feature that may have created an object that is incompatible with the lowest possible compatibility level, which is 8.1.0. If the check indicates that no incompatible objects exist for a certain feature, then the compatibility level of the feature is set to 0.0.0, which means that the feature is not in use. If, however, the check indicates that incompatible objects created by a certain feature exist, then the compatibility level for that feature is set to the required compatibility level.

For example, if one or more automatic segment-space managed tablespaces exist, then the compatibility level for the automatic segment-space managed tablespaces feature is set to 9.0.0, because 9.0.0 is the required compatibility level for that feature. It is important to understand, however, that ALTER DATABASE RESET COMPATIBILITY cannot raise the compatibility level of your database. You must first set the COMPATIBLE initialization parameter to a higher value, such as 9.0.0, before you can create database objects that require 9.0.0 compatibility level.

If you close the database, reset the COMPATIBLE initialization parameter to a lower setting, and then open the database, Oracle checks the compatibility level of each feature. If a feature has a compatibility level higher than the compatibility level specified by the COMPATIBLE initialization parameter in the initialization parameter file, then the database fails to open and displays an error message indicating the incompatible feature or features.

If you remove all of the incompatibilities that exist in your database, but fail to run the ALTER DATABASE RESET COMPATIBILITY statement before shutting down the database, then the database will still fail to open, even if no incompatibilities exist. The database will fail to open because it was not instructed to check the compatibility level of each feature against the objects that exist in the database. Because it did not reset the compatibility level for these features, Oracle simply remembers that incompatible objects were created at some time in the past. Running the ALTER DATABASE RESET COMPATIBILITY statement instructs Oracle to explicitly check for incompatible objects, and resets the compatibility level if no incompatible objects exist.

Features Requiring 9.0.0 or Higher Compatibility Level

To use the features listed in the following tables, the COMPATIBLE initialization parameter must be set to 9.0.0 or higher, unless stated otherwise.

The features listed do not represent a complete list of the new features introduced in release 9.0.1. Instead, the features listed are only those new release 9.0.1 features that require a 9.0.0 or higher compatibility level; some new features do not require this compatibility level.

See Also:

Oracle9i Database New Features for more information about the features listed below and for information about other new release 9.0.1 features. You also can check the Oracle9i Documentation Master Index for entries relating to the new features listed below. 

Tablespaces

Table 9-1 Tablespaces: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

Tablespaces 

Automatic Segment-Space Managed Tablespaces

Default Temporary Tablespaces

Automatic Undo Managed Tablespaces 

Schema Objects

Table 9-2 Schema Objects: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

Tables 

External Tables 

Index-Organized Tables 

Hash Partitioned Index-Organized Tables

Index-Organized Tables with Mapping Tables

LOBs in Range Partitioned Index-Organized Tables 

Indexes 

B-Tree Indexes on UROWID Datatypes for Heap and Index-Organized Tables

Bitmap Indexes for Index-Organized Tables

Domain Indexes on Index-Organized Tables

Indexes With Large Keys 

Hash Clusters 

Single-Table Hash Clusters 

Length Semantics 

Character Semantics for the sizing of CHAR and VARCHAR2 datatypes. See the parameter NLS_LENGTH_SEMANTICS for more information.

Bitmap Indexes for Index-Organized Tables 

Partitioning

Table 9-3 Partitioning: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

Partitioning of Tables 

Hash Partitioning of Index-Organized Tables 

Built-In Datatypes

Table 9-4 Built-In Datatypes: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

LOBs (large objects) 

LONG API for LOBs

Support in Range Partitioned Index-Organized Tables 

User-Defined Datatypes

Table 9-5 User-Defined Datatypes: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

Aggregate Functions 

User-Defined Aggregate Functions 

Object Types 

Type Evolution 

Type Inheritance 

Columns of non-final Types, or of types which have embedded non-final types

Columns of subtypes, or of types which have embedded subtypes 

Varrays 

Support in Range Partitioned Index-Organized Tables 

Data Protection

Table 9-6 Data Protection: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

Security 

External Initialized Context 

Distributed Databases

Table 9-7 Distributed Databases: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

Oracle Replication 

Adding master sites to a master group without quiescing the master group

Adding columns to a master table without quiescing its master group

Replication of user-defined types and objects based on user-defined types in both multimaster and materialized view replication environments

Row level dependency tracking for improved parallel propagation (specifying the ROWDEPENDENCIES clause in a CREATE TABLE statement)

Fast refresh of materialized views with one to many or many to many subqueries

Fast refresh of materialized views with a UNION operator

Multi-tier materialized views 

Data Access

Table 9-8 Data Access: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

SQL and PL/SQL 

Nested Transactions

Pipelined Table Functions

Parallel Table Functions 

Constraints 

View Constraints 

Data Warehousing

Table 9-9 Data Warehousing: Features Requiring 9.0.0 or Higher Compatibility Level
Functional Area  Features Requiring 9.0.0 or Higher Compatibility Level 

Summary Management Using Materialized Views 

Support in Index-Organized Tables 

Features Requiring 8.1.0 or Higher Compatibility Level

To use the features listed in the following tables, the COMPATIBLE initialization parameter must be set to 8.1.0 or higher, unless stated otherwise.

The features listed do not represent a complete list of the features introduced in release 8.1. Instead, the features listed are only those release 8.1 features that require an 8.1.0 or higher compatibility level; some features do not require this compatibility level.

See Also:

Oracle9i Database New Features for more information about the features listed below and for information about other release 8.1 features. You also can check the Oracle9i Documentation Master Index for entries relating to the features listed below. 

Applications

Table 9-10 Applications: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Java 

Enterprise JavaBeans

Java code in stored procedures

SQLJ Translator 

Oracle Call Interface (OCI) 

Support for Client Notification 

Tablespaces

Table 9-11 Tablespaces: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Tablespaces 

Locally Managed Tablespaces

Online Read-Only Tablespaces

Tablespace Migration (requires a COMPATIBLE setting of 8.1.6 or higher)

Transportable Tablespaces 

Schema Objects

Table 9-12 Schema Objects: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Tables 

Drop Column Support

Temporary Tables 

Index-Organized Tables 

Key Compression Support for Index-Organized Tables

Secondary Indexes on Index-Organized Tables

LOBs in Index-Organized Tables

Partitioning of Index-Organized Tables 

Indexes 

Bitmap Index Protection (the ALTER TABLE statement no longer invalidates bitmap indexes)

Extensible Indexing

Function-Based Indexes

Index Segment Coalesce

Key Compression Support for Indexes

Online Index (Re)build 

Hash Clusters 

Single-Table Hash Clusters 

Partitioning

Table 9-13 Partitioning: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Partitioning of Tables 

Partitioning of Index-Organized Tables

Partitioning of Tables with LOBs

Partitioning of Object Tables

Partitioning of Tables with User-Defined Types, including Columns with the following Types: object, REF, VARRAY, and nested table

Partitioning of Tables Using Composite Methods and Hash Methods 

Partitioning of Hash Clusters 

Support for Hash Partitioning 

Built-In Datatypes

Table 9-14 Built-In Datatypes: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

LOBs (large objects) 

Cache Reads Mode for LOBs (requires a COMPATIBLE setting of 8.1.6 or higher)

Partitioning of Tables with LOBs

Temporary LOBs

Varying-Width Character Sets for CLOBs and NCLOBs 

ROWIDs 

UROWIDs (universal rowids)

Note: An 8.1.0 compatibility level is required to use the new UROWID datatype as part of a database object, such as a table. However, UROWID variables can be used in PL/SQL code on a release 8.1 database with any 8.0 compatibility level. 

User-Defined Datatypes

Table 9-15 User-Defined Datatypes: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Nested Tables 

Collection Locators

Nested Table Data in Index-Organized Tables

Triggers on Nested Table View Columns

User-Specified Storage Clauses for Nested Tables 

Object Identifiers 

User-Defined Object Identifiers 

REFs 

Referential Integrity Constraint on a REF Column 

Varrays 

Storage Parameters for Storing Varrays as LOBs

Varray Data in Index-Organized Tables 

Oracle Parallel Server

Table 9-16 Oracle Parallel Server: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Oracle Parallel Server 

Instance Affinity for Jobs 

Data Protection

Table 9-17 Data Protection: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Security 

Application Context

Fine-Grained Access Control

N-Tier Authentication and Authorization 

Database Backup and Recovery 

Fast-Start On-Demand Rollback

Proxy Copy Support for the Oracle Media Management API 

Distributed Databases

Table 9-18 Distributed Databases: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Oracle Replication 

Column Level Snapshot Subsetting for Updatable Snapshots 

Heterogeneous Services 

Agent Self-Registration 

Data Access

Table 9-19 Data Access: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

SQL and PL/SQL 

Autonomous Transactions

Bulk Binds

C Call Specifications

CALL Statement

Change FREELIST Specification in an ALTER statement (requires a COMPATIBLE setting of 8.1.6 or higher)

Native Dynamic SQL

NOCOPY Parameter Passing Mode

The utlchn1.sql and utlexpt1.sql Scripts 

Advanced Queuing 

Addition of the Original Message ID Column for Propagated Messages

Addition of a Sender's ID Column

Database Event Publication

Instance Affinity for Queue Tables

Non-Persistent Queues

Queue Level and System Level Privileges

Rules Based Subscriptions

Separate Storage of History Management Information

Note: Propagation requires a compatibility level of 8.0.4 or higher. 

Packages 

DBMS_REPAIR Package 

Constraints 

DISABLE VALIDATE Constraint State 

Triggers 

Enhance DDL Support in Triggers (requires a COMPATIBLE setting of 8.1.6 or higher)

Object OutBinds in Triggers

Triggers on Nested Table View Columns

Triggers on DATABASE and SCHEMA

Triggers with a CALL to a Procedure as the Trigger Body 

The Optimizer 

Extensible Optimizer

Optimizer Plan Stability 

Database Resources 

Database Resource Manager 

Data Warehousing

Table 9-20 Data Warehousing: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Summary Management Using Materialized Views 

Date Folding

Dimensions Schema Object

Query Rewrite

Rewrite Privileges for Query Rewrite 

Spatial and Visual Information

Table 9-21 Spatial and Visual Information: Features Requiring 8.1.0 or Higher Compatibility Level
Functional Area  Features Requiring 8.1.0 or Higher Compatibility Level 

Spatial 

Spatial Indextype

Spatial Operators 

Visual Information Retrieval (VIR) 

VIR Indextype

VIR Operators 


Note:

Spatial and VIR require that the COMPATIBLE initialization parameter be set to 8.1.0 or higher before you install them. 


What Is Interoperability?

Interoperability is the ability of different releases of Oracle to communicate and work together in a distributed environment. An Oracle distributed database system can have Oracle databases of different releases, and all supported releases of Oracle can participate in a distributed database system. However, the applications that work with a distributed database must understand the functionality that is available at each node in the system.

For example, a distributed database application cannot expect an Oracle7 database to understand the object SQL extensions that are available only with release 8.0 and higher.


Note:

Since this book documents migrating, upgrading, and downgrading between different releases of Oracle, this definition of interoperability is appropriate. However, other Oracle documentation may use a broader definition of the term interoperability; for example, in some cases, interoperability may describe communication between different hardware platforms and operating systems. 


Compatibility and Interoperability Issues

The following sections describe compatibility and interoperability issues and the actions you can take to prevent problems resulting from these issues. The issues discussed in these sections occur because of differences between Oracle releases:

Applications

You do not need to modify existing (Oracle7 and version 8) applications that do not use new release 9.0.1 features. Existing applications should achieve the same, or enhanced, functionality on release 9.0.1. To increase the likelihood that applications running against your release 9.0.1 database will continue to work if you downgrade to version 8, you can set the COMPATIBLE initialization parameter to 8.1.7 or lower.

However, the COMPATIBLE initialization parameter only restricts the use of release 9.0.1 features that change the formatting on disk, not the use of other release 9.0.1 features. Therefore, a setting of 8.1.7 or lower does not guarantee that applications developed in release 9.0.1 will run correctly if the database is downgraded to version 8.

See Also:

Chapter 10, "Upgrading Your Applications" for more information about upgrading applications. 

General Compatibility and Interoperability Issues for Applications

This section describes general compatibility and interoperability issues for applications.

Change in Maximum VARCHAR2, CHAR, And RAW Size

Oracle7 clients using VARCHAR2, CHAR, or RAW datatypes may run into buffer overflow errors in their applications. This may happen because in release 8.0 and higher, the maximum size of the VARCHAR2 datatype was increased from 2000 to 4000 and the maximum size of CHAR and RAW datatypes was increased from 255 to 2000.

Clients encountering this problem can either modify their applications to accept a larger buffer size or use the SUBSTR() operator in the offending query to limit the return size of the buffer to a length that can be processed by the application.

In the following example, column SIZE_TAB.SIZE_COL is VARCHAR(80).

SQL> CREATE VIEW v1 AS SELECT
       LPAD(' ',40-length(size_tab.size_col)/2,' ') size_col 
       FROM size_tab;
Statement processed.

SQL> DESC v1

Column Name                    Null?    Type
------------------------------ -------- ----
SIZE_COL                                VARCHAR2(4000)

SQL> DROP VIEW v1;
View dropped.

SQL> CREATE VIEW v1 AS SELECT 
       SUBSTR(lpad(' ',40-length(size_tab.size_col)/2,' '), 2000) size_col 
       FROM size_tab;

SQL> DESC v1;

Column Name                    Null?    Type
------------------------------ -------- ----
SIZE_COL                                VARCHAR2(2001)

Index-Organized Tables Accessed by Applications

If a table accessed by an application changes from a regular table to an index-organized table, then the application may require changes. The possible changes depend on whether the application uses physical rowids or universal rowids (UROWIDs).

Whether an application requires changes depends on the kind of host variables the application is using to bind or define rowid values:

For applications using UROWIDs, VARCHAR host variables may no longer be large enough to hold the rowids. If so, then change the application to increase the variable maximum size or change the application to use OCI rowid descriptors. OCI rowid descriptors are preferred because they are opaque and resize automatically.

Change in Behavior for ANALYZE TABLE VALIDATE STRUCTURE Statement

Starting with release 8.1, the ANALYZE TABLE VALIDATE STRUCTURE statement no longer stops running at the first error. Modify any applications that depend on this behavior to account for this change.

OCI Applications

This section describes compatibility and interoperability issues relating to OCI applications.

See Also:

Oracle Call Interface Programmer's Guide for more information. 

Shared Structures and Interoperability

Shared structures are not supported on Oracle7 clients linked with release 8.1 libraries. To take advantage of shared structures, applications must be written with the release 8.1 or higher OCI and must be communicating with a release 8.1 or higher Oracle database server.

A release 8.1 OCI client accessing a release 8.0 Oracle database server only partially realizes the benefits of shared structures, and shared structures are not supported if both the client and the Oracle database server are release 8.0 or lower.

Thread Safety

The ORLON and OLON calls are not supported in version 8. However, you still should use OLOG, even for single-threaded applications.


Note:

The OLOG call is required for multithreaded applications. 


OCI Application Link Line

For OCI applications, the Oracle9i link line differs from the Oracle7 link line. See the ORACLE_HOME/rdbms/demo/demo_rdbms.mk file for examples of using the Oracle9i link line as an Oracle9i OCI application is compiled.

Oracle7 Clients

Oracle7 clients can make selective use of Oracle9i OCI, combining Oracle7 and Oracle9i calls. The degree of functionality added depends on which calls are used. The encryption API and password reset calls are independently usable as well. Use Oracle9i OCI for all phases of the statements being processed to enable the following functionality:

Oracle7 clients must log in using Oracle9i calls if they want to combine Oracle7 code with Oracle9i code.

Using Batch Error Mode for Statement Execution

Starting with release 8.1, OCI applications can use the batch error mode when executing array DMLs using OCIStmtExecute. To do this, both the OCI and server libraries must be release 8.1 or higher.

You can modify existing applications to use batch error mode by setting the mode parameter to OCI_BATCH_ERRORS and adding new code required for this functionality. Then, recompile and relink the application with the release 8.1 client libraries.

Support for Client Notification

Starting with release 8.1, client notification is supported in OCI applications using the publish/subscribe interface. Client notification enables applications to take advantage of Database Event Publication and Advanced Queuing features. To use the client notification feature, client applications must link with release 8.1 or higher client libraries.

Support for the LISTEN Call with the Advanced Queuing Option

Starting with release 8.1, the LISTEN call is supported in OCI applications. The LISTEN call is available with the Advanced Queuing Option and can be used to monitor a set of queues for a message. To use the LISTEN call, client applications must link with release 8.1 or higher client libraries.

Precompiler Applications

This section describes compatibility and interoperability issues relating to precompiler applications.

See Also:

Pro*C/C++ Precompiler Programmer's Guide and Pro*COBOL Precompiler Programmer's Guide for more information. 

Connecting With SYSDBA Privileges in Pro*C/C++

SYSDBA privileges are no longer available by default when you issue the CONNECT statement in Pro*C/C++. In release 8.0, the following CONNECT statement connected with SYSDBA privileges in Pro*C/C++:

EXEC SQL CONNECT :sys IDENTIFIED BY :sys_passwd; 

In release 8.1 and higher, issue the following CONNECT statement to connect with SYSDBA privileges in Pro*C/C++:

EXEC SQL CONNECT :sys IDENTIFIED BY :sys_passwd IN SYSDBA MODE; 
Connecting With SYSDBA Privileges in Pro*COBOL

SYSDBA privileges are no longer available by default when you issue the CONNECT statement in Pro*COBOL. In release 8.0, the following CONNECT statement connected with SYSDBA privileges:

EXEC SQL 
    CONNECT :sys IDENTIFIED BY :SYS-PASSWD 
END-EXEC.

In release 8.1 and higher, issue the following CONNECT statement to connect with SYSDBA privileges:

EXEC SQL 
    CONNECT :sys IDENTIFIED BY :SYS-PASSWD IN SYSDBA MODE 
END-EXEC.
Ada Support in Version 8

The Pro*ADA product was officially desupported by Oracle in release 7.3. You can upgrade Pro*ADA to the latest release of SQL*Module for Ada 8.1, which has a number of new features. However, SQL*Module for ADA 8.1 does not provide object support.

PL/SQL Backward Compatibility and Precompilers

PLSQL_V2_COMPATIBILITY backward compatibility behavior is available in the precompiler environment by setting the DBMS precompiler command line option as follows:

... DBMS=Oracle7

PL/SQL Applications

This section includes compatibility and interoperability issues for PL/SQL applications.

See Also:

PL/SQL User's Guide and Reference for more information 

Integrated SQL Analysis

Syntax and semantic analysis of SQL statements in PL/SQL programs is now integrated with the SQL engine. As a result, any new SQL feature that is available through SQL*Plus or OCI is also available in PL/SQL.

In Oracle9i, syntax and semantic analysis of SQL statements is also a little stricter than in previous releases. PL/SQL catches additional errors in SQL statements during compilation itself, rather than throwing a runtime exception for invalid SQL syntax. As a result, you may see compile-time errors with the PL/SQL:ORA- prefix in PL/SQL programs that had compiled successfully in previous releases. The new error messages point to problems in the SQL statement that must be fixed before the program can be compiled successfully.

If you are unable to immediately modify a SQL statement to satisfy the new stricter checks, Oracle provides an event to temporarily assist you in migrating PL/SQL code to Oracle9i:

alter session set events='10933 trace name context forever, level 512';

Please note that this event is provided only for temporary migration assistance. Oracle Corporation strongly discourages long-term use of this event, and this event will be desupported in the next major release of Oracle.

Compatibility and Object Types

In Oracle9i, object types that are qualified as NOT FINAL, NOT INSTANTIABLE, a subtype, or a SQLJ type cannot be referred to from PL/SQL programs in earlier releases of Oracle. Specifically, such programs will fail to compile with an error.

PL/SQL V2 Compatibility Mode

The PL/SQL V2 compatibility mode is available in PL/SQL release 8.0 and higher. This mode is enabled by the PLSQL_V2_COMPATIBILITY initialization parameter.

You can set PL/SQL V2 compatibility mode in any one of the following three ways:

The PLSQL_V2_COMPATIBILITY initialization parameter provides compatibility between PL/SQL release 8.0 and higher and PL/SQL V2 in the following situations:

Keyword Behavior Differences: Oracle7 vs. Release 8.0 and Higher

The following keywords or types included in Oracle7 and release 8.0 and higher produce slightly different error message identifiers when used as a function name in a SELECT list:

Table 9-22 Keyword Behavior Differences
Keywords  Release 8.0 and Higher Behavior  Oracle7 Behavior 

CHARACTER, COMMIT, DEC, FALSE, INT, NUMERIC, REAL, SAVEPOINT, TRUE 

Generates errors: ORA-06550 and PLS-00222 

Generates errors: ORA-06552 and PLS-00222 

The STARTUP Command

This section describes compatibility and interoperability issues related to the STARTUP command.

Change in Default Parameter File Selection

When the STARTUP command is issued without the PFILE option, Oracle attempts to start up the instance using a default parameter file. In Oracle9i, the search criteria for selecting the default parameter file has changed to facilitate the use of a server parameter file.

In previous releases of Oracle, the STARTUP command looked for an initialization parameter file with the name ORACLE_HOME/dbs/initSID.ora, where SID is the instance name.

In Oracle9i, the process of selecting a default parameter file is as follows:

Tablespaces and Datafiles

This section describes compatibility and interoperability issues related to tablespaces and datafiles.

Automatic Undo Managed Tablespaces

Oracle instances can run in one of two undo space management modes:

All instances of the same database must run in the same undo space management mode.

The COMPATIBLE initialization parameter effects how undo space is managed. Automatic undo management mode is allowed only if COMPATIBLE is set to 9.0.0 or higher. The instance is started in manual undo management mode if the UNDO_MANAGEMENT initialization parameter is not specified or if COMPATIBLE is set below 9.0.0.

In the manual undo management mode with COMPATIBLE set to 9.0.0 or higher, CREATE, ALTER, and DROP operations on undo tablespaces are allowed. Rollback segments can coexist with undo tablespaces. That is, rollback segments can exist while running in automatic undo management mode and undo tablespaces can exist while running in manual undo management mode. Undo tablespaces cannot be brought online unless the instance is running in automatic undo management mode.

In automatic undo management mode, DROP ROLLBACK SEGMENT operations are allowed. Rollback segments cannot be brought online.

See Also:

Oracle9i Database Administrator's Guide for more information about managing undo space. 

Transportable Tablespace

There are compatibility issues when you transport a tablespace between two databases.

See Also:

Oracle9i Database Administrator's Guide for information about these compatibility issues. 

Tempfiles

Release 8.1 introduced tempfiles. The information about tempfiles is in different static data dictionary views and dynamic performance views than the information about datafiles. To view information about tempfiles, consult the DBA_TEMP_FILES static data dictionary view and the following dynamic performance views:

Oracle automatically assigns numbers to both datafiles and tempfiles. Two datafiles cannot share the same number; similarly, two tempfiles cannot share the same number. However, a tempfile and a datafile can share the same number.

See Also:

Oracle9i SQL Reference for information about tempfiles 

Active Transactions Restriction for Read-Only Tablespaces

In releases prior to release 8.1, there could not be any active transactions in your database before you made a tablespace read-only. In release 8.1 and higher, this restriction is lifted if the COMPATIBLE initialization parameter is set to 8.1.0 or higher. With the database at 8.1.0 or higher compatibility level, the ALTER TABLESPACE ... READ ONLY statement waits for active transactions to complete, and then makes the tablespace read-only. If, however, the COMPATIBLE initialization parameter is set below 8.1.0, then the restriction still applies.

Data Dictionary

This section describes possible compatibility and interoperability issues resulting from data dictionary changes.

See Also:

Appendix C, "Changes to Static Data Dictionary Views" and Appendix D, "Changes to Dynamic Performance Views" for more information, including lists of obsolete views. 

Data Dictionary Protection

The data dictionary protection mechanism introduced in release 8.0 may cause problems in any applications that create user tables in the SYS schema and access them using the 'ANY' privileges. For example, the user must have DELETE CATALOG ROLE to use the DELETE statement to purge the audit records in the AUD$ table.

Creating and accessing user tables in SYS schema is not secure. Therefore, applications are expected to move the objects to a different schema. Use the O7_DICTIONARY_ACCESSIBILITY initialization parameter for temporary compatibility. However, this parameter is only for interim use.

Applications should not attempt to connect to user SYS without SYSDBA privileges. Instead of connecting to user SYS and sharing the password, grant DBA privilege to a normal user, who will connect to the database as a user with SYSDBA privileges to connect to SYS schema.

In Oracle9i, a user can be granted the SELECT ANY DICTIONARY privilege. A user with this privilege can access objects in the SYS schema regardless of the setting of O7_DICTIONARY_ACCESSIBILITY.

Obsolete Data Dictionary Views

Certain data dictionary views maintained in Oracle7 for backward compatibility to version 5 and version 6 of Oracle, created in the files catalog5.sql and catalog6.sql, are obsolete in release 8.0 and higher. Remove all references to these data dictionary views from your database tools and applications.

Schema Objects

This section describes compatibility and interoperability issues relating to schema objects.

Bitmap Index Protection

In releases prior to release 8.1, it was possible to unintentionally invalidate bitmap indexes by issuing certain SQL statements. The most common causes of bitmap index invalidation were the following types of statements:

Oracle9i eliminates these unintentional invalidations.

Datatypes

This section describes compatibility and interoperability issues relating to datatypes.

Datetime and Interval Datatypes

When a database is migrated or upgraded to Oracle9i, the database time zone is set to the time zone of the environment variable ORA_SDTZ. If ORA_SDTZ is not set, the database time zone is set to the time zone of the operating system clock. If the time zone of the operating system clock is not set or is not valid, the database time zone defaults to UTC.

old Oracle DATE data with time portion can be migrated to either TIMESTAMP to support fractional seconds or TIMESTAMP WITH LOCAL TIME ZONE to support time zone adjustments in addition to fractional seconds without having legacy data rewritten. An ALTER TABLE statement must be explicitly issued to modify a DATE column to a TIMESTAMP column or a TIMESTAMP WITH LOCAL TIME ZONE column.

Large Objects (LOBs)

This section describes compatibility and interoperability issues relating to LOBs.

Varying-Width Character Sets for CLOBs and NCLOBs

Release 8.0 did not allow users other than SYSTEM to create tables with the CLOB or NCLOB datatype if the database character set was varying-width. Release 8.1 and higher supports CLOB and NCLOB datatypes in tables with a varying-width character set, and the data is stored as UCS2 (2-byte fixed-width unicode).

LOB Index Clause

If you used the LOB index clause to store LOB index data in a tablespace separate from the tablespace used to store the LOB, then the index data will be relocated to reside in the same tablespace as the LOB if you perform either of the following actions in release 8.1 and higher:

If you used Export/Import to migrate from Oracle7 to Oracle9i, then the index data was relocated automatically during migration. However, the index data was not relocated if you used the Migration utility or the Oracle Data Migration Assistant.

Also, if you create a new table in release 8.1 and higher and specify a tablespace for the LOB index for a non-partitioned table, then the tablespace specification will be ignored and the LOB index will be located in the same tablespace as the LOB.

To check the storage of LOB indexes, issue the following SQL statement connected as a user with SYSDBA privileges:

SELECT index_name, index_type, tablespace_name
    FROM dba_indexes
    WHERE index_type = 'LOB';

Date Columns in Dynamic Performance Views

In Oracle7, all date columns in dynamic performance views were VARCHAR2(20) strings in MM/DD/YY HH24:MI:SS format. In release 8.0 and higher, every date column is a real DATE column that uses the DATE datatype. In contrast to the previous VARCHAR2(20) string, the DATE datatype provides the following benefits:

Oracle ROWIDs

This section describes compatibility and interoperability issues related to rowids.

UROWID Datatype

Release 8.1 introduced the UROWID (universal rowid) datatype. Clients prior to release 8.1 can access columns of UROWID datatype using character host variables only; other types of variables are not supported.

New Physical ROWID Datatype Format

Release 8.0 introduced a new format for physical rowids. If you use physical rowids stored in columns or in application code, then the old physical rowids are invalid and must be converted.

See Also:

Chapter 12, "Migration Issues for Physical Rowids" for more information about the new physical rowid format 

NCHAR and NLS Use

In version 8, you can declare the use of the national character set (NCHAR) for specific columns, attributes, PL/SQL variables, parameters, and return results. Unless such an explicit declaration is made, use of NCHAR and NLS is, for the most part, invisible and has no affect on other version 8 features. An exception is that SELECT statements on either the PROPS$ or the VALUE$ dictionary view may return the CHARACTER_SET_NAME column or the NLS_NCHAR_CHARACTERSET row.

Migration Issues with NCHAR and NLS

The PROPS$ dictionary table contains two rows that describe the character sets specified in the CREATE DATABASE statement. The row holding NAME='NLS_CHARACTERSET' has the database character set's name in the VALUE$ column. The row holding NAME='NLS_NCHAR_CHARACTERSET' has the national character set's name in the VALUE$ column.

Compared to release 7.3, various views contain the new column, CHARACTER_SET_NAME, whose value is:

DECODE(x$.CHARSETFORM,
       1, 'CHAR_CS',
       2, 'NCHAR_CS',

where x$ represents one of the base tables. The DATA_TYPE or COLTYPE column value of the view will not change to indicate the character set choice.

NCHAR and NLS Environment Variables and Compatibility

You should set NLS_LANG to your environment as follows:

Verify that the client has the correct NLS character set environment variables. An error is generated when release 7.3 NLS code tries to load a release 8.0 and higher character set.

User-Defined Datatypes

This section describes compatibility and interoperability issues relating to user-defined datatypes.

Type Evolution

Because type evolution requires the COMPATIBLE initialization parameter to be set to 9.0.0 or higher, clients which are using a previous release of PL/SQL cannot access evolved types.

Subtypes and Non-Final Types

Types created in release 8.1 and earlier are considered to be FINAL types. Thus, they cannot be used as supertypes in Oracle9i. However, an ALTER statement can be explicitly used to change the type to be NOT FINAL.

If the COMPATIBLE initialization parameter is set below 9.0.0, subtypes cannot be created. Further, not instantiable and non-final types cannot be created. Consequently, subtables, subviews, and substitutable columns are also not permitted.

Release 8.1 Clients Accessing a Release 9.0 Server

Any transfer involving data of non-final types will return an error. Release 8.1 clients cannot access the release 9.0.1 server if the type has been altered to non-final on the server.

Release 9.0 Clients Accessing a Release 8.1 Server

Since the release 8.1 server can have only non-final types, no errors occur.

New Format for User-Defined Datatypes

Release 8.1 introduced a new format for user-defined datatypes. The new format can result in significant performance improvements over the format used in release 8.0. To use the new user-defined datatypes format, the COMPATIBLE initialization parameter must be set to 8.1.0 or higher.

You can use release 8.0 user-defined datatypes in a release 8.1 or higher database without causing compatibility problems. However, the database will not realize the performance gains possible with the new format.

Release 8.1 and Higher Clients Accessing Release 8.0 User-Defined Datatypes

The user-defined datatypes format is negotiated as part of the compatibility exchange between the client and server. If you are using a release 8.0 database server, then release 8.1 and higher clients can access the database, but they are set to release 8.0.

Release 8.0 Clients Accessing Release 8.1 and Higher User-Defined Datatypes

When a release 8.0 client accesses a server with release 8.1 and higher-compatible user-defined datatypes, the database converts the user-defined datatypes to release 8.0 format. Consequently, the release 8.0 client can access the data, but performance gains may not be realized.

Nested Tables

Release 8.0 clients do not support the following release 8.1 and higher nested table features:

Therefore, access fails with an incompatibility error when a release 8.0 client attempts to access a release 8.1 or higher server and a nested table is specified to be returned as a locator, or the storage for the nested table is user-specified.

Varrays Stored as LOBs

Release 8.0 clients do not support specifications of storage parameters for storing varrays as LOBs. Therefore, access fails with an incompatibility error when a release 8.0 client attempts to access a release 8.1 or higher server where there is a specification of storage parameters for storing a varray as a LOB.

SQL and PL/SQL

This section describes compatibility and interoperability issues relating to SQL and PL/SQL.

See Also:

Oracle9i SQL Reference and PL/SQL User's Guide and Reference for more information about SQL and PL/SQL 

Functions GREATEST_LB, LEAST_UB, and TO_LABEL Desupported

Starting with release 8.1, the built-in PL/SQL functions GREATEST_LB, LEAST_UB, and TO_LABEL, which operate on Trusted Oracle labels, are no longer supported.

Native Dynamic SQL in PL/SQL

The following sections describe interoperability issues related to native dynamic SQL in PL/SQL:

Server-Side PL/SQL

An Oracle database server at release 8.1.0 or higher compatibility level can execute native dynamic SQL statements that contain references to objects on a remote server at any compatibility level.

For example, the following procedure contains a native dynamic SQL statement and links to a remote Oracle database server:

PROCEDURE dyn1 is
BEGIN
    EXECUTE IMMEDIATE 'insert into tab@remote_link
        values ('a', 10)';
END;

In the example, remote_link can be a link to any version of Oracle, such as release 7.3, 8.0, or 8.1.

Native Dynamic SQL and RPC Calls

PL/SQL programs that are targets of RPC calls can use native dynamic SQL, regardless of the release of the clients making the RPC calls. For example, release 7.3 or 8.0 clients can issue RPC calls to an Oracle database server at 8.1.0 or higher compatibility level.

SQL Scripts utlchain.sql and utlchn1.sql

The release 9.0.1 installation includes the following two scripts for creating a table that stores migrated and chained rows: utlchain.sql and utlchn1.sql. The utlchn1.sql script can be run on index-organized tables as well as regular tables, while the utlchain.sql script can be run only on regular tables, but not on index-organized tables.

In Oracle9i, you must always run the utlchn1.sql script.

SQL Scripts utlexcpt.sql and utlexpt1.sql

The release 9.0.1 installation includes the following two scripts for creating a table that stores exceptions from enabling constraints: utlexcpt.sql and utlexpt1.sql. The utlexpt1.sql script can be run on index-organized tables as well as regular tables, while the utlexcpt.sql script can be run only on regular tables, but not on index-organized tables.

In Oracle9i, you must always run the utlexpt1.sql script.

Behavior Change in Parallel CREATE TABLE Statements with the AS Subquery

In release 8.0 and higher, if you use the PARALLEL clause in a CREATE TABLE statement with the AS subquery, then Oracle ignores the INITIAL storage parameter and instead uses the NEXT storage parameter. Oracle7 did not ignore the INITIAL storage parameter.

For example, consider the following SQL statement:

CREATE TABLE tb_2 STORAGE (INITIAL 1M NEXT 500K) 
   PARALLEL (DEGREE 2)
   AS SELECT * FROM tb_1;

In release 8.0 and higher, the value of INITIAL is 500 KB, while in Oracle7, the value of INITIAL is 1 MB.

Advanced Queuing (AQ)

This section includes compatibility and interoperability issues for AQ.

See Also:

Oracle9i Application Developer's Guide - Advanced Queuing for more information about AQ. The sections below only provide compatibility and interoperability information about new AQ features, while Oracle9i Application Developer's Guide - Advanced Queuing provides detailed information about using them. 

Queue Level and System Level Privileges

To use queue level and system level privileges, the queue table must be at 8.1.0 compatibility level or higher. Specifically, to grant queue level privileges using the following procedures in the DBMS_AQADM package requires an 8.1.0 or higher queue table compatibility level:

Interoperability and the Sender's ID Column

In release 8.1 and higher, the sender's ID is mapped as an additional attribute in the message properties. This new attribute is ignored when there is communication between release 8.0 and release 9.0.1 and higher databases.

For OCI applications, the sender's ID attribute is available as a new attribute in the message properties descriptor. Release 8.1 and higher OCI clients use a new RPC code to send and receive the message properties to and from the server.

Rule Based Subscriptions

When you migrate a queue table from release 8.0 to release 8.1 or higher using the DBMS_AQADM.MIGRATE_QUEUE_TABLE procedure, any existing subscribers are upgraded automatically to subscribers with null rules.

Message Streaming

Message streaming is supported only if the source and destination databases both are release 8.1 or higher. A COMPATIBLE initialization parameter setting of 8.1.0 is not required for message streaming; it is supported even if COMPATIBLE is set to 8.0.5 or lower on a release 8.1 and higher database.

Procedures and Packages

This section describes compatibility and interoperability issues related to procedures and packages.

See Also:

Oracle9i Supplied PL/SQL Packages and Types Reference for more information about packages 

The DBMS_LOB Package and NOCOPY

If the COMPATIBLE initialization parameter is set to 8.1.0 or higher, then the DBMS_LOB package uses the new NOCOPY syntax for the LOB parameters, and LOB locators that are passed to the DBMS_LOB package follow the new NOCOPY semantics.

If the COMPATIBLE initialization parameter is set below 8.1.0, then the NOCOPY syntax is not supported. Therefore, if you are at an 8.0.x compatibility level, then you should not:

The DBMS_REPAIR Package

The COMPATIBLE initialization parameter must be set to 8.1.0 or higher to use the DBMS_REPAIR package. The DBMS_REPAIR package will fail if the compatibility level is below 8.1.0.

Syntax Change for the SET_SESSION_LONGOPS Procedure

Release 8.0 introduced changes to the DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS procedure. For information about the new syntax, refer to the dbmsapin.sql file. If any of your applications use this procedure, then change the applications accordingly.

Oracle Optimizer

Setting the COMPATIBLE initialization parameter to 8.1.0 or higher will enable the optimizer to improve its choice of execution plan. An 8.1.0 compatibility level enables the optimizer to use a new column, AVGCLN, in the HIST_HEAD$ data dictionary table to determine its choice of execution plan.

Oracle9i Real Application Clusters

Support for different releases of Oracle within one Oracle9i Real Application Clusters environment is operating system-specific. See your operating system-specific Oracle documentation for information about whether or not the coexistence of different releases within one Oracle9i Real Application Clusters environment is supported on your operating system.


Note:

Oracle9i Real Application Clusters is an new, breakthrough software architecture with scalability and high availability features that exceed the capabilities of previous Oracle cluster-enabled software releases. 


In release 8.0 and higher, all Oracle instances that belong to a database and are linked in Parallel Server mode to be run on a hardware cluster must match the word-size of the GMS executable. Therefore, they must all run a 32-bit executable, or they must all run a 64-bit executable.

Also, mixing word-sizes of Oracle9i Real Application Clusters executables across different databases is not supported in release 8.0, but this restriction does not apply to Oracle executables that are not linked in Oracle Parallel Server mode. In release 8.1 and higher, the GMS process is eliminated, and therefore this restriction is relaxed. Oracle instances that belong to different databases may run with different word-sizes in release 8.1 and higher.

INSTANCES Keyword in PARALLEL Clause

The INSTANCES keyword can be used in release 8.1 and higher, but it will be interpreted differently than in past releases. In Oracle7 and release 8.0, the INSTANCES keyword could be used in the PARALLEL clause of statements such as the following:

It also could be used in hints. The INSTANCES keyword was used to specify the number of Oracle Parallel Server instances to use in a parallel operation.

Also starting with release 8.1, the syntax for specifying degree in a PARALLEL clause has changed. You can specify degree simply by placing a number after PARALLEL, as in the following example:

ALTER TABLE emp PARALLEL 5;

However, the DEGREE keyword remains valid if you choose to use it. The preceding syntax is equivalent to the following statement:

ALTER TABLE emp PARALLEL (DEGREE 5 INSTANCES 1);

Regardless of the syntax, the value you specify is the number of query threads used in a parallel operation. Neither syntax will affect how many instances are used to execute a query. The system will determine how many instances to use based on the instances available and the load on each of the instances. So, either syntax will produce the same result.

Continuing to Use the INSTANCES Keyword in Release 8.1 and Higher

You can still use the old syntax to specify both INSTANCES and DEGREE in release 8.1 and higher, but Oracle interprets it as single keyword that specifies the degree. Therefore, the obsolete command syntax is still accepted in release 8.1 and higher, but its interpretation may be different than in past releases. Table 9-23 illustrates the way in which Oracle interprets the possible settings of INSTANCES and DEGREE if you continue to use the obsolete syntax. The columns in Table 9-23 represent the following:

The following scenarios illustrate the way Oracle may behave differently in release 8.1 and higher because of these interpretations:

Oracle Corporation recommends that you discontinue use of the INSTANCES keyword to avoid unexpected behavior. Also, consider using the PARALLEL_INSTANCE_GROUP initialization parameter.

See Also:

Oracle9i SQL Reference for more information about the PARALLEL clause and Oracle9i Database Reference for information about the PARALLEL_INSTANCE_GROUP initialization parameter. 

Database Security

This section describes compatibility and interoperability issues relating to database security.

Password Management

Make the following changes to a version 7 (or earlier) application to enable it to work with version 8 password management:

If you do not make these changes to Oracle7 applications, then one of the Oracle tools, such as SQL*Plus, will be required to allow the password change after a user's account expires.

This version 8 password management feature is off by default. If a version 8 server system does not implement the password expiration feature, then no change is required to Oracle7 clients for password management. The DEFAULT profile sets all the parameters to UNLIMITED, and sets the password complexity check routine to NULL.

The password verification routine is exported/imported along with its profile definition. The user's history table also can be imported/exported in version 8.

Oracle7 or Lower Client with Release 8.0 or Higher Server

Oracle7 clients use Oracle7 OCI calls to connect to the server; therefore, release 8.0 and higher password expiration cannot be detected. However, other features of release 8.0 and higher password management work for Oracle7 clients. Full release 8.0 and higher password management, including password expiration handling, can operate in Oracle7 clients after you make the minor change of replacing their Oracle7 log in call with the release 8.0 and higher log in call.

Release 8.0 or Higher Client with Oracle7 or Lower Server

A release 8.0 or higher client can be coded to work with Oracle7 or lower servers. An example of the code for such clients follows:

OCISessionBegin(...) /* call release 8.0 and higher logon OCI call */
if (SUCCESS_WITH_INFO) then 
{ /* Check for password expiration and take appropriate action*/
...
OCIChangePassword(...);
...
}

Enterprise User Management

This section includes compatibility and interoperability issues related to enterprise user management. This functionality is part of the Oracle Advanced Security feature.


Note:

The Oracle Security Server (OSS) component no longer exists in Oracle8i; most of its functionality has been integrated into Oracle Advanced Security. Oracle does not provide a tool to migrate from OSS to Oracle Advanced Security.  


Interoperability with Release 8.1.5 Release 8.0

Release 8.1.5 and 8.0 servers cannot share global users and roles with release 8.1.6 and higher servers. In addition, current user database links between release 8.1.5 and release 8.1.6 and higher are not supported. Current user database links between release 8.0 and release 8.1.6 and higher are not supported

Interoperability with Oracle7 and Version 6 Releases

Because global users cannot be created or authorized on version 7 or version 6 servers, those servers cannot share global users or roles with version 8. Also, current user database links from version 8 to version 6 or version 7 are not supported.

Database Backup and Recovery

This section describes compatibility and interoperability issues related to database backup and recovery.

Recovery Manager

See Also:

 

Recovery Manager Commands

Release 8.1 of Recovery Manager introduced changes to some Recovery Manager commands. However, all commands used in prior releases will continue to work with release 8.1 and higher of Recovery Manager.

For example, the CLONE command is changed to the DUPLICATE command, but the CLONE command will continue to work. Also, the CLONE option of the ALLOCATE and CONNECT commands is now the AUXILIARY option, but the CLONE option will continue to work. Similarly, the CLONENAME keyword in the COPY and SET commands is now AUXNAME, but the CLONENAME keyword will continue to work.

Backup Management: EBU and Recovery Manager

EBU and Recovery Manager are client-side utilities for managing Oracle database backups. However, for managing version 8 database backups, you must use Recovery Manager. You cannot use EBU with version 8.

Both EBU and Recovery Manager use the Media Management Language (MML) to communicate with third party storage subsystems, such as Legato or EMC. Investments in tape subsystem management modules for EBU and Oracle7 should be reusable under Recovery Manager and version 8. However, backup volume formats are not reusable. You need to write new backups to the storage subsystem under version 8 because Recovery Manager produces a different format, and backups from Oracle7 generally are not useful for version 8 restores.


Note:

The scripting language for Recovery Manager is completely different from the scripting language for EBU. 


Datafile Backups

A datafile backup taken with Oracle7 cannot be restored with any release of version 8, with the following exception: a backup of an Oracle7 database taken after running the Migration utility can be restored and recovered with any release of version 8. If EBU is used to backup the Oracle7 database, and the database must later be restored for recovery with version 8, then you must use EBU to restore the datafiles prior to recovering them with version 8. If the Oracle7 database is backed up with operating system commands to disk files, then those disk files can be registered with Recovery Manager by using the CATALOG DATAFILECOPY command.

A datafile backup taken with version 8 can be restored and recovered with any later release of version 8, if a direct upgrade path between the release that backed-up the file and the release that recovers the file is supported in Table 7-1, "Upgrade Paths". You can also restore and recover version 8 backups with an earlier release of version 8 if the datafile contents are compatible with the earlier release.

Standby Database

Standby database operates only on release 7.3 and higher of Oracle. The following compatibility restrictions apply to standby databases:

Fast-Start On-Demand Rollback and Fast-Start Parallel Rollback

As part of the recovery process, after a session or instance is abnormally terminated, Oracle rolls back uncommitted transactions. Oracle9i has two new features to improve rollback performance: fast-start on-demand rollback and fast-start parallel rollback.

When a dead transaction holds a row lock on a row that another transaction needs, fast-start on-demand rollback automatically recovers the data block required by the new transaction. Other data blocks and transactions that do not block any new transaction's progress are rolled back in the background. Fast-start on-demand rollback is enabled only when you set the COMPATIBLE initialization parameter to 8.1.0 or higher.

Fast-start parallel rollback improves background rollback performance by recovering each dead transaction using multiple server processes. You can use fast-start parallel rollback when the COMPATIBLE initialization parameter is set to any 8.0 or 8.1 release. Fast-start parallel rollback recovers each dead transaction using multiple server processes only if the following conditions are met:

Archiving of Redo Logs

Release 8.1 and higher enables you to archive online redo log files to multiple destinations, including to a local disk-based file or to a specified standby database. The compatibility and interoperability issues described in this section may arise because of this functionality.

Re-Archiving Previously Archived Online Redo Logs

Prior to release 8.1, it was possible to re-archive an online redo log that already had been successfully and fully archived. In addition, it was possible to re-archive redo log files to successfully archived destinations.

Starting with release 8.1, the following restrictions apply:

Archive Operation Error Detection Behavior

Prior to release 8.1, when any error was detected, an archive operation stopped immediately, reported the error to the alert log, and signaled the error to the user.

Starting with release 8.1, an archive operation does not stop processing unless all of the archive destinations cannot be processed. An error at one or more destinations does not stop the archive operation; the archive operation only stops if all archive destinations cannot be processed. Specifically, archiving to a mandatory is retried once, and archiving failure on the retry halts processing.

LogMiner

LogMiner runs in a release 8.1 or higher instance and can analyze redo log files from any database that meets the following criteria:

LogMiner does not require a mounted database to analyze redo log files. However, to fully translate the contents of the redo log files, LogMiner requires access to a LogMiner dictionary (catalog). LogMiner uses the dictionary to translate internal object identifiers and data types to object names and external data formats. You can use the PL/SQL package DBMS_LOGMNR_D to extract a database dictionary into an external file for later use in analyzing redo log files. Without a dictionary, LogMiner returns the internal object identifiers and presents data as hex bytes.

Analyzing Archived Redo Log Files from Other Databases

You can run LogMiner on an instance of a database while analyzing redo log files from a different database. To analyze archived redo log files from other databases, LogMiner must:

Oracle Media Management API and Proxy Copy

Starting with Oracle Media Management API version 2, proxy copy functionality is supported. If a Recovery Manager proxy backup is attempted, and Oracle is linked with Oracle Media Management API release 1.1, or a version 2 that does not support proxy copy functionality, then Recovery Manager will return an error and the backup will fail.

Distributed Databases

This section describes compatibility and interoperability issues related to distributed databases.

Materialized Views

Prior to release 8.1, an Oracle materialized view always consisted of a materialized view base table and a view on the base table. For example, creating a materialized view SNAP_EMP creates a view SNAP_EMP and a base table normally called SNAP$_SNAP_EMP. In release 8.1 and higher, most materialized views will have only a base table with the same name as the materialized view. The view will not be created.

A view will be added to the materialized view under the following conditions:

Oracle Replication

The following compatibility restrictions apply to a replicated environment:

If one or more of your master sites is a release prior to release 8.1, then the GENERATE_80_COMPATIBLE flag must be unset or set to TRUE in the following procedures:

Heterogeneous Services Agents

This section describes compatibility and interoperability issues related to Heterogeneous Services agents.

Interoperability Between Servers of Different Releases

Servers at release 8.0.3 and higher can connect to and use Heterogeneous Services agents of any other server at release 8.0.3 and higher. In a connection between servers of different releases, the functionality is limited to that of the lower release.

Multithreaded Service Agents

Starting with release 8.1, multithreaded Heterogeneous Services agents are supported. If you have existing agents and you want to take advantage of the multithreaded features, then create the agent initialization file and explicitly start the agents using the Agent Control Utility.

See Also:

Oracle9i Heterogeneous Connectivity Administrator's Guide for general information about Heterogeneous Services, and for information about creating the agent initialization file and starting the agents using the Agent Control utility. 

SQL*Net or Oracle Net

Version 7 and version 8 releases can use SQL*Net V2 or Net8. SQL*Net V1, however, used a different network addressing scheme and cannot be used with version 8. Therefore, the following requirements apply to upgraded applications:

Upgrading SQL*Net V1 to SQL*Net V2 or Net8

Make the following changes to upgrade from SQL*Net V1 to SQL*Net V2 or Net8:

Service Naming and Connection Load Balancing

Release 8.1 and higher supports service naming and connection load balancing for services that include more than one database instance. Each service can include multiple instances, and each instance can include multiple handlers. This support enables clients to access a service rather than a specific database instance, and logically separates the service name from any particular instance name.

To support services that include multiple instances, use the following new parameters in connect descriptors:

The new parameters enable connection load balancing by taking requests through the following process:

  1. A client program specifies the name of the service to which it wants to connect.

  2. The TNS Listener finds the least loaded instance in the service.

  3. The TNS Listener finds the least loaded handler in the instance.

  4. The TNS Listener redirects the client to the optimal handler, or passes the client connection to the handler, if necessary.

To use connection load balancing, perform the following actions:

Export/Import

Starting with version 5, export dump files are importable into all future major, patch, and maintenance releases of Oracle. Table 9-24 details this support.

Table 9-24 Export Dump File Forward Compatibility
Dump File  Can Be Imported Into Future Releases 

Version 5 and Version 6

Note: For version 5, only release 5.1.22 and higher export dump files are supported. 

Oracle7, Version 8, and all future releases 

Oracle7, Release 8.0, and Release 8.1 

Release 8.0, Release 8.1, and all future releases 

The Export utility makes dump files that are not downward compatible with Import utilities of previous maintenance releases and versions. That is, their exported data cannot be imported by the Import utilities of previous maintenance releases and versions. So, a release 8.1 export dump file cannot be imported by a release 8.0 Import utility, and a Oracle9i export dump file cannot be imported by an Oracle7 Import utility.

However, the contents of a database can be imported into the previous production release if you use the Export and Import utilities of the previous release. Table 9-25 details this support.

Table 9-25 Backward Compatibility Support for Export/Import
To Export Data From  Into Previous Release  Use Export/Import Utility 

Release 8.0 

Release 7.3 

Release 7.3

Note: Run the catexp7.sql script before exporting. 

Release 8.1 

Release 7.3 

Release 7.3

Note: Run the catexp7.sql script before exporting. 

Release 8.1 

Release 8.0 

Release 8.0 

As Table 9-25 indicates, to export version 8 data to an Oracle7 database, you must first run the catexp7.sql script on your version 8 database. Then, use the Oracle7 Export utility to export the data.

For example, to export data from a release 8.1 database into an Oracle7 database, complete the following general procedure:

  1. Run the catexp7.sql script on the release 8.1 database. The catexp7.sql script resides in the ORACLE_HOME/rdbms/admin directory.

  2. Export the data from the release 8.1 database using the Oracle7 Export utility.

  3. Import the dump file into the Oracle7 database using the Oracle7 Import utility.

You do not need to run the catexp7.sql script if you are moving data from release 8.1 to release 8.0. Also, a version 6 (or earlier) Export utility cannot be used against a version 8 database.

See Also:

Oracle9i Database Utilities for detailed information about using Export/Import. 

Export/Import Usage on Data Incompatible with a Previous Version

When you export data to a previous release, data that is incompatible with the previous release either is not exported at all or is exported with the loss of some features. This applies if you are moving data from release 8.1 into release 8.0, or moving data from version 8 to version 7.

For example, partitioned tables are not exported by the Oracle7 Export utility. If you need to move a version 8 partitioned table to an Oracle7 database, then first reorganize the table into a non-partitioned table. Another example involves procedures that use invoker-rights in release 8.1. If you use the release 8.0 Export utility, then these procedures are exported, but they do not function properly in release 8.0 because release 8.0 does not support invoker-rights. Therefore, in general, if you need to export data to a previous release, then first remove as many incompatibilities with the previous release as possible before you export the data.

Miscellaneous Compatibility and Interoperability Issues

This section describes miscellaneous compatibility and interoperability issues related to your Oracle installation.

2 GB File Size Dependencies

Release 8.0.4 and higher can access files that are larger than 2 GB. However, this access is subject to the following operating system dependencies:

It is very important to check these operating system dependencies before using files that are greater than 2 GB in size.


Go to previous page Go to next page
Oracle
Copyright © 1996-2001, Oracle Corporation.

All Rights Reserved.
Go To Documentation Library
Home
Go To Product List
Book List
Go To Table Of Contents
Contents
Go To Index
Index

Master Index

Feedback