While configuring an Oracle database with supplemental logging for a tool that replicates data to Snowflake, the users reported the following error that was appearing in the application randomly:
ORA-00604: Error occurred at recursive SQL Level 1
ORA-62009: cannot encode an invalid XML character 0x0 in supplemental log.
The error happens when an INSERT is being executed against one of the problematic tables:
insert into "SCHEMA"."TABLE1" (q_name, msgid, corrid, priority, state, delay, expiration, time_manager_info, local_order_no, chain_no, enq_time, step_no, enq_uid, enq_tid, retry_count, exception_qschema, exception_queue, recipient_key, dequeue_msgid, user_data, sender_name, sender_address, sender_protocol, user_prop, cscn, dscn) values (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, 0, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24, :25)
After enabling tracing to understand what's happening, I was able to find that the error actually is because Oracle is not able to handle the data sent to the column dequeue_msgid, that column is of data type "RAW(16)".
Bind#18
oacdty=121 mxl=656(656) mxlc=00 mal=00 scl=00 pre=00
oacflg=00 fl2=0001 frm=00 csi=00 siz=656 off=0
toid ptr value=2D5AB06D0 length=16
B93D8C7894170953E04019AC227A1D
kxsbbbfp=7f7ea14d4e08 bln=656 avl=16 flg=15
value=Unhandled datatype (121) found in kxsbndinf
Dumping '' addr=0x7f7ea14d4e08 size=16 bytes
Dump of memory from 0x7f7ea14d4e08 to 0x7f7ea14d4e18
7F7EA14D4E00 173E4A00 00000000 [.J>.....]
7F7EA14D4E10 A14D4E18 00007F7E [.NM.~...]
oacdty=121 mxl=656(656) mxlc=00 mal=00 scl=00 pre=00
oacflg=00 fl2=0001 frm=00 csi=00 siz=656 off=0
toid ptr value=2D5AB06D0 length=16
B93D8C7894170953E04019AC227A1D
kxsbbbfp=7f7ea14d4e08 bln=656 avl=16 flg=15
value=Unhandled datatype (121) found in kxsbndinf
Dumping '' addr=0x7f7ea14d4e08 size=16 bytes
Dump of memory from 0x7f7ea14d4e08 to 0x7f7ea14d4e18
7F7EA14D4E00 173E4A00 00000000 [.J>.....]
7F7EA14D4E10 A14D4E18 00007F7E [.NM.~...]
I didn't find any registered bug for this in Oracle Metalink.
Solution:
Disable Supplemental Logging at Database Level and Enable it at table level for only those tables where you need it.
No hay comentarios:
Publicar un comentario