gpt4 book ai didi

java - 如何使用 procedure 来终止从 java 代码调用它的作业?

转载 作者:行者123 更新时间:2023-12-01 11:11:26 24 4
gpt4 key购买 nike

我想通过调用下面的过程并传递作业 ID、 session ID 和 session 序列号参数来终止 Java 应用程序中的一些作业。这是行不通的,我在这里很迷失。

PROCEDURE kill_batch_test ( 
V_JOB IN VARCHAR2,
V_SID IN VARCHAR2,
V_SERIAL IN VARCHAR2  )
IS                
BEGIN           

      DBMS_JOB.REMOVE(V_JOB);

     execute immediate 'Alter System Kill Session '''|| to_char (V_SID)  || ',' || to_char (V_SERIAL) || ''' IMMEDIATE';  


EXCEPTION

   WHEN OTHERS THEN

RETURN;

END; 

[编辑]

Java代码:这让我获得了用户工作:

    String sql1 = "select sid SID, username, serial# SERIAL,j.job JOB, WHAT from (select  dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES, dj.LAST_DATE,dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC, dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT from dba_jobs dj ) j,(select p.spid, s.username, s.sid, s.serial# from v$process p, v$session s where p.addr  = s.paddr AND s.username = 'EPS') s ";

SQLQuery res = (SQLQuery) session.createSQLQuery(sql1).setCacheable(false);
res.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List e = res.list();
Object o;
Iterator it = e.iterator();
for(int i=0;i<e.size();i++){
o = it.next();
Map m = (Map)o;
String sid = null;
String serial = null;
String job = null;
sid = m.get("SID").toString();
serial = m.get("SERIAL").toString();
job = m.get("JOB").toString();

这里我调用这个过程:

    CallableStatement storedProc = hibConnection.prepareCall(sql);
storedProc.setString(1,job);
storedProc.setString(2,sid);
storedProc.setString(3,serial);
storedProc.executeUpdate();
}

最佳答案

首先,正如评论中指出的,EXCEPTION WHEN OTHERS THEN RETURN您的程序部分确实对您没有帮助。要阻止它吞噬异常,只需删除它即可。

要修复随后出现的“权限不足”错误,请以具有适当权限的用户身份连接到数据库并运行 GRANT ALTER SYSTEM TO <user your Java app connects as> 。请小心使用此特权,因为还有很多其他可能的 ALTER SYSTEM您的用户现在有权运行的语句。

最后(您可能已经意识到这一点),考虑从 DBMS_JOB 转移至DBMS_SCHEDULER 。特别是,后者有一种更强大的方法来停止作业,而无需您使用强制方法,其中包括查找用于运行作业的 session 并终止该 session 。

关于java - 如何使用 procedure 来终止从 java 代码调用它的作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32312073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com