Eduardo, January 26, 2017 - 4:09 pm UTC
Hi Chris Saxon, thank you for the answer!
We can't use GoldenGate.
Is there any other alternative, either thought Streams features or something else?
Would "Explicit Consumption with Manual Dequeue" help in my scenario?
Thank you,
Eduardo
January 30, 2017 - 8:58 pm UTC
I would say your best bet would be to look at refactoring the long/long raws into clob/blob.
Eduardo Lopes, January 31, 2017 - 12:54 pm UTC
I'm trying to use a Procedure Handler to store the LCRs on a table.
After storing them on the table, I'm selecting the LCR and executing the lcr.execute(true) method.
However, if the LCR has a CLOB column I'm getting the following error:
ORA-26688: missing key in LCR
If the LCR is executed within the Procedure Handler, it works correctly.
Any idea why?
Thank you
January 31, 2017 - 2:14 pm UTC
What exactly are you doing?
Eduardo, January 31, 2017 - 5:10 pm UTC
February 01, 2017 - 2:57 pm UTC
The docs have some notes on using LOBs with lcr.execute:
Considerations for LOB Columns
When processing a row LCR with LOB columns with a procedure DML handler or error handler, and the handler is using LOB assembly (the assemble_lobs parameter is set to TRUE for the handler), this member procedure executes the assembled row LCR. An assembled row LCR represents a LOB value with a LOB locator or NULL.
If assemble_lobs is set to FALSE for the handler, then this member procedure executes the nonassembled row LCRs. Nonassembled row LCRs represent LOB values with VARCHAR2 and RAW data types. These nonassembled row LCRs might have been modified by the handler.
An error is raised under the following conditions:
A DML or error handler configured with assemble_lobs set to FALSE attempts to execute a row LCR that contains a LOB locator.
A DML or error handler configured with assemble_lobs set to TRUE attempts to execute a row LCR that contains one or more LOB values represented with VARCHAR2 or RAW data types.
If an error is raised because of one of these conditions, then the transaction that includes the row LCR is moved to the error queue, and the LOB is represented by the original (nonassembled) row LCRs. http://docs.oracle.com/database/122/ARPLS/Logical-Change-Record-TYPEs.htm#GUID-1462FDB7-E00B-4F7B-8C59-4AEA5FFCF6BD__I997654
Eduardo, February 02, 2017 - 6:44 pm UTC
Please take a look at this script:
https://livesql.oracle.com/apex/livesql/s/ehgkihub9f2tjradghhuewhyu In the
statement 1 I'm defining the handler with "assemble_lobs =>
true"
In the
statement 3 I'm performing an insert with a CLOB value.
Does this falls into the
"LCR that contains one or more LOB values represented with VARCHAR2 or RAW data types" error condition?