① oracle数据库创建的job不自动执行
oracle数据库如何启动时自动执行定时任务job
job定时任务需要依托存储过程。
1、创建存储过程:create or replace procere MYPROC as
begin
insert into TEST values(sysdate);
end;
2、创建job
variable job1 number;
begin
dbms_job.submit(:job1,'MYPROC;',trunc(sysdate+1),'sysdate+1');--从今晚12开始运行,以后每天运行一次
end;
② 如何用java获取一个oracle表的创建的sql语句
java获取一个oracle表的创建的sql语句:
直接通过jdbc调用:SELECT DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT') FROM DUAL;就可以了。
返回结果如下:
DBMS_METADATA.GET_DDL('TABLE','EMP','SCOTT')
--------------------------------------------------------------------------------
CREATE TABLE "SCOTT"."EMP"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0),
CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE,
CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS"
③ oracle无法创建job
在SQL*Plus中可以处理三种类型的命令:SQL语句、PL/SQL块和SQL*Plus命令。
但三者之间是有区别的。
脚本中的 “:job”是一种绑定变量的方式,属于sql plus的命令格式。需要写成如下格式,然后在plsql developer的命令窗口中执行,或者到sqlplus中执行。
var job number;
begin
sys.dbms_job.submit(job => :job,
what => 'ps_inventory_io;',
next_date => to_date('01-01-4000', 'dd-mm-yyyy'),
interval => 'trunc(sysdate)+1+0/24');
commit;
end;
/
1)SQL语句是以数据库为操作对象的语言,主要包括数据定义语言DDL、数据操纵语言DML和数据控制语言DCL以及数据存储语言DSL。当输入SQL语句后,SQL*Plus将其保存在内部缓冲区中。
当SQL命令输入完毕时,有三种方法可以结束SQL命令:在命令行的末尾输入分号(;)并按回车;在单独一行上用斜杠(/);或用空行表示。
2)PL/SQL块同样是以数据库中的数据为操作对象。但由于SQL不具备过程控制功能,所以,为了能够与其他语言一样具备面向过程的处理功能,在SQL中加入了诸如循环、选择等面向过程的处理功能,由此形成了PL/SQL。所有PL/SQL语句的解释均由PL/SQL引擎来完成。使用PL/SQL块可编写过程、触发器和包等数据库永久对象。
3)SQL*Plus命令主要用来格式化查询结果、设置选择、编辑及存储SQL命令、以设置查询结果的显示格式,并且可以设置环境选项。
④ 我想定时让 oracle 执行一段sql语句 怎么做
如:定时删除三分钟前的数据
###1.创建存储过程
SQL>createorreplaceprocerepro_delete_aas
2begin
3deletefromatwheret.a<(sysdate-3/1440);###一天1440分钟。即一分钟是1/1440
4end;
5/
Procerecreated
###2创建job
SQL>variablejob_pro_delete_anumber;
SQL>begin
2dbms_job.submit(:job_pro_delete_a,'pro_delete_a;',sysdate,'sysdate+3/1440');
3end;
4/
PL/
job_pro_delete_a
---------
127
###3.调用job
SQL>begin
2dbms_job.run(:job_pro_delete_a);
3end;
4/
PL/
job_pro_delete_a
---------
127
###4.删除job
SQL>begin
2dbms_job.remove(:job_pro_delete_a);
3end;
4/
Ps:select*fromuser_jobs;
dbms_job.remove(ID);
⑤ Oracle数据库在PL/SQL Developer下创建作业job出错
what 值中的 存储过程名称需要用分号;结尾。