<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>article tOracleBulkExec and tOracleOutputBulkExec fail with a 'java.io.IOException: Cannot run program &amp;quot;sqlldr&amp;quot;: error=2, No such file or directory' error in Official Support Articles</title>
    <link>https://community.qlik.com/t5/Official-Support-Articles/tOracleBulkExec-and-tOracleOutputBulkExec-fail-with-a-java-io/ta-p/2151757</link>
    <description>&lt;DIV class="talend-tkb-migrated-content"&gt;&lt;DIV class="lia-message-template-content-zone"&gt;
&lt;TABLE style="word-break: keep-all;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1" style="width: 25%;"&gt;&lt;STRONG&gt;Talend Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;6.&lt;EM&gt;x 7.x 8.x&lt;/EM&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;
			&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;
			&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;
			&lt;P&gt;&lt;STRONG&gt;tOracleBulkExec&lt;/STRONG&gt; and &lt;STRONG&gt;tOracleOutputBulkExec&lt;/STRONG&gt; fail with the following error:&lt;/P&gt;

			&lt;PRE&gt;
java.io.IOException: Cannot run program "sqlldr": error=2, No such file or directory&lt;/PRE&gt;
			&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Additional Versions&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Product&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;Talend Data Integration&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Component&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;JobServer,Remote Engine&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Problem Description&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;
			&lt;P&gt;&lt;STRONG&gt;tOracleBulkExec&lt;/STRONG&gt; and &lt;STRONG&gt;tOracleOutputBulkExec&lt;/STRONG&gt; fail with the following error:&lt;/P&gt;

			&lt;PRE&gt;
java.io.IOException: Cannot run program "sqlldr": error=2, No such file or directory&lt;/PRE&gt;
			&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Problem root cause&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;PATH&lt;/STRONG&gt; and &lt;STRONG&gt;ORACLE_HOME&lt;/STRONG&gt; are not defined / not correctly set in the JobServer / Remote Engine process.
			&lt;OL&gt;&lt;LI&gt;To "dump" the environment variables defined in the JobServer /&amp;nbsp;Remote Engine process, create a simple Job using a &lt;STRONG&gt;tJava&lt;/STRONG&gt; component.&lt;/LI&gt;&lt;LI&gt;
				&lt;P&gt;Initialize the &lt;STRONG&gt;tJava&lt;/STRONG&gt; component:&lt;/P&gt;

				&lt;OL&gt;&lt;LI&gt;In &lt;STRONG&gt;Basic&lt;/STRONG&gt; settings, add the following:

					&lt;PRE&gt;
Map&amp;lt;String, String&amp;gt; env = System.getenv();
for (String envName : env.keySet()) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.format("%s=%s%n", envName, env.get(envName));
}&lt;/PRE&gt;
					&lt;/LI&gt;&lt;LI&gt;In &lt;STRONG&gt;Advanced&lt;/STRONG&gt; settings, add the following:
					&lt;PRE&gt;
import java.util.Map;&lt;/PRE&gt;
					&lt;/LI&gt;&lt;/OL&gt;
				&lt;/LI&gt;&lt;LI&gt;Run the Job to dump the environment variables.&lt;/LI&gt;&lt;/OL&gt;

			&lt;P&gt;&lt;STRONG&gt;NOTE &lt;/STRONG&gt;: for the Cloud (Remote Engine) replace the line :&lt;/P&gt;

			&lt;P&gt;&lt;SPAN style="font-family: Courier New,Courier,monospace;"&gt;System.out.format("%s=%s%n", envName, env.get(envName));&lt;/SPAN&gt;&lt;BR /&gt;			by&lt;BR /&gt;			&lt;SPAN style="font-family: Courier New,Courier,monospace;"&gt;context.output += ( envName + " = " + env.get(envName)&amp;nbsp; + "\n");&lt;/SPAN&gt;&lt;BR /&gt;			and display the context.output in the task log using a tJoblog&lt;/P&gt;

			&lt;P&gt;Execute the task in the Cloud with "Execution log level" set to Info&lt;/P&gt;
			&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Solution or Workaround&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;&amp;nbsp;
			&lt;OL&gt;&lt;LI&gt;
				&lt;P&gt;Modify the script launching the JobServer / Remote Engine&amp;nbsp; &lt;STRONG&gt;start_rs.sh&lt;/STRONG&gt; (JobServer/agent).&lt;/P&gt;

				&lt;OL&gt;&lt;LI&gt;
					&lt;P&gt;Define &lt;STRONG&gt;ORACLE_HOME&lt;/STRONG&gt;, for example:&lt;/P&gt;

					&lt;PRE&gt;
ORACLE_HOME=/apps/oracle/product/12.1.0/dbhome_1
export $ORACLE_HOME&lt;/PRE&gt;
					&lt;/LI&gt;&lt;LI&gt;
					&lt;P&gt;Set the &lt;STRONG&gt;PATH&lt;/STRONG&gt; to contain the directory where the &lt;STRONG&gt;sqlldr&lt;/STRONG&gt; is stored:&lt;/P&gt;

					&lt;PRE&gt;
