{"record":{"id":"969bd9f8a7881bcc","repo":"apache/seatunnel","slug":"oracle-table-name-format-must-be-is-database","errorCode":null,"errorMessage":"Oracle table name format must be is: ${database}.${schema}.${table} or ${schema}.${table}, table: ${table}","messagePattern":"Oracle table name format must be is: (.+?)\\.(.+?)\\.(.+?) or (.+?)\\.(.+?), table: (.+?)","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":207,"sourceCode":"    }\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        }\n    }\n}\n","sourceCodeStart":189,"sourceCodeEnd":221,"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#L189-L221","documentation":"Thrown by validateConfig when a table in table-list does not have exactly 2 or 3 dot-separated parts. Oracle CDC expects 'DATABASE.SCHEMA.TABLE' or 'SCHEMA.TABLE'; other shapes cannot be resolved to a schema-qualified table and fail validation.","triggerScenarios":"table-list entries like \"EMPLOYEES\" (1 part), \"HR.EMPLOYEES.EXT\" (4 parts), or names containing extra dots from quoting mistakes.","commonSituations":"Users supply a bare table name, reuse a fully qualified name with a partition/subpartition suffix, or accidentally include whitespace/typo dots in the config.","solutions":["Write the table as SCHEMA.TABLE (HR.EMPLOYEES).","Or as DATABASE.SCHEMA.TABLE (ORCLPDB1.HR.EMPLOYEES) matching database-list.","Remove extra dot-separated segments and stray characters from the entry."],"exampleFix":"// before\ntable-names = [\"EMPLOYEES\"]\n// after\ntable-names = [\"HR.EMPLOYEES\"]","handlingStrategy":"validation","validationCode":"int parts = table.split(\"\\\\.\").length;\nif (parts != 2 && parts != 3) throw new IllegalArgumentException(\"use SCHEMA.TABLE or DB.SCHEMA.TABLE: \" + table);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate table-name shape in config CI before job submission.","Avoid embedding quoted identifiers with internal dots in table-list."],"tags":["oracle-cdc","config-validation","table-name-format"],"backgroundTag":"invalid-identifier-format","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"}