Java PL/SQL过程中的长活动会话

Java PL/SQL过程中的长活动会话,java,oracle,Java,Oracle,我们在Java代码中调用PL/SQL存储过程。有时,程序包需要很长时间才能返回结果。是否可以从PL/SQL调用中出来,用java编写日志 请参阅以下Java代码: long startTime = 0L; long endTime = 0L; startTime = System.currentTimeMillis(); logger.info("Starting Time PKGSM2_TOOLS Alerts Package ------->"+startTime); Cal

我们在Java代码中调用PL/SQL存储过程。有时,程序包需要很长时间才能返回结果。是否可以从PL/SQL调用中出来,用java编写日志

请参阅以下Java代码:

long startTime = 0L;
long endTime = 0L;
startTime = System.currentTimeMillis();
logger.info("Starting Time PKGSM2_TOOLS Alerts Package      ------->"+startTime);
CallableStatement statement= con.getConnection().prepareCall("{call  PKGSM2_CONTROL_CHART.PROC_INDICATORCHART_ECHARANGE(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
statement.executeQuery();
endTime = System.currentTimeMillis();
logger.info("Ending Time PKGSM2_TOOLS Alerts Package ------->"+endTime);
logger.info("Total Package Execution Time Duration of Alerts Package ------->"+(endTime - startTime)+"ms");
在上面的代码中,如果PL/SQL包花费更多的时间,并且请求驻留在包中。如果程序包调用超过2分钟,是否可以退出调用

PL/SQL存储过程中长时间活动会话的原因是什么?

您可以使用Utl文件

,,

您可以使用Utl文件

,,


你的最终目标是什么,要提前关闭DB会话/进程或Java进程或两个进程?通过DB驱动程序取消存储过程进程取决于DB,因此请指定您的DB软件。此外,除非有人了解您的过程详细信息以及系统详细信息,否则回答长活动会话原因并不容易。如果我们没有从PL/SQL获得结果过程,在特定时间(例如:2分钟)后,我必须在记录器中写入在包调用中发生的错误。我必须从java编写一个错误日志。如何计算这里的计时器,它花费了2分钟以上?好的。你能为第一个问题提出一些解决方案吗?如果你只想继续并记录一条消息,你必须在另一个线程中移动DB调用代码,看看你的最终目标是什么,要提前关闭DB会话/进程或Java进程或两个进程?通过DB驱动程序取消存储过程进程取决于DB,因此请指定您的DB软件。此外,除非有人了解您的过程详细信息以及系统详细信息,否则回答长活动会话原因并不容易。如果我们没有从PL/SQL获得结果过程,在特定时间(例如:2分钟)后,我必须在记录器中写入在包调用中发生的错误。我必须从java编写一个错误日志。如何计算这里的计时器,它花费了2分钟以上?好的。请您为第一个问题提供一些解决方案。如果您只想继续并记录一条消息,您必须在另一个线程中移动DB调用代码,请参阅
CREATE OR REPLACE PROCEDURE SHAREFLE IS
  v_MyFileHandle UTL_FILE.FILE_TYPE;
  BEGIN
       v_MyFileHandle := UTL_FILE.FOPEN('C:\','HELLO.TXT','a');
       UTL_FILE.PUT_LINE(v_MyFileHandle, 'Hello Again for the Second Time! ' || TO_CHAR(SYSDATE,'MM-DD-YY HH:MI:SS AM'));
       UTL_FILE.FCLOSE(v_MyFileHandle);
 EXCEPTION
      WHEN OTHERS THEN
           DBMS_OUTPUT.PUT_LINE
                ('ERROR ' || TO_CHAR(SQLCODE) || SQLERRM);
           NULL; 
 END;