问题描述
我已经使用dbms_scheduler创建了一个作业。以下是我创建计划,程序和作业的代码:
下面是我的 “更新表” 过程:
在此过程中,我将从远程数据库 “psft_gal_data @ mssql_dblink” 中的另一个表插入表 “psft_gal_data” 中的新记录,其中mssql_dblink是我们已设置的异构数据库链接。当远程数据库更新新记录时,将使用此过程在我的表中复制其他记录。
如果我运行此过程,它会完成在我的表中插入新记录的所需任务。
当我运行此作业时,作业会更新,并且新记录仅在第一次添加到我们的表中。
按照计划2分钟后,该作业已成功运行,但未在我的表中添加新记录。检查了远程数据库,并观察到其中存在新记录。
作业每2分钟运行一次,但不添加新记录。
验证作业是否运行成功:
LOG_ID LOG_DATE所有者作业 _name作业 _subname状态错误 # REQ_START_DATE ACTUAL_START_DATE RUN_DURATION INSTANCE_ID SESSION_ID SLAVE_PID cpu_二手凭据 _ 所有者凭据 _ 名称目的地 _ 所有者目的地附加 _ 信息错误输出二进制 _ 错误二进制 _ 输出
21550 01-3月17日上午11.29.30.497000000 05:30 WANOC1测试工作1成功0 01-3月17日上午11.29.30.103000000亚洲/加尔各答01-3月17日上午11.29.30.180000000亚洲/加尔各答0 0:0.0 1 138,38398 14360 0 0:0.0
21554 01-3月17日上午11.31.34.283000000 05:30 WANOC1测试工作1成功0 01-3月17日上午11.31.30.103000000亚洲/加尔各答01-3月17日上午11.31.34.087000000亚洲/加尔各答0 0:0.0 1 138,36115 18952 0 0:0.02
21556 01-MAR-17 11.33.30.308000000 AM 05:30 WANOC1测试工作1成功0 01-MAR-17 11.33.30.000000000 AM亚洲/加尔各答01-MAR-17 11.33.30.082000000 AM亚洲/加尔各答0 0:0.0 1 138,41199 15692 0:0.02
21560 01-MAR-17 11.35.30.420000000 AM 05:30 WANOC1测试工作1成功0 01-MAR-17 11.35.30.000000000 AM亚洲/加尔各答01-MAR-17 11.35.30.081000000 AM亚洲/加尔各答0 0:0.0 1 138,40382 28076 0:0.02
请检查并建议为什么即使作业成功执行,也没有使用新记录更新表。
谢谢你。
begin dbms_scheduler.create_schedule ( Schedule_Name => 'test_schedule1', Repeat_interval => 'FREQ=MINUTELY; INTERVAL=2', Comments => 'This is test schedule which will run every 2 minutes' ); end; begin dbms_scheduler.create_program (program_name => 'test_program1', Program_type => 'STORED_PROCEDURE', Program_action => 'update_table', Enabled => TRUE, Comments => 'This creates a program.'); end; begin dbms_scheduler.create_job (Job_name => 'test_job1', Program_name => 'test_program1', Schedule_name => 'test_schedule1', Enabled => TRUE, Comments => 'This test job'); end;复制
下面是我的 “更新表” 过程:
create or replace procedure update_table is begin insert into psft_gal_data(emplid, first_name, last_name, created_dt, flag, updated_dt, update_flag) SELECT emplid, first_name, last_name, created_dt, flag, updated_dt, update_flag FROM psft_gal_data@mssql_dblink WHERE updated_dt NOT IN (SELECT updated_dt FROM psft_gal_data); end;复制
在此过程中,我将从远程数据库 “psft_gal_data @ mssql_dblink” 中的另一个表插入表 “psft_gal_data” 中的新记录,其中mssql_dblink是我们已设置的异构数据库链接。当远程数据库更新新记录时,将使用此过程在我的表中复制其他记录。
如果我运行此过程,它会完成在我的表中插入新记录的所需任务。
当我运行此作业时,作业会更新,并且新记录仅在第一次添加到我们的表中。
按照计划2分钟后,该作业已成功运行,但未在我的表中添加新记录。检查了远程数据库,并观察到其中存在新记录。
作业每2分钟运行一次,但不添加新记录。
验证作业是否运行成功:
select * from ALL_SCHEDULER_JOB_RUN_DETAILS where job_name='TEST_JOB1';复制
LOG_ID LOG_DATE所有者作业 _name作业 _subname状态错误 # REQ_START_DATE ACTUAL_START_DATE RUN_DURATION INSTANCE_ID SESSION_ID SLAVE_PID cpu_二手凭据 _ 所有者凭据 _ 名称目的地 _ 所有者目的地附加 _ 信息错误输出二进制 _ 错误二进制 _ 输出
21550 01-3月17日上午11.29.30.497000000 05:30 WANOC1测试工作1成功0 01-3月17日上午11.29.30.103000000亚洲/加尔各答01-3月17日上午11.29.30.180000000亚洲/加尔各答0 0:0.0 1 138,38398 14360 0 0:0.0
21554 01-3月17日上午11.31.34.283000000 05:30 WANOC1测试工作1成功0 01-3月17日上午11.31.30.103000000亚洲/加尔各答01-3月17日上午11.31.34.087000000亚洲/加尔各答0 0:0.0 1 138,36115 18952 0 0:0.02
21556 01-MAR-17 11.33.30.308000000 AM 05:30 WANOC1测试工作1成功0 01-MAR-17 11.33.30.000000000 AM亚洲/加尔各答01-MAR-17 11.33.30.082000000 AM亚洲/加尔各答0 0:0.0 1 138,41199 15692 0:0.02
21560 01-MAR-17 11.35.30.420000000 AM 05:30 WANOC1测试工作1成功0 01-MAR-17 11.35.30.000000000 AM亚洲/加尔各答01-MAR-17 11.35.30.081000000 AM亚洲/加尔各答0 0:0.0 1 138,40382 28076 0:0.02
请检查并建议为什么即使作业成功执行,也没有使用新记录更新表。
谢谢你。
专家解答
您的查询有一个不在,这打开了几个可能性:
-任何行的update_dt是否为NULL?
如果是这样,你不会得到任何结果:
https://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684
-如果没有,您确定您还没有在表中获得updated_dt的值吗?即您存储的日期时间包括小时,分钟和秒。不是午夜 (00:00:00)?
SELECT emplid, first_name, last_name, created_dt, flag, updated_dt, update_flag FROM psft_gal_data@mssql_dblink WHERE updated_dt NOT IN (SELECT updated_dt FROM psft_gal_data)复制
-任何行的update_dt是否为NULL?
如果是这样,你不会得到任何结果:
https://asktom.oracle.com/pls/apex/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684
-如果没有,您确定您还没有在表中获得updated_dt的值吗?即您存储的日期时间包括小时,分钟和秒。不是午夜 (00:00:00)?
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
596次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
567次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
485次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
473次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
457次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
432次阅读
2025-04-22 00:13:51
Oracle 19c RAC更换IP实战,运维必看!
szrsu
432次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
417次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
362次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
358次阅读
2025-04-15 14:48:05