oracle创建job的案例
时间: 2023-11-24 19:05:16 浏览: 31
下面是一个创建Oracle JOB的例子,该JOB每天早上6点运行一个PL/SQL过程,向一个目标表插入一些数据:
1. 首先,创建一个目标表,用于存储数据:
```sql
CREATE TABLE my_table (
id NUMBER,
name VARCHAR2(50)
);
```
2. 创建一个PL/SQL过程,用于向目标表插入数据:
```sql
CREATE OR REPLACE PROCEDURE insert_data IS
BEGIN
INSERT INTO my_table (id, name) VALUES (1, 'John');
INSERT INTO my_table (id, name) VALUES (2, 'Jane');
INSERT INTO my_table (id, name) VALUES (3, 'Bob');
END;
```
3. 创建一个JOB,使用DBMS_SCHEDULER包中的CREATE_JOB过程。在CREATE_JOB过程中,指定JOB的名称,JOB的类型、PL/SQL过程的名称和调度计划。例如:
```sql
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'insert_data_job',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN insert_data; END;',
start_date => TRUNC(SYSDATE) + 6/24, --每天早上6点开始运行
repeat_interval => 'FREQ=DAILY;BYHOUR=6;BYMINUTE=0;BYSECOND=0;',
end_date => NULL,
enabled => TRUE,
comments => 'Job to insert some data into my_table every day at 6:00 AM'
);
END;
```
在这个例子中,JOB的名称是insert_data_job,JOB的类型是PL/SQL_BLOCK,PL/SQL过程的名称是insert_data,调度计划是每天早上6点运行。请注意,start_date被设置为今天的6点钟,因为我们想在今天6点钟运行该JOB。repeat_interval指定了这个JOB每天运行一次,并且在6点整开始运行。如果需要修改调度计划或禁用JOB,可以使用DBMS_SCHEDULER包中的相关过程来实现。
4. 检查JOB是否已成功创建。可以使用以下查询来检查JOB的状态:
```sql
SELECT job_name, enabled, state
FROM user_scheduler_jobs;
```
如果JOB已成功创建,它的状态应该是SCHEDULED。
这样就可以定时向Oracle目标表插入数据了。