【问题标题】:Ho to trigger a job in the database and disconnect, instead of keeping a connection open for a long time?何在数据库中触发作业并断开连接,而不是长时间保持连接打开?
【发布时间】:2016-12-09 11:58:26
【问题描述】:

我有一个负载很重的数据库。当我打开连接并触发作业/查询时,需要很长时间才能完成(超过 15 分钟)。在那之前,我与数据库的连接是打开的,但 10 分钟后会出现超时和其他问题。

有什么方法可以让我从 Java 或其他东西触发 Oracle 中的工作:

  1. 我打开连接。
  2. 我触发了那个“东西”。
  3. 我关闭连接。

因此这 3 个步骤花费的时间更少,大约 1 分钟。

【问题讨论】:

  • 你好,你知道为什么连接慢吗?
  • something 是一个需要数据库连接的数据库操作,还是在某种程度上依赖于数据库连接?如果没有,您可以创建一个新线程将 something 交给新线程

标签: java database oracle jdbc


【解决方案1】:

您可以为此使用DBMS_SCHEDULER package

exec DBMS_SCHEDULER.CREATE_JOB(
 'myjob',
 'PLSQL_BLOCK',
 'BEGIN do_something(); END;'
); 

请注意,您显然不能从作业返回查询结果。如果需要结果集,则需要将其写入文件(例如使用 UTL_FILE)、外部表或常规数据库表。

【讨论】:

  • 不,我不想要任何结果集。我想要的是访问数据库,进行处理。由于该处理需要更多时间,我想要一个选项。 @mustaccio
猜你喜欢
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 2013-09-10
  • 2012-06-17
  • 1970-01-01
  • 2010-12-03
  • 2018-09-21
  • 1970-01-01
相关资源
最近更新 更多