PATH=$ORACLE_HOME/bin:$PATH
export $PATH&lt;/PRE&gt;
					&lt;/LI&gt;&lt;/OL&gt;
				&lt;/LI&gt;&lt;/OL&gt;

			&lt;P&gt;&amp;nbsp;&lt;/P&gt;

			&lt;P&gt;&lt;STRONG&gt;Notes:&lt;/STRONG&gt;&lt;BR /&gt;			I - You can set the variables &lt;STRONG&gt;PATH&lt;/STRONG&gt; and &lt;STRONG&gt;ORACLE_HOME&lt;/STRONG&gt; at the OS level too. For more information, see the &lt;A href="https://docs.oracle.com/database/121/DFSIG/oracle-database-utilities.htm#DFSIG-GUID-691078B4-C58F-4F28-A2E6-8CD250238FCA" target="_blank"&gt;Oracle documentation&lt;/A&gt;.&lt;BR /&gt;			&lt;BR /&gt;			II - If the option "Run as" (user impersonation) is used , you'll need to update the file /etc/sudoers in order to add the lines :&lt;/P&gt;

			&lt;PRE&gt;
Defaults env_keep += "ORACLE_HOME"
Defaults env_keep += "PATH"
&lt;/PRE&gt;

			&lt;P&gt;III - For Remote Engine launched as a service , you'll need to set the variables in the file &amp;lt;Remote Engine Folder&amp;gt;\etc\Talend Remote Engine-wrapper.conf&lt;/P&gt;

			&lt;P&gt;Example :&lt;/P&gt;

			&lt;P&gt;&lt;SPAN style="font-family: Courier New,Courier,monospace;"&gt;set.default.ORACLE_HOME=/data/oracle/product/19.0.0/client_1&lt;BR /&gt;			set.default.PATH=/data/oracle/product/19.0.0/client_1/bin%WRAPPER_PATH_SEPARATOR%%PATH%%WRAPPER_PATH_SEPARATOR%.&lt;/SPAN&gt;&lt;BR /&gt;			&amp;nbsp;&lt;/P&gt;
			&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;JIRA ticket number&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 09 Feb 2024 18:22:49 GMT</pubDate>
    <dc:creator>TalendSolutionExpert</dc:creator>
    <dc:date>2024-02-09T18:22:49Z</dc:date>
    <item>
      <title>tOracleBulkExec and tOracleOutputBulkExec fail with a 'java.io.IOException: Cannot run program "sqlldr": error=2, No such file or directory' error</title>
      <link>https://community.qlik.com/t5/Official-Support-Articles/tOracleBulkExec-and-tOracleOutputBulkExec-fail-with-a-java-io/ta-p/2151757</link>
      <description>&lt;DIV class="talend-tkb-migrated-content"&gt;&lt;DIV class="lia-message-template-content-zone"&gt;
&lt;TABLE style="word-break: keep-all;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1" style="width: 25%;"&gt;&lt;STRONG&gt;Talend Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;6.&lt;EM&gt;x 7.x 8.x&lt;/EM&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;
			&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;
			&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;
			&lt;P&gt;&lt;STRONG&gt;tOracleBulkExec&lt;/STRONG&gt; and &lt;STRONG&gt;tOracleOutputBulkExec&lt;/STRONG&gt; fail with the following error:&lt;/P&gt;

			&lt;PRE&gt;
java.io.IOException: Cannot run program "sqlldr": error=2, No such file or directory&lt;/PRE&gt;
			&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Additional Versions&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Product&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;Talend Data Integration&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Component&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;JobServer,Remote Engine&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Problem Description&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;
			&lt;P&gt;&lt;STRONG&gt;tOracleBulkExec&lt;/STRONG&gt; and &lt;STRONG&gt;tOracleOutputBulkExec&lt;/STRONG&gt; fail with the following error:&lt;/P&gt;

			&lt;PRE&gt;
java.io.IOException: Cannot run program "sqlldr": error=2, No such file or directory&lt;/PRE&gt;
			&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Problem root cause&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;PATH&lt;/STRONG&gt; and &lt;STRONG&gt;ORACLE_HOME&lt;/STRONG&gt; are not defined / not correctly set in the JobServer / Remote Engine process.
			&lt;OL&gt;&lt;LI&gt;To "dump" the environment variables defined in the JobServer /&amp;nbsp;Remote Engine process, create a simple Job using a &lt;STRONG&gt;tJava&lt;/STRONG&gt; component.&lt;/LI&gt;&lt;LI&gt;
				&lt;P&gt;Initialize the &lt;STRONG&gt;tJava&lt;/STRONG&gt; component:&lt;/P&gt;

				&lt;OL&gt;&lt;LI&gt;In &lt;STRONG&gt;Basic&lt;/STRONG&gt; settings, add the following:

					&lt;PRE&gt;
