apache/seatunnel · error · IllegalArgumentException
Oracle only supports single database, databaseList
Error message
Oracle only supports single database, databaseList: ${databaseList} What it means
Thrown by OracleSourceConfigFactory.validateConfig when database-list contains more than one database name. The Oracle CDC connector's redo-log reader attaches to a single database/PDB per job, so multi-database lists cannot be honored and validation rejects them.
Solutions
- Keep exactly one database in database-list.
- To read from multiple Oracle databases, run one CDC job per database.
- Remove placeholder/empty entries from database-list.
Example fix
// before database-list = ["ORCL1", "ORCL2"] // after database-list = ["ORCL1"]
Defensive patterns
Strategy: validation
Validate before calling
if (databaseList.size() != 1) throw new IllegalArgumentException("Oracle CDC supports exactly one database"); Prevention
- Keep one database per Oracle CDC job; split multi-DB workloads into separate jobs.
- Remove placeholder entries from database-list before submission.
When it happens
Trigger: Configuring database-list = ["ORCL1","ORCL2"] and calling create(), which invokes validateConfig().
Common situations: Users migrating from MySQL CDC (which allows many databases) list multiple Oracle databases; also occurs when a template config leaves a placeholder second entry.
Related errors
- Invalid table name
- Oracle-CDC specific startup mode uses…
- Oracle database name must be in all uppercase, database
- Oracle table name format must be is
- Oracle table name must be in all uppercase, table
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/3ffc1c087f1f516b.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/oracle/config/OracleSourceConfigFactory.java:193
hostname,
port,
username,
password,
originUrl,
fetchSize,
serverTimeZone,
connectTimeoutMillis,
connectMaxRetries,
connectionPoolSize,
exactlyOnce);
// Propagate the enableConcurrentRead flag so the chunk splitter can skip split analysis.
config.setEnableConcurrentRead(this.enableConcurrentRead);
return config;
}
private void validateConfig() throws IllegalArgumentException {
if (databaseList.size() != 1) {
throw new IllegalArgumentException(
"Oracle only supports single database, databaseList: " + databaseList);
}
for (String database : databaseList) {
for (int i = 0; i < database.length(); i++) {
if (Character.isLetter(database.charAt(i))
&& !Character.isUpperCase(database.charAt(i))) {
throw new IllegalArgumentException(
"Oracle database name must be in all uppercase, database: " + database);
}
}
}
for (String table : tableList) {
if (table.split("\\.").length != 3 && table.split("\\.").length != 2) {
throw new IllegalArgumentException(
"Oracle table name format must be is: ${database}.${schema}.${table} or ${schema}.${table}, table: "
+ table);
}
for (int i = 0; i < table.length(); i++) {View on GitHub (pinned to cf67b549a7)