问题标签 [dbms-scheduler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2592 浏览

oracle - DBMS_SCHEDULER.STOP_JOB 在 PL-SQL-Procedure 中不可能,授予授权

我的问题是关于在包中使用 DBMS_SCHEDULER 。我已将 SCHEDULER_ADMIN 权限授予用户。现在,在我通过程序外部的脚本创建作业后,我可以在我的程序中设置这些命令。

到目前为止一切顺利。

现在我的问题是:为什么这些命令不能在我的程序代码中工作?

只要我通过脚本在自己的会话中输入命令而不是嵌入到包代码中,命令就会起作用。问题是我想在我的 PL-SQL 包中输入这些命令,因为在我的包中我知道何时发生错误,所以我想输入这些命令。

你能帮助我吗?非常感谢。

我收到以下错误:

ORA-27486: Nicht ausreichende Berechtigungen ORA-06512: 在 "SYS.DBMS_ISCHED", Zeile 210 ORA-06512: 在 "SYS.DBMS_SCHEDULER", Zeile 557 ORA-06512: 在 "SCHEMANAME.JOB_KILLEN_PCK", Zeile 31 ORA-06512:在泽勒 6

我所做的授权是由 sys_user 提供的:

在第 31 行有以下代码

这是出于安全原因,Oracle 不希望我能够通过启动过程来停止作业。因为这样我就可以停止我知道名字的每一个工作?如果这是正确的,如果在我的过程中的作业期间发生故障,我将无法停止作业

如果你愿意,我可以给你发我的测试包

0 投票
1 回答
696 浏览

oracle - Oracle DBMS_Scheduler 的最佳实践

Oracle DBMS_Scheduler 有什么好处?

  1. 每次都安排(禁用)作业。并在需要时启用并运行它。
  2. 创建作业,运行它并删除它。

我有一个表 x,每当有记录提交到该表时,我应该有一份工作来处理该记录。我们可能会或可能不会一直插入唱片。请记住这一点..有什么更好的...?

0 投票
2 回答
1836 浏览

database - DBMS_SCHEDULER 如何为作业的repeat_interval 提供多个计划?

我有多个计划,我想将所有计划提供给作业的 repeat_interval。但是,我找不到这样做的方法 - Oracle 文档说这是可能的,但我找不到任何示例。任何帮助表示赞赏。这是我尝试过的,但它不起作用:

ORA-06512: 在第 2 行 27418。00000 -“重复间隔或日历中的语法错误”

*原因:重复间隔或日历定义未被识别为有效语法。

0 投票
1 回答
487 浏览

oracle - 将脚本转换为 dbms_scheduler 的 PL/SQL 过程

我对 SQL 很陌生。我正在尝试将我拥有的脚本转换为存储过程,以便我可以运行:

调度器。

这是我的 SQL:

0 投票
1 回答
387 浏览

oracle - 如何实现心跳定时器

我需要实现一个用 PL/SQL 编写的心跳函数,每 5 分钟 ping 一次 Web 服务。我知道 PL/SQL 确实不是编写此代码的正确语言,但必须以这种方式完成。

上面的伪代码确实是我认为可以完成的唯一方法。我知道有一个带有 oracle 的计时器包,但我不确定我是否应该使用它。有任何想法吗?

0 投票
1 回答
270 浏览

oracle - dbms_scheduler 重复间隔最大值

在文档(11g,12c)中,我们读到:

这指定了一个正整数,表示重复的频率。默认值为 1,表示每秒为秒,每天为每天,依此类推。最大值为 99。

在文档(10g)中,我们读到:

...相同...最大值为 999。

但在 Oracle 10g 和 12c 中,SECONDLY 频率的实际最大值为 7999。哪里是真的?我找不到一些勘误表文档。

0 投票
0 回答
2951 浏览

oracle - 如何使用以前的作业名称在 Oracle 链中运行失败的步骤?

我有一份经营连锁店的工作。该链由 5 个步骤组成。运行第一步,如果成功,将运行其他三个步骤(独立,并行)。只有当所有三个步骤都成功时,最后一步才会开始。一切正常。

我想测试一个有错误的案例。我故意在上述三个步骤之一中提供了一个错误。结果,我的第一步成功了,所以运行了三个步骤。正如我所料,其中只有两个成功了,第三个失败了。所有步骤都适用于一些自动生成的 job_name(我通过查询 user_scheduler_job_run_details 检查了 job_name)。我删除了故意错误并使用以下方法仅运行失败的步骤:

当然,我之前失败的步骤成功了(因为删除了一个错误)。但是这一步是使用另一个自动生成的 job_name 运行的,不幸的是最后一步(在所有提到的三个步骤都成功后运行)没有运行。我想用特定的(以前的)job_name 运行失败的步骤,因此最后一步应该自动运行。

如何使用以前的特定作业名称在 Oracle 链中运行失败的步骤?

0 投票
3 回答
19060 浏览

oracle - 并行运行/执行多个过程 - Oracle PL/SQL

我有一个 Activity 表,它正在获取系统的所有表事件。所有系统表上的新订单、插入/删除等事件都将插入到该表中。因此,对于 Activity 表来说,每秒事件数确实很大。

现在,我想根据负责引发事件的表来处理基于业务逻辑的传入事件。每个表可能有不同的过程来进行处理。

我在 PL/SQL 中使用了相同的链接 并行化调用

作为解决方案,我创建了多个dbms_scheduler将同时调用的作业。所有这些作业 ( JOB1, JOB2--- - -JOB10) 将具有与实现并行处理 相同的过程 ( ProcForAll_Processing) 。JOB_ACTION

ProcForAll_Processing: 这个过程依次会依次调用其他 6 个过程 Proc1,proc2,proc3 --- -- - -- - Proc6。我也想为这些实现并行处理。

PS:我们不能创建更多的作业来实现ProcForAll_Processingproc 中的并行处理,因为它可能会导致消耗更多的资源,而且 DBA 也不同意创建更多的作业。另外,我不能 dbms_parallel_execute用于并行处理。

请帮助我,因为我真的很难完成它

0 投票
2 回答
1139 浏览

java - 如何从 java 调用 oracle dbms_scheduler.run_job?

我在我的 oracle 数据库中有一份工作,出于某种原因,我需要在我的 java 应用程序中调用它。
有人有想法告诉我怎么做吗?
我已经尝试过: 由CallableStatement
执行 DBMS_SCHEDULER.RUN_JOB('My_job_name')
DBMS_SCHEDULER.RUN_JOB('My_job_name')
{DBMS_SCHEDULER.RUN_JOB('My_job_name')}
{execute DBMS_SCHEDULER.RUN_JOB('My_job_name')}
但它们都没有工作。 任何帮助,将不胜感激

0 投票
0 回答
39 浏览

sql - DBMS_shceduler 作业在创建时执行选择语句

我正在尝试在 oracle sql 中建立一个拍卖行进行练习。我想为每个项目制作 DBMS 作业,因为当 sysdate 等于拍卖结束时,它会触发并出售该项目。

我有这个程序“出售”,可以出售新物品。最后我有这个:(ident 是项目的 id)Itt 调用一个函数,将钱存入正确的帐户。

问题是它似乎执行了“pay_the_seller”过程。在创建作业时不是在 start_date。

例如,如果该项目的起始出价为 1,则当作业触发时,即使我同时更改了出价,它也会在帐户中添加 1。

编辑:在“pay_the_seller()”过程中,SELECT 语句在创建作业时执行,但 UPDATE 不是。

如何使 SELECT 不立即执行?