plsql创建JOB

本文介绍了如何通过PL/SQL的DBMS Scheduler创建Oracle数据库的JOB。步骤包括设置JOB的名称、启用状态、类型(如存储过程或SQL代码块)、开始和结束日期、执行频率及间隔,并详细说明了执行时间的设定,例如每天23:30执行。创建JOB需要DBA权限。在执行过程中,可能会遇到因JOB队列进程数为0导致的错误。

通过plsql创建JOB,采用DBMS Scheduler创建:

步骤:

1、Jobs右键,选择New,出现以下界面


Name:job名称,自定义

Enabled:勾选

Type:Stored procedure 执行存储过程,PL/SQL block sql代码块

Action:存储过程名称,或者sql代码块,代码块写法如:begin  delete from test ;commit;end; 根据Type进行填写

StartDate:开始日期

End date: 结束日期

Frequency: 频率

Interval:间隔,一般选择1

下面是执行时间设定,我设定每天23:30分执行

By hour :23

By minute :30

Job Class: DEFAULT_JOB_CLASS


设置完成后点击Apply。注:此处需要DBA权限才能创建成功。


2、执行JOB

选中JOB,右键run,就会执行job。

在执行过程中遇到一个错误:



原因是job队列可以启动的进程数为0,

查看命令

SQL> show parameter job_queue_processes

SQL> alter system set job_queue_processes=10;
然后在执行JOB就可以顺利执行。

PL/SQL(Procedural Language/SQL)是结合了结构化查询与Oracle自身过程控制为一体的强大语言,支持更多的数据类型,有自身的变量声明、赋值语句以及条件、循环等流程控制语句,可创建过程、函数和程序包 [^2]。以下为使用PL/SQL编写Job脚本并执行的一般方法: ### 创建存储过程 首先要创建一个存储过程,该存储过程包含Job需要执行的具体逻辑。示例代码如下: ```plsql -- 创建一个存储过程 CREATE OR REPLACE PROCEDURE my_job_procedure IS BEGIN -- 这里编写具体的业务逻辑 DBMS_OUTPUT.PUT_LINE('Job is running.'); END; / ``` 此存储过程`my_job_procedure`仅打印一条信息,实际应用中可根据需求编写具体逻辑。 ### 创建Job 接着使用`DBMS_SCHEDULER.CREATE_JOB`过程来创建Job。示例代码如下: ```plsql -- 创建一个Job BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'my_job', job_type => 'STORED_PROCEDURE', job_action => 'my_job_procedure', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY; BYHOUR=2;', enabled => TRUE, comments => 'This is my job.'); END; / ``` 在上述代码中: - `job_name`:Job的名称,这里为`my_job`。 - `job_type`:Job的类型,这里是`STORED_PROCEDURE`,表示调用存储过程。 - `job_action`:具体要执行的存储过程名称,即`my_job_procedure`。 - `start_date`:Job开始执行的时间,这里使用`SYSTIMESTAMP`表示立即开始。 - `repeat_interval`:Job的重复执行间隔,这里设置为每天凌晨2点执行。 - `enabled`:是否启用该Job,设置为`TRUE`表示启用。 - `comments`:Job的注释信息。 ### 查看Job状态 可以使用以下查询语句查看Job的状态: ```plsql SELECT job_name, state FROM user_scheduler_jobs WHERE job_name = 'my_job'; ``` ### 停止和删除Job 若要停止Job,可以使用`DBMS_SCHEDULER.DISABLE`过程;若要删除Job,可以使用`DBMS_SCHEDULER.DROP_JOB`过程。示例代码如下: ```plsql -- 停止Job BEGIN DBMS_SCHEDULER.DISABLE('my_job'); END; / -- 删除Job BEGIN DBMS_SCHEDULER.DROP_JOB('my_job'); END; / ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值