Map&amp;lt;String, String&amp;gt; env = System.getenv();
for (String envName : env.keySet()) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.format("%s=%s%n", envName, env.get(envName));
}&lt;/PRE&gt;
					&lt;/LI&gt;&lt;LI&gt;In &lt;STRONG&gt;Advanced&lt;/STRONG&gt; settings, add the following:
					&lt;PRE&gt;
import java.util.Map;&lt;/PRE&gt;
					&lt;/LI&gt;&lt;/OL&gt;
				&lt;/LI&gt;&lt;LI&gt;Run the Job to dump the environment variables.&lt;/LI&gt;&lt;/OL&gt;

			&lt;P&gt;&lt;STRONG&gt;NOTE &lt;/STRONG&gt;: for the Cloud (Remote Engine) replace the line :&lt;/P&gt;

			&lt;P&gt;&lt;SPAN style="font-family: Courier New,Courier,monospace;"&gt;System.out.format("%s=%s%n", envName, env.get(envName));&lt;/SPAN&gt;&lt;BR /&gt;			by&lt;BR /&gt;			&lt;SPAN style="font-family: Courier New,Courier,monospace;"&gt;context.output += ( envName + " = " + env.get(envName)&amp;nbsp; + "\n");&lt;/SPAN&gt;&lt;BR /&gt;			and display the context.output in the task log using a tJoblog&lt;/P&gt;

			&lt;P&gt;Execute the task in the Cloud with "Execution log level" set to Info&lt;/P&gt;
			&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;Solution or Workaround&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;&amp;nbsp;
			&lt;OL&gt;&lt;LI&gt;
				&lt;P&gt;Modify the script launching the JobServer / Remote Engine&amp;nbsp; &lt;STRONG&gt;start_rs.sh&lt;/STRONG&gt; (JobServer/agent).&lt;/P&gt;

				&lt;OL&gt;&lt;LI&gt;
					&lt;P&gt;Define &lt;STRONG&gt;ORACLE_HOME&lt;/STRONG&gt;, for example:&lt;/P&gt;

					&lt;PRE&gt;
ORACLE_HOME=/apps/oracle/product/12.1.0/dbhome_1
export $ORACLE_HOME&lt;/PRE&gt;
					&lt;/LI&gt;&lt;LI&gt;
					&lt;P&gt;Set the &lt;STRONG&gt;PATH&lt;/STRONG&gt; to contain the directory where the &lt;STRONG&gt;sqlldr&lt;/STRONG&gt; is stored:&lt;/P&gt;

					&lt;PRE&gt;
PATH=$ORACLE_HOME/bin:$PATH
export $PATH&lt;/PRE&gt;
					&lt;/LI&gt;&lt;/OL&gt;
				&lt;/LI&gt;&lt;/OL&gt;

			&lt;P&gt;&amp;nbsp;&lt;/P&gt;

			&lt;P&gt;&lt;STRONG&gt;Notes:&lt;/STRONG&gt;&lt;BR /&gt;			I - You can set the variables &lt;STRONG&gt;PATH&lt;/STRONG&gt; and &lt;STRONG&gt;ORACLE_HOME&lt;/STRONG&gt; at the OS level too. For more information, see the &lt;A href="https://docs.oracle.com/database/121/DFSIG/oracle-database-utilities.htm#DFSIG-GUID-691078B4-C58F-4F28-A2E6-8CD250238FCA" target="_blank"&gt;Oracle documentation&lt;/A&gt;.&lt;BR /&gt;			&lt;BR /&gt;			II - If the option "Run as" (user impersonation) is used , you'll need to update the file /etc/sudoers in order to add the lines :&lt;/P&gt;

			&lt;PRE&gt;
Defaults env_keep += "ORACLE_HOME"
Defaults env_keep += "PATH"
&lt;/PRE&gt;

			&lt;P&gt;III - For Remote Engine launched as a service , you'll need to set the variables in the file &amp;lt;Remote Engine Folder&amp;gt;\etc\Talend Remote Engine-wrapper.conf&lt;/P&gt;

			&lt;P&gt;Example :&lt;/P&gt;

			&lt;P&gt;&lt;SPAN style="font-family: Courier New,Courier,monospace;"&gt;set.default.ORACLE_HOME=/data/oracle/product/19.0.0/client_1&lt;BR /&gt;			set.default.PATH=/data/oracle/product/19.0.0/client_1/bin%WRAPPER_PATH_SEPARATOR%%PATH%%WRAPPER_PATH_SEPARATOR%.&lt;/SPAN&gt;&lt;BR /&gt;			&amp;nbsp;&lt;/P&gt;
			&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD colspan="1" rowspan="1"&gt;&lt;STRONG&gt;JIRA ticket number&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD colspan="1" rowspan="1"&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 09 Feb 2024 18:22:49 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Official-Support-Articles/tOracleBulkExec-and-tOracleOutputBulkExec-fail-with-a-java-io/ta-p/2151757</guid>
      <dc:creator>TalendSolutionExpert</dc:creator>
      <dc:date>2024-02-09T18:22:49Z</dc:date>
    </item>
  </channel>
</rss>

