What's New in Oracle Streams?

This section describes new features of Oracle Streams for Oracle Database 11g and provides pointers to additional information.

This section contains these topics:

Oracle Database 11g Release 2 (11.2) New Features in Oracle Streams

The following Oracle Streams features are new in Oracle Database 11g Release 2 (11.2):

XStream

XStream provides application programming interfaces (APIs) that enable information sharing between Oracle databases and between Oracle databases and other systems. The other systems include Oracle systems, such as Oracle Times Ten, non-Oracle databases, non-RDBMS Oracle products, file systems, third party software applications, and so on.

Statement DML Handlers

A new type of apply handler called a statement DML handler can process row LCRs in a customized way using a collection of SQL statements. Statement DML handlers typically perform better than procedure DML handlers because statement DML handlers require no PL/SQL processing.

Record Table Changes With Oracle Streams

The new MAINTAIN_CHANGE_TABLE procedure in the DBMS_STREAMS_ADM package makes it easy to configure an Oracle Streams environment that records the changes made to a table.

SQL Generation

SQL generation is the ability to generate the SQL statement required to perform the change encapsulated in a row logical change record (row LCR).

See Also:

Oracle Streams Supports Compressed Tables

In prior releases of Oracle Database, Oracle Streams did not support the capture of changes to compressed tables. In Oracle Database 11g Release 2 (11.2) and later, Oracle Streams capture processes and synchronous captures can capture changes made to tables compressed using either basic table compression or OLTP table compression. In addition, apply processes can apply changes to compressed tables.

Note:

Capture processes can capture changes to compressed tables only if the compatibility level is set to 11.2.0 or higher at the source database. In a downstream capture configuration, the compatibility level must be set to 11.2.0 or higher at the database running the capture process also. Synchronous captures can capture changes to compressed tables only if the compatibility level is set to 11.2.0 or higher at the database.

Capture Processes and Apply Processes Support SecureFiles LOBs

In prior releases of Oracle Database, Oracle Streams did not support SecureFiles LOBs. In Oracle Database 11g Release 2 (11.2) and later, Oracle Streams capture processes can capture changes made to SecureFiles CLOB, NCLOB, and BLOB columns, and Oracle Streams apply processes can apply changes to SecureFiles CLOB, NCLOB, and BLOB columns.

New Keep Columns Declarative Rule-Based Transformation

The keep columns declarative rule-based transformation keeps a list of columns in a row logical change record (LCR) that satisfies the specified rule. The transformation deletes columns that are not in the list from the row LCR. You specify a keep columns declarative rule-based transformation using the KEEP_COLUMNS procedure in the DBMS_STREAMS_ADM package.

Automatic Split and Merge

Two new capture process parameters can enable automatic split and merge: split_threshold and merge_theshold. When these parameters are set to specify automatic split and merge, Oracle Scheduler jobs monitor the streams flowing from a capture process. When an Oracle Scheduler job identifies a problem with a stream, the job submits a new Oracle Scheduler job to split the problem stream off from the other streams flowing from the capture process. Other Oracle Scheduler jobs continue to monitor the stream, and, when the problem is corrected, an Oracle Scheduler job merges the stream back with the other streams.

New Apply Process Parameter: txn_age_spill_threshold

The apply process begins to spill messages from memory to hard disk for a particular transaction when the amount of time that any message in the transaction has been in memory exceeds the specified number of seconds in the txn_age_spill_threshold parameter.

Monitoring Jobs

The new START_MONITORING procedure in the UTL_SPADV package can create a monitoring job that monitors Oracle Streams performance continually at specified intervals. Other new procedures in this package enable you to manage monitoring jobs.

New DBA_RECOVERABLE_SCRIPT_HIST View

The new DBA_RECOVERABLE_SCRIPT_HIST view stores the results of recovery operations that were performed by the RECOVER_OPERATION procedure in the DBMS_STREAMS_ADM package.

Oracle Database 11g Release 1 (11.1) New Features in Oracle Streams

The following Oracle Streams features are new in Oracle Database 11g Release 1 (11.1):

Oracle Streams Topology and Oracle Streams Performance Advisor

The Oracle Streams topology identifies individual streams of messages and the Oracle Streams components configured in each stream. An Oracle Streams environment typically covers multiple databases, and the Oracle Streams topology provides a comprehensive view of the entire Oracle Streams environment.

The Oracle Streams Performance Advisor reports performance measurements for an Oracle Streams topology, including throughput and latency measurements. The Oracle Streams Performance Advisor also identifies bottlenecks in an Oracle Streams topology so that they can be corrected. In addition, the Oracle Streams Performance advisor examines the Oracle Streams components in an Oracle Streams topology and recommends ways to improve their performance.

Automatic Data Type Conversion During Apply

During apply, an apply process automatically converts certain data types when there is a mismatch between the data type of a column in the row logical change record (row LCR) and the data type of the corresponding column in a table.

Simplified Way to Restore Default Values for Parameters

You can set a capture process parameter to its default value by specifying NULL for the value of the parameter in the DBMS_CAPTURE_ADM.SET_PARAMETER procedure. Similarly, you can set an apply process parameter to its default value by specifying NULL for the value of the parameter in the DBMS_APPLY_ADM.SET_PARAMETER procedure.

