{"record":{"id":"ad94e8f683d1b55a","repo":"apache/seatunnel","slug":"oracle-database-name-must-be-in-all-uppercase-dat","errorCode":null,"errorMessage":"Oracle database name must be in all uppercase, database: ${database}","messagePattern":"Oracle database name must be in all uppercase, database: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/oracle/config/OracleSourceConfigFactory.java","lineNumber":200,"sourceCode":"                        connectTimeoutMillis,\n                        connectMaxRetries,\n                        connectionPoolSize,\n                        exactlyOnce);\n        // Propagate the enableConcurrentRead flag so the chunk splitter can skip split analysis.\n        config.setEnableConcurrentRead(this.enableConcurrentRead);\n        return config;\n    }\n\n    private void validateConfig() throws IllegalArgumentException {\n        if (databaseList.size() != 1) {\n            throw new IllegalArgumentException(\n                    \"Oracle only supports single database, databaseList: \" + databaseList);\n        }\n        for (String database : databaseList) {\n            for (int i = 0; i < database.length(); i++) {\n                if (Character.isLetter(database.charAt(i))\n                        && !Character.isUpperCase(database.charAt(i))) {\n                    throw new IllegalArgumentException(\n                            \"Oracle database name must be in all uppercase, database: \" + database);\n                }\n            }\n        }\n        for (String table : tableList) {\n            if (table.split(\"\\\\.\").length != 3 && table.split(\"\\\\.\").length != 2) {\n                throw new IllegalArgumentException(\n                        \"Oracle table name format must be is: ${database}.${schema}.${table} or ${schema}.${table}, table: \"\n                                + table);\n            }\n            for (int i = 0; i < table.length(); i++) {\n                if (Character.isLetter(table.charAt(i))\n                        && !Character.isUpperCase(table.charAt(i))) {\n                    throw new IllegalArgumentException(\n                            \"Oracle table name must be in all uppercase, table: \" + table);\n                }\n            }\n        }","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-cdc/connector-cdc-oracle/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/oracle/config/OracleSourceConfigFactory.java#L182-L218","documentation":"Thrown by validateConfig when a database name in database-list contains any lowercase letter. Oracle stores database/PDB names in uppercase, and the connector relies on exact uppercase matching against redo-log metadata, so mixed-case names would silently match nothing.","triggerScenarios":"database-list = [\"orclpdb1\"] or [\"OrclPdb1\"] passed to OracleSourceConfigFactory before create().","commonSituations":"Users write the database name in the case it appears in their connection URL or OS, unaware Oracle identifiers are conventionally uppercase; frequent after copying lowercase service names.","solutions":["Uppercase the database name in database-list, e.g. ORCLPDB1.","Check v$database.name / v$pdbs for the exact uppercase name.","Avoid quoted mixed-case identifiers in the database configuration."],"exampleFix":"// before\ndatabase-list = [\"orclpdb1\"]\n// after\ndatabase-list = [\"ORCLPDB1\"]","handlingStrategy":"validation","validationCode":"if (!database.equals(database.toUpperCase(java.util.Locale.ROOT)))\n    throw new IllegalArgumentException(\"database must be uppercase: \" + database);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Uppercase database names when generating configs programmatically (toUpperCase(Locale.ROOT)).","Confirm names against v$database / v$pdbs."],"tags":["oracle-cdc","config-validation","naming-convention"],"backgroundTag":"invalid-config-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}