{"record":{"id":"d5610c891d6793ee","repo":"alibaba/canal","slug":"unsupport-sourcingtype-for","errorCode":null,"errorMessage":"unsupport SourcingType for {}","messagePattern":"unsupport SourcingType for (.+?)","errorType":"validation","errorClass":"CanalException","httpStatus":null,"severity":"error","filePath":"instance/manager/src/main/java/com/alibaba/otter/canal/instance/manager/CanalInstanceWithManager.java","lineNumber":390,"sourceCode":"            localBinlogEventParser.setConnectionCharset(parameters.getConnectionCharset());\n            localBinlogEventParser.setDirectory(parameters.getLocalBinlogDirectory());\n            localBinlogEventParser.setProfilingEnabled(false);\n            localBinlogEventParser.setDetectingEnable(parameters.getDetectingEnable());\n            localBinlogEventParser.setDetectingIntervalInSeconds(parameters.getDetectingIntervalInSeconds());\n            localBinlogEventParser.setFilterTableError(parameters.getFilterTableError());\n            localBinlogEventParser.setParallel(parameters.getParallel());\n            // 数据库信息，反查表结构时需要\n            if (!CollectionUtils.isEmpty(dbAddresses)) {\n                localBinlogEventParser.setMasterInfo(new AuthenticationInfo(dbAddresses.get(0),\n                    parameters.getDbUsername(),\n                    parameters.getDbPassword(),\n                    parameters.getDefaultDatabaseName(),\n                    parameters.getSslInfo()));\n            }\n\n            eventParser = localBinlogEventParser;\n        } else if (type.isOracle()) {\n            throw new CanalException(\"unsupport SourcingType for \" + type);\n        } else {\n            throw new CanalException(\"unsupport SourcingType for \" + type);\n        }\n\n        // add transaction support at 2012-12-06\n        if (eventParser instanceof AbstractEventParser) {\n            AbstractEventParser abstractEventParser = (AbstractEventParser) eventParser;\n            abstractEventParser.setTransactionSize(parameters.getTransactionSize());\n            abstractEventParser.setLogPositionManager(initLogPositionManager());\n            abstractEventParser.setAlarmHandler(getAlarmHandler());\n            abstractEventParser.setEventSink(getEventSink());\n\n            if (StringUtils.isNotEmpty(filter)) {\n                AviaterRegexFilter aviaterFilter = new AviaterRegexFilter(filter);\n                abstractEventParser.setEventFilter(aviaterFilter);\n            }\n\n            // 设置黑名单","sourceCodeStart":372,"sourceCodeEnd":408,"githubUrl":"https://github.com/alibaba/canal/blob/87be50e87686a3e8af08c368d0e1ffd1f59eb04a/instance/manager/src/main/java/com/alibaba/otter/canal/instance/manager/CanalInstanceWithManager.java#L372-L408","documentation":"Thrown in doInitEventParser() (CanalInstanceWithManager.java:389-390) when SourcingType.isOracle() is true. Canal explicitly rejects Oracle as a data source — only MYSQL, LOCALBINLOG (and GROUP at the outer initEventParser level) are implemented. The exception text 'unsupport SourcingType for ' + type mirrors the unsupported-feature pattern used elsewhere in the file.","triggerScenarios":"Configuring canal.instance.db.sourcingType = ORACLE (or returning SourcingType.ORACLE from a custom parameter source) and starting the instance. doInitEventParser reaches the isOracle() branch and throws during parser construction.","commonSituations":"Operator expects Oracle CDC support (canal's name/lineage is MySQL-oriented but the enum still lists ORACLE); legacy config from a fork that once supported Oracle; misreading documentation that mentions Oracle as a roadmap item.","solutions":["Use a supported sourcing type: MYSQL or LOCALBINLOG. For Oracle CDC use a dedicated tool (e.g. Debezium with the Oracle connector, Oracle LogMiner/XStream).","If processing Oracle-originated data already captured elsewhere, point canal at a MySQL/local-binlog source or an intermediary.","Remove canal.instance.db.sourcingType = ORACLE from the instance config."],"exampleFix":"# before\ncanal.instance.db.sourcingType = ORACLE\n\n# after — supported type\ncanal.instance.db.sourcingType = MYSQL","handlingStrategy":"validation","validationCode":"if (parameters.getSourcingType().isOracle()) {\n    throw new IllegalArgumentException(\n        \"SourcingType.ORACLE is not supported by canal; use MYSQL or LOCALBINLOG, or a dedicated Oracle CDC tool.\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use canal.instance.db.sourcingType = MYSQL or LOCALBINLOG only.","For Oracle CDC use Debezium/Oracle LogMiner, not canal.","Remove any ORACLE sourcing-type config inherited from forks."],"tags":["configuration","sourcing-type","event-parser","oracle","unsupported","instance-manager"],"backgroundTag":null,"analyzedSha":"87be50e87686a3e8af08c368d0e1ffd1f59eb04a","analyzedAt":"2026-08-14T04:30:11.918Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}