问题标签 [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.
oracle - Oracle 存储过程 - 也许 10g 和 11g 之间的区别?
以下存储过程代码适用于我们的 DEV 和 TEST 环境,它们与 Oracle 11G 一起运行,但不适用于我们的 10G PROD 环境:
首先,我在 Oracle 中创建了自己的数据结构来保存任何 VARCHAR2 数组:
这是程序代码:
同样,同样的代码在我们的 DEV 和 TEST 环境中工作在 11G 中,它在我们的 10G 环境中编译,但是在运行时,在第二个 dbms_scheduler 行(粗体)上看起来很糟糕。
dbms_scheduler 是否在 10G 中工作?或者“sys.anydata.convertCollection(v_multiples_columns_to_add)”可能有问题
这是错误消息:
ORA-22370: 在我的过程中源自第 19 行的方法使用不正确。
第 19 行是调用 convertCollection() 的行。
请帮忙!
c++ - 如何在表中的插入事件上调用 exe
在表中的插入事件中,我需要使用 C++ API 在文件中获取一些数据并将该文件发送到客户端。
所以目前我的计划是使用 sql 触发器检查“插入后”事件并从触发器中调用 C++ exe。
我在很多地方发现从触发器调用 exe 是不可取的。但我相信在我的情况下这应该不是一个大问题,因为我的 exe 不会更新任何内容,而是只会获取一些数据并生成一个包含这些数据的管道分隔文件。如果这有任何限制,请告诉我。
问题:
- 从触发器调用 exe 我应该遵循哪些步骤?
- 如果我从触发器调用我的 exe,它是否会导致数据库中出现任何类型的问题,例如数据库挂起?
注意:我想到一个更好的方法是:我们有自己的 C++ API,我可以使用它连接到数据库。所以我可以在 C++ 中放置一个逻辑,它应该有一个守护程序逻辑来每次检查表并生成文件一次插入发生在表中。但这里的问题是,我的客户不希望有一个需要持续监控并增加维护工作的守护进程。他们建议采用一种方法,只有在插入事件发生。
请帮我解决这个问题,我是否应该采用触发方法从那里调用 exe。也请让我知道任何更好的方法。
oracle - DBMS_SCHEDULER.CREATE_JOB 甲骨文
我补充说DBMS_SCHEDULER.CREATE_JOB
。
在DBA_SCHEDULER_JOBS
我得到工作细节但它在SCHEDULED
状态。
它没有运行。当我厌倦了手动运行这项工作时,它会抛出一些错误。
谁能帮我解决这个问题?
oracle - 一个 Oracle 计划作业与另一个实例并行运行。如何防止这种情况?
我有一个存储的 PL/SQL 过程,它每 10 分钟启动一次(预定作业)。有时我的程序执行超过 10 分钟。在这种情况下,Oracle 调度程序与第一个并行运行我的过程的另一个实例。如何防止 Oracle 在第一个过程完成之前启动新过程?
oracle - 创建调度程序作业以每年运行一次
我想创建一个2am on the first Sunday in October
每年都会运行的工作,我尝试使用下面的代码。但是得到了这样的错误,
这是创建作业的代码
提前致谢。
oracle - 从 DBMS_SCHEDULER 运行 exe
我是 DMBS_SCHEDULER 的新手,我面临一些问题。
我想运行一个 .exe
所以我创建了一个作业:
我还创建了凭据:
我将这些凭据应用于我的工作
但是当我尝试运行我的作业时,我收到了这个错误:
我做错了什么?
oracle - 查找当前正在运行的作业的作业 ID/只允许单个作业更新表
我有一个“明星”数据库。一是做一些工作;另外两个的作业将元数据从第一个数据库中提取到他们的参考表中。我想阻止任何人更新、删除或插入两个“从属”中引用表上的任何记录;这些表应该只由计划的作业更新。
我目前正在使用一个触发器来执行此操作,该触发器检查当前 SID 是否在 USER_SCHEDULER_RUNNING_JOBS 中,并且具有我希望运行的作业名称。我想将其更改为使用我正在运行的作业的 JOB_ID。
这是我目前的设置;假设一个非常简单的表:
和以下工作:
我正在使用这个触发器:
这是不雅的;但是,更糟糕的是,我必须为每个数据库中的每个表创建一个单独的触发器,并且每次都更改作业名称。无法动态创建触发器;这变得令人厌烦,并且有很大的错误空间。
SYS_CONTEXT()
有参数FG_JOB_ID
和BG_JOB_ID
。它们的描述,尤其是FG_JOB_ID
暗示它们可能是当前正在运行的作业的 JOB_ID。将触发器更改为以下(我都尝试过):
结果如下
这意味着FG_JOB_ID
和BG_JOB_ID
都是空的。有没有一种方法可以确定当前会话中运行的作业的 ID,所以我不需要每次都使用 JOB_NAME?
oracle - 无法在 DBMS_SCHEDULER 中停止/删除作业
我设法从 DBMS_SCHEDULER 运行作业。但是从昨天开始运行,我无法阻止它。该工作的代码是:
我试图停止工作/放弃它,但没有运气。
当我运行时:
我没有错误,但是
返回 EXE_1,如果我尝试放弃这份工作
我收到此错误:
我已经重新启动了服务器,但我没有运气。有什么想法可以停止/放弃这项工作吗?
oracle11g - DBMS_SCHEDULER 运行 exe
我的 oracle 数据库称为 IRECSDEV,用户 FTREC 我的 PC 名称是 DEVSERVER1,Windows 用户是 WWLSERVER 我正在尝试使用 Oracle Remote Agent 从 DBMS_SCHEDULER 运行 calc.exe。
我已经安装了 Oracle Remote Agent,我将其命名为 schagent,并将 15021 设置为代理的端口 对于数据库端口,我设置了 16021:
我注册数据库:
schagent.conf 是:
所以我创建了凭据
然后我创造了一份工作
test.bat 文件是:
当我尝试启用或运行作业时,EXE3 正在运行,但它失败并显示错误 255 和附加信息:EXTERNAL_LOG_ID="job_145518_24",USERNAME="WWLSERVER"
任何想法我做错了什么?
Oracle 版本:11.2.0.1.0 操作系统 Windows Server 2008
oracle - DBMS_SCHEDULER.DROP_JOB 仅在存在时
我有一个在导入转储后必须运行的 sql 脚本。除了脚本所做的其他事情外,它还执行以下操作:
有时作业已经在原始模式中被删除,转储没有作业并且脚本失败:
如果作业不存在但仍然可以删除它,我该如何避免这种失败?