{"record":{"id":"15ff88ff90b89676","repo":"pentaho/pentaho-kettle","slug":"no-connection-specified-orabulkloader","errorCode":null,"errorMessage":"No connection specified","messagePattern":"No connection specified","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/oracle-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/orabulkloader/OraBulkLoader.java","lineNumber":439,"sourceCode":"      String user = Const.NVL( dm.getUsername(), \"\" );\n      String pass =\n        Const.NVL( Encr.decryptPasswordOptionallyEncrypted( environmentSubstitute( dm.getPassword() ) ), \"\" );\n      if ( !password ) {\n        pass = \"******\";\n      }\n      String dns = Const.NVL( dm.getDatabaseName(), \"\" );\n      sb.append( \" userid=\" ).append( environmentSubstitute( user ) ).append( \"/\" ).append(\n        environmentSubstitute( pass ) ).append( \"@\" );\n\n      String overrideName = meta.getDbNameOverride();\n      if ( Utils.isEmpty( Const.rtrim( overrideName ) ) ) {\n        sb.append( environmentSubstitute( dns ) );\n      } else {\n        // if the database name override is filled in, do that one.\n        sb.append( environmentSubstitute( overrideName ) );\n      }\n    } else {\n      throw new KettleException( \"No connection specified\" );\n    }\n\n    if ( meta.isDirectPath() ) {\n      sb.append( \" DIRECT=TRUE\" );\n\n      if ( getStepMeta().getCopies() > 1 || meta.isParallel() ) {\n        sb.append( \" PARALLEL=TRUE\" );\n      }\n    }\n\n    return sb.toString();\n  }\n\n  public void checkExitVal( int exitVal ) throws KettleException {\n    if ( exitVal == EX_SUCC ) {\n      return;\n    }\n","sourceCodeStart":421,"sourceCodeEnd":457,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/oracle-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/orabulkloader/OraBulkLoader.java#L421-L457","documentation":"The sqlldr command line must end with a valid Oracle connect string (user/password@dbname). If meta.getDatabaseMeta() is null — no database connection is selected on the step — createCommandLine cannot append connection info and throws this KettleException.","triggerScenarios":"meta.getDatabaseMeta() == null during createCommandLine called from execute — the step's connection dropdown was never set (or the referenced connection was deleted from the transformation).","commonSituations":"Step copied into a new transformation whose connection list lacks the original connection name; connection deleted after the step was configured; step configured programmatically without setDatabaseMeta; XML merge lost the connection element.","solutions":["Open the step dialog and select a valid Oracle database connection in the Connection field.","Define the connection in the transformation's connections list if it is missing (host, port, SID/service, credentials).","If editing the ktr manually, add/relink the <connection> element and the step's <connection> reference.","Ensure the connection is a DatabaseMeta of an Oracle type compatible with sqlldr."],"exampleFix":"// before: step meta has no connection\n<connection/>\n// after\n<connection>OracleProd</connection>\n<!-- and in transformation: -->\n<connection><name>OracleProd</name><type>ORACLE</type><database>ORCL</database>...</connection>","handlingStrategy":"validation","validationCode":"// Java: confirm the step has a database connection before execution\nif (meta.getDatabaseMeta() == null) {\n  throw new IllegalArgumentException(\n    \"Oracle Bulk Loader step requires a database connection (Connection field).\",\n  );\n}","typeGuard":null,"tryCatchPattern":"try {\n  trans.execute(null);\n} catch (KettleException e) {\n  if (String.valueOf(e.getMessage()).contains(\"No connection specified\")) {\n    // open step dialog and select/define the Oracle connection\n  }\n}","preventionTips":["Select the connection in the step dialog right after adding the step.","When copying steps between transformations, re-link connections first.","Name connections consistently and keep them defined at the transformation or environment level.","Verify saved ktr retains the <connection> reference."],"tags":["kettle","oracle","connection","missing-config"],"backgroundTag":"missing-required-config-field","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}