Issue:
Oracle CDC fails with the below error:
SELECT SCN, USERNAME, OPERATION_CODE, TIMESTAMP, SQL_REDO, TABLE_NAME, COMMIT_SCN, SEQUENCE#, CSF, XIDUSN, XIDSLT, XIDSQN, RS_ID, SSN, SEG_OWNER FROM V$LOGMNR_CONTENTS WHERE ((( ) AND (OPERATION_CODE IN (1,3,2,25))) OR (OPERATION_CODE = 7 OR OPERATION_CODE = 36)), OriginalSql = SELECT SCN, USERNAME, OPERATION_CODE, TIMESTAMP, SQL_REDO, TABLE_NAME, COMMIT_SCN, SEQUENCE#, CSF, XIDUSN, XIDSLT, XIDSQN, RS_ID, SSN, SEG_OWNER FROM V$LOGMNR_CONTENTS WHERE ((( ) AND (OPERATION_CODE IN (1,3,2,25))) OR (OPERATION_CODE = 7 OR OPERATION_CODE = 36)), Error Msg = ORA-00936: missing expression
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:498)
Solution:
Following possibilities can cause the Oracle CDC origin to throw this error.
- Either the schema or tables do not exist, or the table/schema name cases do not match.
- Try and use the same case for the tables, if you created it within double quotes.Alternatively, for simplicity, just use upper case in schema and table names.
- Quotes were incorrectly added to the table pattern which resulted in the table pattern not working. For example '%TABLE%' instead of %TABLE%.