① 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 值中的 存儲過程名稱需要用分號;結尾。