oracle - 在 ORACLE 中创建作业
问题描述
我必须定期创建工作。
但首先我创建了一个简单的工作来学习如何在 oracle 中创建工作,因为这是我第一次使用工作。
它以 systimestamp 运行,但作业不执行。
create or replace procedure job_test
is
begin
update table_a set value_user = 'JOB_EXECUTED' where id = 1;
commit;
end;
/
然后调度器作业
begin
dbms_scheduler.create_job(
job_name => 'test_job_A',
job_type => 'stored_procedure',
job_action => 'job_test',
start_date = SYSTIMESTAMP,
enabled => true
);
end;
/
然后我查阅了 value_user 列,它还没有更新。
select * from table_A where id = 1;
谁能解释我错过了什么。
解决方案
create table user_count (
number_of_users NUMBER(4),
time_of_day TIMESTAMP
);
CREATE OR REPLACE PROCEDURE insert_user_count AS
v_user_count NUMBER(4);
BEGIN
SELECT count(*)
INTO v_user_count
FROM v$session
WHERE username IS NOT NULL;
INSERT INTO user_count
VALUES (v_user_count, systimestamp);
commit;
END insert_user_count;
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM (
program_name => 'PROG_INSERT_USER_COUNT',
program_action => 'INSERT_USER_COUNT',
program_type => 'STORED_PROCEDURE');
END;
BEGIN
DBMS_SCHEDULER.CREATE_SCHEDULE (
schedule_name => 'my_weekend_5min_schedule',
start_date => SYSTIMESTAMP,
repeat_interval => 'FREQ=MINUTELY; INTERVAL=5; BYDAY=SAT,SUN',
end_date => SYSTIMESTAMP + INTERVAL '30' day,
comments => 'Every 5 minutes');
END;
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'my_user_count_job',
program_name => 'prog_insert_user_count',
schedule_name => 'my_weekend_5min_schedule');
END;
exec dbms_scheduler.enable('my_user_count_job’)
select * from user_count;
select job_name, status, run_duration, cpu_used
from USER_SCHEDULER_JOB_RUN_DETAILS
where job_name = ‘MY_USER_COUNT_JOB’;
推荐阅读
- python - 有人可以帮我处理 tkinter“命令”中的参数吗
- python - Django Like 机制。数据库性能问题
- java - 使用 Asynctask 从 Web 服务器下载文本文件
- python - 在带有层的 Lambda 中安装 OpenCV
- c - 将 64 位十进制转换为二进制
- wpf - WPF 功能区不像其他控件那样缩放
- node.js - node.js的multer中的mp4文件上传问题
- r - R 调查包中的 svydesign 不接受 imputationList
- forms - 为多个定价选项创建联系 1 表单
- android-studio - Pepper QiSDK API 7 卡在 34% 且无法启动