Oracle Streams Supports Tables in a Flashback Data Archive

In prior releases of Oracle Database, Oracle Streams did not support the replication of changes to tables in a flashback data archive. In Oracle Database 11g Release 1 (11.1) and later, Oracle Streams supports tables in a flashback data archive.

Oracle Streams Supports Virtual Columns

In prior releases of Oracle Database, Oracle Streams did not support the replication of changes to tables with virtual columns. In Oracle Database 11g Release 1 (11.1) and later, Oracle Streams supports tables with virtual columns.

New Capture Process Parameter: skip_autofiltered_table_ddl

A new capture process parameter named skip_autofiltered_table_ddl enables you to capture data definition language (DDL) changes to database objects for which data manipulation language (DML) changes are automatically filtered.

New Apply Process Parameter: rtrim_on_implicit_conversion

A new apply process parameter named rtrim_on_implicit_conversion determines whether the apply process trims character data during automatic data type conversion.

Synchronous Capture

Synchronous capture is a new Oracle Streams client that captures data manipulation language (DML) changes made to tables immediately after the changes are committed.

Oracle Streams Support for XMLType Columns

XMLType is an Oracle-supplied type that you can use to store and query XML data in the database. Oracle Streams can capture, propagate, and apply changes to XMLType data.

Capture processes can capture changes to XMLType columns stored as CLOB columns, but capture processes cannot capture changes to XMLType columns stored object relationally or as binary XML. Apply processes can apply changes to XMLType columns stored as CLOB columns, stored object relationally, or stored as binary XML.

Oracle Streams Support for Transparent Data Encryption

Oracle Streams supports capturing, propagation, and applying changes to columns that have been encrypted using transparent data encryption. Oracle Streams supports columns that were encrypted at the column level or through tablespace encryption. Tablespace encryption enables you to encrypt an entire tablespace. All objects created in the encrypted tablespace are automatically encrypted, including all columns in the database objects in the tablespace. Once a column is encrypted, whether it is due to column encryption or tablespace encryption, Oracle Streams components handle the column data in the same way.

Split and Merge of a Stream Destination

You can easily split off an unavailable replica from a Streams replication configuration. Splitting the stream minimizes the time needed for the replica to "catch up" when it becomes available again. When the replica is caught up, it can be merged back into the original configuration. This feature uses three new procedures in the DBMS_STREAMS_ADM package: SPLIT_STREAMS, MERGE_STREAMS_JOB, and MERGE_STREAMS.

Track LCRs Through a Stream

The new SET_MESSAGE_TRACKING procedure in the DBMS_STREAMS_ADM package lets you specify a tracking label for logical change records (LCRs) generated by a database session. You can query the new V$STREAMS_MESSAGE_TRACKING view to track the LCRs through the stream and see how they were processed by each Oracle Streams client.

LCR tracking is useful if LCRs are not being applied as expected by one or more apply processes. When this happens, you can use LCR tracking to determine where the LCRs are stopping in the stream and address the problem at that location.

Also, the new message_tracking_frequency capture process parameter enables you to track LCRs automatically.

See Also:

Compare and Converge Shared Database Objects

A new Oracle-supplied package called DBMS_COMPARISON enables you to compare the rows in a shared database object, such as a table, at two different databases. If differences are found in the database object, then this package can converge the database objects so that they are consistent.

Automated Alerts for Oracle Streams Clients and Thresholds

Enterprise Manager automatically alerts you when an Oracle Streams client becomes disabled or when Oracle Streams-related threshold that you have defined is crossed.

Oracle Streams Jobs Use Oracle Scheduler

In past releases, Oracle Streams used jobs created by the DBMS_JOB package to perform jobs such as propagation and event notification, and the JOB_QUEUE_PROCESSES initialization parameter controlled the number of slave processes that were created.

In Oracle Database 11g Release 1 (11.1) and later, Oracle Streams uses Oracle Scheduler to perform these jobs. Oracle Scheduler automatically tunes the number of slave processes for these jobs based on the load on the computer system, and the JOB_QUEUE_PROCESSES initialization parameter is only used to specify the maximum number of slave processes. Therefore, the JOB_QUEUE_PROCESSES initialization parameter does not need to be set, unless you want to limit the number of slaves that can be created.

Notification Improvements

This release introduces the following notification improvements:

  • Notification grouping by time

  • Better scaling to enable a large number of notifications to be sent simultaneously

  • Improved diagnosability of notifications using registration statistics

New Error Messages for Easier Error Handling

The following apply error messages are new in Oracle Database 11g Release 1 (11.1):

  • An ORA-26787 error is raised if the row to be updated or deleted does not exist in the target table.

  • An ORA-26786 error is raised when the row exists in the target table, but the values of some columns do not match those of the row logical change record (row LCR).

In past releases, an ORA-01403 error was returned in these situations. These new error messages make it easier to handle apply errors in DML handlers and error handlers. If you have existing procedure handlers and error handlers, then they you might need to modify them for the current release.

Combined Capture and Apply

Oracle Streams can improve propagation efficiency under certain conditions.