Executing LCRs → There are separate EXECUTE member procedures for row LCRs and DDL LCRs. These member procedures … row LCRs and DDL LCRs: Executing Row LCRs Executing DDL LCRs
Requirements for Managing LCRs → This section describes requirements for creating or modifying logical change records (LCRs). You … an apply handler or a rule-based transformation. You can modify captured LCRs or persistent LCRs … -constructed row LCR. However, you can use certain techniques to construct LCRs that contain LOB information … .
Executing DDL LCRs → The EXECUTE member procedure for DDL LCRs is a subprogram of the LCR$_DDL_RECORD type. When the … would be run for the LCR are not run. The EXECUTE member procedure for DDL LCRs can be invoked only … in an apply handler for an apply process. All applied DDL LCRs commit automatically. Therefore, if a … Reference for more information
Logical Change Records (LCRs) → LCRs: row LCRs and DDL LCRs. A capture process, a synchronous capture, or an application can … capture LCRs. You can capture the following types of LCRs with Oracle Streams: A captured LCR is an LCR … in the DBMS_APPLY_ADM package The only difference between the persistent LCRs captured
Constructing and Enqueuing LCRs → Use the following LCR constructors to create LCRs: To create a row LCR that contains a change to a … process, because the apply process will be applying persistent LCRs, not captured LCRs. Also, ensure … LCR constructors Create and enqueue LCRs using the construct_row_lcr procedure created in Step 5. In
Executing Row LCRs → The EXECUTE member procedure for row LCRs is a subprogram of the LCR$_ROW_RECORD type. When the … Administration Oracle Database PL/SQL Packages and Types Reference for more information about row LCRs and … the LCR$_ROW_RECORD type Example of Constructing and Executing Row LCRs The example in this section … and executing row LCRs.
C XML Schema for LCRs → Go to main content 53/57 C XML Schema for LCRs The XML schema described in this appendix defines … for LCRs. The namespace for this schema is the following: http://xmlns.oracle.com/streams/schemas … Definition of the XML Schema for LCRs The following is the XML schema definition for LCRs: '
Tracking LCRs Through a Stream → capture database changes implicitly. An application or user can construct and enqueue LCRs to … LCR through a stream using one of the following methods: When LCRs are captured by a capture … low value. When LCRs are captured by a capture process or a synchronous capture, or when LCRs are … package. LCR tracking
Managing LCRs Containing LOB Columns → LOB data types can be present in row LCRs captured by a capture process, but these data types are … represented by other data types. LOB data types cannot be present in row LCRs captured by synchronous … captures. Certain LOB data types cannot be present in row LCRs constructed by users. Table 14-1 … shows the LCR representation
Track LCRs Through a Stream → $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 … message_tracking_frequency
LOB Assembly and Custom Apply of LCRs Containing LOB Columns → a change to a row that includes one or more LOB columns can result in multiple row LCRs. An apply … process that does not send row LCRs that contain LOB columns to an apply handler can apply these row … LCRs directly. However, before Oracle Database 10 g Release 2, custom processing of row LCRs that … LCRs
Table 14-2 Oracle Streams Behavior with LOB Assembly Disabled → Original Row Change First Set of LCRs Second Set of LCRs Third Set of LCRs Final LCR INSERT One … INSERT LCR One or more LOB WRITE LCRs One or more LOB TRIM LCRs UPATE UPDATE One UPDATE LCR One or more … LOB WRITE LCRs One or more LOB TRIM LCRs UPATE DELETE One DELETE
14 Managing Logical Change Records (LCRs) → This chapter contains instructions for managing logical change records (LCRs) in an Oracle Streams … replication environment. This chapter contains these topics: Requirements for Managing LCRs … Constructing and Enqueuing LCRs Executing LCRs Managing LCRs Containing LOB Columns Managing LCRs
Table 14-3 Oracle Streams Behavior with LOB Assembly Enabled → SET_VALUES member procedures for row LCRs to make changes to a LOB. When LOB assembly is enabled, LOB … assembly converts non- NULL LOB columns in persistent LCRs into LOB locators. However, LOB assembly … does not combine multiple persistent row LCRs into a single row LCR. For example, for persistent row … LCRs,
Step 2 Add the product_long_desc Column to the product_information Table → The following statement adds the product_long_desc column to the product_information table at all of the databases in the environment: ALTER TABLE oe.product_information ADD(product_long_desc CLOB);
Step 5 Query the DBA_APPLY_DML_HANDLERS View → To ensure that the procedure DML handler is set properly for the oe.product_information table, run the following query: COLUMN OBJECT_OWNER HEADING 'Table|Owner' FORMAT A5 COLUMN OBJECT_NAME HEADING 'Table Name' FORMAT A20 COLUMN OPERATION_NAME HEADING 'Operation' FORMAT A10 COLUMN USER_PROCEDURE HEADING 'Handler Procedure' FORMAT A25 COLUMN ASSEMBLE_LOBS HEADING 'LOB Assembly?' FORMAT A15 SELECT
Table 14-1 LOB Data Type Representations in Row LCRs → applied as several row LCRs. Rules used to evaluate these row LCRs must be deterministic, so that either … all of the row LCRs corresponding to the row change cause a rule in a rule set to evaluate to TRUE … when constructing or processing LOB columns, about apply process behavior for LCRs containing LOB … columns,
Apply Process Behavior for Direct Apply of LCRs Containing LOBs → An apply process behaves in the following ways when it applies an LCR that contains a LOB column directly (without the use of an apply handler): If an LCR whose command type is INSERT or UPDATE has a new LOB that contains data, and the lob_information is not DBMS_LCR.LOB_CHUNK or DBMS_LCR.LAST_LOB_CHUNK, then the data is applied. If an LCR whose command type is INSERT or UPDATE has a new LOB that
Step 4 Set the Procedure DML Handler for the Apply Process → This step sets the convert_product_information procedure as the procedure DML handler at the destination database for INSERT, UPDATE, and LOB_UPDATE operations. Notice that the assemble_lobs parameter is set to TRUE each time the SET_DML_HANDLER procedure is run. BEGIN DBMS_APPLY_ADM.SET_DML_HANDLER( object_name => 'oe.product_information', object_type => 'TABLE', operation_name => 'INSERT', error_handler
Requirements for Constructing and Processing LCRs Containing LOB Columns → If your environment produces row LCRs that contain LOB columns, then you must meet the requirements … in the following sections when you construct or process these LCRs: Requirements for Constructing … and Processing LCRs Without LOB Assembly Requirements for Apply Handler Processing of LCRs with LOB … Assembly
Step 1 Add the photo Column to the product_information Table → The following statement adds the photo column to the product_information table at the destination database: ALTER TABLE oe.product_information ADD(photo BLOB);
Step 3 Create the PL/SQL Procedure for the Procedure DML Handler → This example creates the convert_product_information procedure. This procedure will be used for the procedure DML handler. This procedure assumes that the following user-created PL/SQL subprograms exist: The get_photo procedure obtains a photo in BLOB format from a URL or table based on the product_id and updates the BLOB locator that has been passed in as an argument. The get_product_long_desc procedure
Managing LCRs Containing LONG or LONG RAW Columns → LONG and LONG RAW data types all can be present in row LCRs captured by a capture process, but … these data types are represented by the following data types in row LCRs. LONG data type is represented … as VARCHAR2 data type in row LCRs. LONG RAW data type is represented as RAW data type in row LCRs. A … LCRs.
Does the Apply Process Apply Captured LCRs? → = 'APPLY'; If the apply process applies captured LCRs, then your output looks similar to the
Excluding Extra Attributes from Implicitly Captured LCRs → To exclude an extra attribute from the LCRs captured by a capture process or synchronous capture
Table 2-5 Extra Attributes in LCRs → included in DDL LCRs or row LCRs for index-organized tables. serial# The serial number of the session … Captured LCRs\" \"Viewing the Extra Attributes Captured by Implicit Capture\" Oracle Database PL/SQL
Managing Extra Attributes in Captured LCRs → it is capturing currently. The extra attributes are the following: row_id (row LCRs only) serial … : Including Extra Attributes in Implicitly Captured LCRs Excluding Extra Attributes from Implicitly … Captured LCRs See Also: \"Extra Information in LCRs\" \"Viewing the Extra Attributes Captured by
Including Extra Attributes in Implicitly Captured LCRs → To include an extra attribute in the LCRs captured by a capture process or synchronous capture, run
Creating an Apply Process for Persistent LCRs with DBMS_APPLY_ADM → apply process that applies persistent logical change records (LCRs). This apply process can apply LCRs … captured LCRs. Therefore, the apply process can apply persistent LCRs or persistent user messages … rules to the apply process rule set. These rules direct the apply process to apply LCRs for the
Example Script for Constructing and Enqueuing LCRs Containing LOBs → Administrator Necessary Privileges on the Tables Create a PL/SQL Procedure to Enqueue LCRs Containing LOBs
Table 2-3 Attributes Present in All DDL LCRs → … edition_name The name of the edition in which the DDL statement was executed. DDL LCRs that were captured by … . Synchronous captures cannot capture DDL changes, and these attributes are not present in explicitly captured DDL LCRs.
Creating an Apply Process for Captured LCRs Using DBMS_STREAMS_ADM → an apply process that applies captured logical change records (LCRs). This apply process can apply … LCRs that were captured by a capture process. Complete the following steps: Complete the tasks in … LCRs to the local database. The apply process is created only if it does not already exist … that evaluates to TRUE for row LCRs
Table 2-4 Additional Attributes in Captured DDL LCRs → row LCRs and DDL LCRs contain the source database name of the database where a change originated. If … PL/SQL Packages and Types Reference Extra Information in LCRs In addition to the information … discussed in the previous sections, row LCRs and DDL LCRs optionally can include the extra information
Are Incorrectly Transformed LCRs in the Error Queue? → In some cases, incorrectly transformed LCRs might have been moved to the error queue by an apply … DML handler from acting on LCRs that are not involved with the error transaction. After successful
Propagating User-Enqueued LCRs from ANYDATA Queues to Typed Queues → You can propagate user-enqueued LCRs to an appropriate typed queue, but propagation of captured … LCRs to a typed queue is not supported. See Also: \"Streams Capture Process\" in Oracle Streams … Concepts and Administration for more information on capture processes To propagate user-enqueued LCRs from … package to transform LCRs
Creating an Apply Process for Captured LCRs with DBMS_APPLY_ADM → apply process that applies captured logical change records (LCRs). This apply process can apply LCRs … process applies captured LCRs, not persistent LCRs or persistent user messages. Therefore, if an LCR that … use a negative rule set. Specifies that the LCRs applied by the apply process originate at
Table 2-1 Attributes Present in All Row LCRs → INSERT, then there are no old values. For UPDATE and DELETE statements, row LCRs created by a capture … process can include some or all of the old column values in the row, but row LCRs created by a … no new values. For UPDATE and INSERT statements, row LCRs created by a capture process can include … some or all of the new column
Sequence LCRs → generate sequence values. You can stream sequence LCRs in the following ways: To capture sequence … LCRs using a capture process, set the capture process parameter capture_sequence_nextval to Y. To … construct sequence LCRs using the OCI interface, use the OCILCRNew function and the OCILCRHeaderSet … function with the OCI_ROWLCR_SEQ_LCR
Step 8 Create a PL/SQL Procedure to Enqueue LCRs Containing LOBs → */ CONNECT strmadmin CREATE OR REPLACE PROCEDURE enq_row_lcr(source_dbname VARCHAR2, cmd_type VARCHAR2, obj_owner VARCHAR2, obj_name VARCHAR2, old_vals SYS.LCR$_ROW_LIST, new_vals SYS.LCR$_ROW_LIST) AS xr_lcr SYS.LCR$_ROW_RECORD; BEGIN xr_lcr:= SYS.LCR$_ROW_RECORD.CONSTRUCT( source_database_name => source_dbname, command_type => cmd_type, object_owner => obj_owner, object_name => obj_name, old_values
Step 5 Create a Procedure that Prints All the Error LCRs for a Transaction → The following procedure prints all the LCRs in the error queue for a particular transaction. It