View Issue Details

IDProjectCategoryView StatusLast Update
0005256SymmetricDS ProBugpublic2022-04-11 19:29
Reporterelong Assigned Toelong  
Prioritynormal 
Status closedResolutionfixed 
Product Version3.13.0 
Target Version3.13.4Fixed in Version3.13.4 
Summary0005256: Oracle log miner unsupported dmlType LOB_TRIM
DescriptionOracle log miner throws exception about an unsupported DML type of "LOB_TRIM". The log shows a PL/SQL block that runs a dbms_lob.trim() function on a table's column. These appear to be internally generated by Oracle after certain write operations. However, it is technically possible to run the dbms_lob.trim() function directly and cause one of these to appear in the log. Even with supplemental log data turned on, Oracle does not appear to be capturing any data about the LOB from this operation. Since the most common occurrence of lob_trim() is from Oracle internally, we will ignore it for now. In the future, it could be supported by streaming out the current LOB in response to a lob_trim().

2022-04-05 11:12:18,501 ERROR [server] [LogMinerService] [server-job-17] Failed to mine the log org.jumpmind.datasource.oracle.OracleLogMinerException: Unsupported dmlType: 'LOB_TRIM' sql=DECLARE
 loc_c CLOB;
 buf_c VARCHAR2(6156);
 loc_b BLOB;
 buf_b RAW(6156);
 loc_nc NCLOB;
 buf_nc NVARCHAR2(6156);
 e_len NUMBER;
BEGIN
 select "DATA" into loc_c from "ELONG"."MYTEST" where "ID" = '1' for update;

  dbms_lob.trim(loc_c, 4);
END;

 collectionSchema=ELONG.MYTEST [ID:NUMBER, DATA:STRING ]
    at org.jumpmind.datasource.oracle.OracleStatementParser.parseSql(OracleStatementParser.java:84)
    at org.jumpmind.datasource.oracle.LogRowConverter.convertToDataObject(LogRowConverter.java:53)
    at org.jumpmind.datasource.oracle.OracleLogMiner.convertRow(OracleLogMiner.java:442)
    at org.jumpmind.datasource.oracle.OracleLogMiner.readDataObject(OracleLogMiner.java:428)
    at com.jumpmind.symmetric.log.TransactionMiner.hasData(TransactionMiner.java:159)
    at com.jumpmind.symmetric.console.service.impl.LogMinerService.mineDataForTables(LogMinerService.java:149)
    at com.jumpmind.symmetric.console.service.impl.LogMinerService.mineData(LogMinerService.java:79)
    at org.jumpmind.symmetric.job.LogMinerJob.doJob(LogMinerJob.java:44)
    at org.jumpmind.symmetric.job.AbstractJob.invoke(AbstractJob.java:201)
    at org.jumpmind.symmetric.job.AbstractJob.run(AbstractJob.java:268)
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:750)
Steps To Reproducecreate table mytest (id integer primary key, data clob)
/

insert into mytest values (1, 'eric123')
/

create or replace procedure eric as
lob_loc clob;
begin
select data into lob_loc from mytest where id = 1 for update;
dbms_lob.trim(lob_loc, 4);
commit;
end eric;
/

call eric()
/

Tagsdialect: oracle, log miner

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2022-04-05 17:12 elong New Issue
2022-04-05 17:12 elong Status new => assigned
2022-04-05 17:12 elong Assigned To => elong
2022-04-05 17:12 elong Tag Attached: dialect: oracle
2022-04-05 17:12 elong Tag Attached: log-miner
2022-04-05 17:21 elong Status assigned => resolved
2022-04-05 17:21 elong Resolution open => fixed
2022-04-05 17:21 elong Fixed in Version => 3.13.4
2022-04-11 19:29 admin Status resolved => closed
2022-08-09 17:57 admin Tag Renamed log-miner => log miner