[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now


SQLLDr stops at 60 secs when called from websphere

Posted on 2014-01-17
Medium Priority
Last Modified: 2014-01-20
1. our application runs on websphere, on linux.
2. The application calls SQLLDr
3. SQLLdr opens up, processes some records and stops and after some time websphere process is hung (obviously!)
4.  When SQlLdr is opened directly from command prompt and the same .ctl file and .param files are used with the same text data, SQLLdr prefectly loads all the records.

Question is where is the problem. This is a highly critical issue and any help is greatly appreciated!
Question by:raghavanm1978
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 3
  • 2
LVL 35

Expert Comment

by:Gary Patterson
ID: 39790040
This really isn't the place for "highly critical issues".  If it is critical, I suggest you get a paid professional in who knows how to troubleshoot this kind of problem.  We don't have access to your system, and you've provided very little information to help with troubleshooting.

1) How is SQLLDR invoked?  Show the code.
2) What error, if any are you getting?  Provide a stacktrace.  

Finally, look at this:


- Gary Patterson
LVL 23

Expert Comment

ID: 39791020
Here's instructions on checking and changing your websphere default timeout.


Author Comment

ID: 39791464
@dvz why would your solution help?
Survive A High-Traffic Event with Percona

Your application or website rely on your database to deliver information about products and services to your customers. You can’t afford to have your database lose performance, lose availability or become unresponsive – even for just a few minutes.


Author Comment

ID: 39791466
@gary , I am trying out what has been said in the article.. Will let you know if it worked
LVL 23

Expert Comment

ID: 39791546
You've deconstructed the problem down to ensuring that sqlldr works by itself.  That suggests the root cause is something outside of sqlldr.  If websphere is "hanging", one possibility is that it's timing out (set too low?).  The article offers how to check and change the websphere default.  Hope that helps.
LVL 35

Expert Comment

by:Gary Patterson
ID: 39792493
WAS default session timeout is 30 minutes.  This hang is apparently happening after 60 seconds, so it seems unlikely that it is related to the session timeout.

Author Comment

ID: 39793978
I agree it is not the WAS default session time out. And as the code ranch article states, I have the same problem in that if lesser number of records are there, it gets processed. So must be something with the pipe that is being talked about in the article. I shall post the code here soon to get your help

Author Comment

ID: 39794028
Here is the code :

command = "sqlplus -S "+_user+"/"+_password+"@"+_sid+" @"+m_file_name;
            String log_safe_command = "sqlplus -S *****/*****@***** @"+m_file_name;            
            Runtime r = Runtime.getRuntime();
            long startTime = System.currentTimeMillis();
            try {
                Process process = r.exec(command);
                  command = log_safe_command;

                  if (process == null) {
                        Log.error(BatchImportManager.LOGGER,Messages.getString(E_PROCINIT, command));      
                        throw new Exception(Messages.getString(E_PROCINIT, command));
                  else {
                        Log.info(BatchImportManager.LOGGER,Messages.getString(I_WAITINGPROC, command));
                        String elapsed_time = (new Long((System.currentTimeMillis() - startTime)/1000)).toString();
                        Log.info(BatchImportManager.LOGGER,Messages.getString(I_PROCCOMPLETE, new String[] {command, elapsed_time}));
                        StringBuffer strBuffer = new StringBuffer();
                        String line;
                        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                        while ((line = reader.readLine()) != null) {
                        if (process.exitValue() != 0) {
                              Log.error(BatchImportManager.LOGGER,Messages.getString(E_BADEXITCODE, new String[]{(new Integer(process.exitValue())).toString(), command}));
                              throw new Exception(Messages.getString(E_BADEXITCODE, new String[]{(new Integer(process.exitValue())).toString(), command}));
            catch (InterruptedException e) {
                  Log.error(BatchImportManager.LOGGER, Messages.getString(E_WAITING, new String[] {command,e.toString()}));
                  throw new Exception(Messages.getString(E_WAITING, new String[] {command,e.toString()}));
            catch (IOException e) {
                  Log.error(BatchImportManager.LOGGER, Messages.getString(E_EXECUTING, new String[] {command,e.toString()}));
                  throw new Exception(Messages.getString(E_EXECUTING, new String[] {command,e.toString()}));
LVL 35

Accepted Solution

Gary Patterson earned 2000 total points
ID: 39795072
I think the runtime.exec() article referenced at that link above probably covers it all.


Looks like there is a short example here of someone with the same problem as you that found a working solution:


- Gary Patterson

Author Closing Comment

ID: 39795960
The java world article absolutely helped. If you coded according to that then everything works. Basically the problem was that the output from SQLldr was not read, hence the buffer was full, not allowing  SQLLdr to continue

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Verbose logging is used to diagnose garbage collector problems. By default, -verbose:gc output is written to either native_stderr.log or native_stdout.log.   It is also possible to redirect the logs to a user-specified file. This article will de…
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
Suggested Courses

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question