欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何查看oracle定時(shí) 如何查看oracle定時(shí)任務(wù)

Oracle中如何定時(shí)執(zhí)行一條SQL語句

通過網(wǎng)上查詢,找到一種方案,就是先在oracle里面對要定時(shí)的sql寫成存儲過程,再用DBMS_scheduler對存儲過程進(jìn)行定時(shí)執(zhí)行。

創(chuàng)新互聯(lián)是一家專業(yè)提供靜樂企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為靜樂眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。

在數(shù)據(jù)庫中新建了一個(gè)表MY_JOB_TEST

在數(shù)據(jù)庫中新建了一個(gè)表MY_JOB_TEST

在數(shù)據(jù)庫中新建了一個(gè)表MY_JOB_TEST

在PLSQL中,執(zhí)行下面語句模擬存儲過程的調(diào)用,執(zhí)行后要點(diǎn)提交才有反應(yīng)

[sql] view plain copy

BEGIN

INSERT?INTO?MY_JOB_TEST?(NUM)?VALUES?(1);

END;

然后下面建立一個(gè)存儲過程JOB_TEST

(注意,這里用戶需要CREATE JOB權(quán)限,可以用超級管理員用戶執(zhí)行下面語句給指定用戶賦予該權(quán)限)

[sql] view plain copy

Grant?Create?Job?To?指定用戶名

[sql] view plain copy

SQLCREATE?OR?REPLACE?PROCEDURE

JOB_TEST

BEGIN

INSERT?INTO?MY_JOB_TEST?(NUM)?VALUES?(1);

END;

(此處要執(zhí)行存儲過程不能用exec JB_TEST,這種執(zhí)行方式只能在命令行中使用)

使用DBMS_SCHEDULER進(jìn)行定時(shí),這里為每分鐘執(zhí)行一次

[sql] view plain copy

SQL?BEGIN

DBMS_SCHEDULER.CREATE_JOB?(

job_name???????????=??'SCHEDULER_TEST',

job_type???????????=??'STORED_PROCEDURE',

job_action?????????=??'JOB_TEST',

start_date?????????=??sysdate,

repeat_interval????=??'FREQ=MINUTELY;INTERVAL=1');

END;

但是這樣子定時(shí)任務(wù)并不會執(zhí)行。

我們可以用下面的命令查看一下scheduler的狀態(tài)

[plain] view plain copy

SQLSELECT?*?FROM?USER_SCHEDULER_JOBS;

此時(shí)我們可以看到enable的狀態(tài)是false的,因此我們需要去啟動(dòng)定時(shí)任務(wù)

[plain] view plain copy

SQLBEGIN

DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');

END

dbms_scheduler.enable('j_test'); ?--啟用jobs ??

dbms_scheduler.disable('j_test'); ?--禁用jobs ? ?

dbms_scheduler.run_job('j_test'); ?--執(zhí)行jobs ? ?

dbms_scheduler.stop_job('j_test'); ?--停止jobs ??

dbms_scheduler.drop_job('j_test'); ?--刪除jobs ?

然后再查詢job的enable裝態(tài),發(fā)現(xiàn)為true了。

然后查看MY_JOB_TEST表,發(fā)現(xiàn)每分鐘會往里面添加記錄。

當(dāng)需要修改定時(shí)任務(wù)或者調(diào)度的其他屬性時(shí),可以用下面的

dbms_scheduler.set_attribute('調(diào)度名','調(diào)度屬性','調(diào)度值');

至此,定時(shí)任務(wù)完成。

怎么查看oracle10g數(shù)據(jù)庫的定時(shí)任務(wù)

--當(dāng)前用戶定時(shí)任務(wù)

select?count(*)?from?user_jobs;

--有權(quán)限訪問的定時(shí)任務(wù)

select?count(*)?from?all_jobs;

--整個(gè)數(shù)據(jù)庫所有定時(shí)任務(wù)

select?count(*)?from?dba_jobs;

如何獲得oracle物化視圖 定時(shí)刷新時(shí) 刷新所用的時(shí)間 或者是監(jiān)控 物化視圖在jobs中建立的job任務(wù)的執(zhí)行時(shí)間

你確定你搜了么。。。

以下是物化視圖的建立,注意是refresh mode是 on demand還是on commit

ON DEMAND顧名思義,僅在該物化視圖“需要”被刷新了,才進(jìn)行刷新(REFRESH),即更新物化視圖,以保證和基表數(shù)據(jù)的一致性;而ON COMMIT是說,一旦基表有了COMMIT,即事務(wù)提交,則立刻刷新,立刻更新物化視圖,使得數(shù)據(jù)和基表一致。

創(chuàng)建物化視圖時(shí)未作指定,則Oracle按ON DEMAND模式來創(chuàng)建。

但怎么更新?或者說物化視圖的數(shù)據(jù)怎么隨著基表而更新?Oracle提供了兩種方式,手工刷新和自動(dòng)刷新,像我們這種,在物化視圖定義時(shí),未作任何指定,那當(dāng)然是默認(rèn)的手工刷新了。也就是說,通過我們手工的執(zhí)行某個(gè)Oracle提供的系統(tǒng)級存儲過程或包,來保證物化視圖與基表數(shù)據(jù)一致性。

所謂的自動(dòng)刷新,其實(shí)也就是Oracle會建立一個(gè)job,通過這個(gè)job來調(diào)用相同的存儲過程或包

CREATE MATERIALIZED VIEW mview_name

[TABLESPACE ts_name]

[PARALLEL (DEGREE n)]

[BUILD {IMMEDIATE|DEFERRED}]

[{ REFRESH {FAST|COMPLETE|FORCE}

[{ON COMMIT|ON DEMAND}]

| NEVER REFRESH } ]

[{ENABLE|DISABLE} QUERY REWRITE]

AS SELECT … FROM …

基于你說的情況,有job的定時(shí)刷新,應(yīng)該是on commit的情況,或者是手動(dòng)建立的job

下面給出我的測試:

create materialized view scott.MV_test_index

refresh force on commit

as

select * from scott.test_index;

SQL select count(*) from mv_test_index;

COUNT(*)

----------

50195

SQL delete from test_index where rownum=1;

1 row deleted.

SQL commit;

Commit complete.

SQL select count(*) from mv_test_index;

COUNT(*)

----------

50194

這里我們發(fā)現(xiàn)commit的時(shí)間會有些長,因?yàn)橥瑫r(shí)要刷新物化視圖,我們這里其實(shí)是重新做了刪除物化視圖數(shù)據(jù)和插入新數(shù)據(jù)的操作(因?yàn)樗⑿碌姆椒ㄊ莄omplete,當(dāng)然你可以選擇FAST來做增量刷新,而且fast是首選),然后物化視圖已經(jīng)更新了。

下面是開啟session sql trace的結(jié)構(gòu),你可以看到commit之后oralce所做的操作。

********************************************************************************

commit

call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 1 0.00 0.00 0 0 0 0

Execute 1 0.11 0.23 0 0 1 0

Fetch 0 0.00 0.00 0 0 0 0

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 2 0.11 0.23 0 0 1 0

Misses in library cache during parse: 0

Parsing user id: 54

********************************************************************************

SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE

NO_PARALLEL(SAMPLESUB) opt_param('parallel_execution_enabled', 'false')

NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),:"SYS_B_0"),

NVL(SUM(C2),:"SYS_B_1")

FROM

(SELECT /*+ NO_PARALLEL("MV_TEST_INDEX") FULL("MV_TEST_INDEX")

NO_PARALLEL_INDEX("MV_TEST_INDEX") */ :"SYS_B_2" AS C1, :"SYS_B_3" AS C2

FROM "SCOTT"."MV_TEST_INDEX" SAMPLE BLOCK (:"SYS_B_4" , :"SYS_B_5") SEED

(:"SYS_B_6") "MV_TEST_INDEX") SAMPLESUB

call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 1 0.00 0.00 0 0 0 0

Execute 1 0.00 0.00 0 0 0 0

Fetch 1 0.07 0.19 44 69 0 1

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 3 0.07 0.19 44 69 0 1

Misses in library cache during parse: 1

Misses in library cache during execute: 1

Optimizer mode: ALL_ROWS

Parsing user id: 54 (recursive depth: 2)

Rows Row Source Operation

------- ---------------------------------------------------

1 SORT AGGREGATE (cr=69 pr=44 pw=0 time=196762 us)

10624 MAT_VIEW ACCESS SAMPLE MV_TEST_INDEX (cr=69 pr=44 pw=0 time=1853189 us)

********************************************************************************

delete from "SCOTT"."MV_TEST_INDEX"

call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 1 0.02 0.01 0 3 0 0

Execute 1 7.48 9.46 20 321 154984 50194

Fetch 0 0.00 0.00 0 0 0 0

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 2 7.50 9.48 20 324 154984 50194

Misses in library cache during parse: 1

Optimizer mode: ALL_ROWS

Parsing user id: 54 (recursive depth: 1)

Rows Row Source Operation

------- ---------------------------------------------------

0 DELETE MV_TEST_INDEX (cr=371 pr=20 pw=0 time=9503556 us)

50194 MAT_VIEW ACCESS FULL MV_TEST_INDEX (cr=310 pr=20 pw=0 time=1355940 us)

********************************************************************************

INSERT /*+ */ INTO "SCOTT"."MV_TEST_INDEX"("OBJECT_ID","OBJECT_NAME") SELECT

"TEST_INDEX"."OBJECT_ID","TEST_INDEX"."OBJECT_NAME" FROM

"SCOTT"."TEST_INDEX" "TEST_INDEX"

call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse 1 0.01 0.01 0 0 0 0

Execute 1 5.90 12.87 0 777 103790 50193

Fetch 0 0.00 0.00 0 0 0 0

------- ------ -------- ---------- ---------- ---------- ---------- ----------

total 2 5.91 12.88 0 777 103790 50193

Misses in library cache during parse: 1

Optimizer mode: ALL_ROWS

Parsing user id: 54 (recursive depth: 1)

Rows Row Source Operation

------- ---------------------------------------------------

50193 TABLE ACCESS FULL TEST_INDEX (cr=241 pr=0 pw=0 time=602379 us)

********************************************************************************

BEGIN dbms_session.set_sql_trace(false); END;

接下來看看fast的刷新方法:

CREATE MATERIALIZED VIEW LOG ON scott.test_index; --這里我試過yantinkun的那個(gè)網(wǎng)頁,是不能加with rowid的,會報(bào)錯(cuò):ORA-23415: materialized view log for does not record the primary key

DROP materialized view log on scott.test_index;

create materialized view scott.MV_test_index

refresh fast on commit

as

select * from scott.test_index;

SQL exec dbms_session.set_sql_trace(true);

PL/SQL procedure successfully completed.

SQL delete from test_index where rownum=1;

1 row deleted.

SQL commit;

Commit complete.

SQL exec dbms_session.set_sql_trace(false);

PL/SQL procedure successfully completed.

SQL host

這次的commit快多了,因?yàn)橹皇窃隽康乃⑿拢?/p>

看下log中有這樣一行:

DELETE FROM "SCOTT"."MV_TEST_INDEX" SNAP$

WHERE

"OBJECT_ID" = :1

只是找到了多出來的那個(gè)object的id,然后從物化視圖里刪掉就ok了。

可以查看物化視圖的開始刷新時(shí)間,通過查看視圖

select * from mlog$ where mowner='SCOTT' and MASTER='TEST_INDEX'來查找對應(yīng)建立的物化視圖的log,我這里查出來的是scott.MLOG$_TEST_INDEX

然后執(zhí)行查詢就可以看到詳細(xì)的信息了:

select * from scott.MLOG$_TEST_INDEX

然后是刷新的時(shí)間,當(dāng)刷新選項(xiàng)是commit的時(shí)候你是沒法看的,只能從session的trace里面估計(jì),

on demand話就是你自定義的job 來執(zhí)行exec dbms_mview.refresh('MV_TEST_INDEX)

這個(gè)是可以看的,可以從user_jobs這個(gè)視圖來看,里面有個(gè)total_time來記錄job的執(zhí)行總時(shí)間。

oracle 定時(shí)任務(wù)問題,定時(shí)任務(wù)沒有成功 定時(shí)任務(wù)如下:

1.引言

定制定時(shí)執(zhí)行的任務(wù)有兩種形式,系統(tǒng)級別和數(shù)據(jù)庫級別,

從操作系統(tǒng)級別來講,

windows系統(tǒng)我們可以使用任務(wù)計(jì)劃來實(shí)現(xiàn),

對于winXP系統(tǒng),設(shè)置步驟如下,開始---設(shè)置---控制面板---任務(wù)計(jì)劃,然后添加任務(wù)計(jì)劃,按向?qū)瓿膳渲眉纯?

對于win7系統(tǒng),設(shè)置步驟如下,點(diǎn)擊開始,然后在 搜索程序和文件 框中輸入 [任務(wù)計(jì)劃],然后點(diǎn)擊出來的任務(wù)計(jì)劃程序,創(chuàng)建一個(gè)基本任務(wù)即可;

linux系統(tǒng)我們可以使用crontab命令來是實(shí)現(xiàn),

關(guān)于crontab命令的使用可以見之前的博客();

從數(shù)據(jù)庫級別來講,我們可以采用數(shù)據(jù)庫的job來實(shí)現(xiàn);

本節(jié)主要介紹通過oracle數(shù)據(jù)庫的job來定制一個(gè)簡單的定時(shí)執(zhí)行任務(wù)。本節(jié)會采用oracle定制一個(gè)定時(shí)向一個(gè)表中插入語句。

這里聊一下我做這個(gè)oracle定時(shí)任務(wù)的緣由:

項(xiàng)目中要在固定的時(shí)間,把一個(gè)數(shù)據(jù)庫中某些表的數(shù)據(jù)同步到另外一個(gè)數(shù)據(jù)庫,顯然這些工作我不能每次都自己去做,

那么,我要怎么來做呢?這個(gè)時(shí)候oracle的定時(shí)執(zhí)行任務(wù)JOB無疑是我的最佳選擇。我把同步的腳本放在一個(gè)存儲過程中,

然后在固定的時(shí)間去執(zhí)行這個(gè)存儲過程就OK了。

注意:以下所有的操作都是在sytem用戶下執(zhí)行。采用PL/SQL做的客戶端登陸。

2.項(xiàng)目環(huán)境

安裝oracle10g,然后再安裝PL/SQL,然后用管理員用戶system登陸,

打開SQL Window輸入圖中的SQL語句,操作環(huán)境詳細(xì)的信息如下:

3.環(huán)境準(zhǔn)備

(1)新建一個(gè)表,命令為test,建表語句如下:

test0916

1 create table system.test0916 2 ( 3 seq NUMBER(2) PRIMARY KEY, 4 seqtime DATE 5 )

在SQL窗口執(zhí)行以上語句;

(2)新建一個(gè)存儲過程,命名為test_proc,存儲過程的語句如下:

test_proc

1 CREATE OR REPLACE PROCEDURE test_proc IS 2 BEGIN 3 INSERT INTO SYSTEM.TEST0916(SEQ, SEQTIME) VALUES(NVL((SELECT MAX(SEQ) FROM SYSTEM.TEST0916) + 1, 0), SYSDATE); 4 COMMIT; 5 EXCEPTION 6 WHEN OTHERS THEN 7 DBMS_OUTPUT.PUT_LINE('Exception happened,data was rollback'); 8 ROLLBACK; 9 END;

在SQL Window窗口中執(zhí)行以上存儲過程,執(zhí)行完成以后,查看Objects下的Procedures菜單,可以看到新建的存儲過程如圖:

TEST_PROC前面的圖標(biāo)沒有紅色的標(biāo)記,表示存儲過程正常;

(3)檢查oracle的JOB運(yùn)行環(huán)境

我這里遇到的只是要檢查一下oracle的JOB隊(duì)列的進(jìn)程數(shù),如果為0表示不運(yùn)行JOB,

雖然網(wǎng)上說一般默認(rèn)為10,但是我安裝oracle以后就不知道為什么是0。

查看進(jìn)程數(shù):

修改進(jìn)程數(shù)(如果你的是0,才需要按照以下語句修改):

我這里已經(jīng)改為10,假如我要改為11來模擬以下這個(gè)操作;

在PL/SQL的command窗口中輸入以下語句:

修改進(jìn)程數(shù)

alter system set job_queue_processes=10 scope=both;

運(yùn)行截圖如下:

修改完以后我們這查看一下:

看到了吧,我這是是改為11了吧。

補(bǔ)充說明:

網(wǎng)上有的說修改這個(gè)進(jìn)程數(shù)可以修改oracle初始文件,最開始我是找到這個(gè)初始文件的位置,然后用notepad++打開后去修改,

保存以后我重啟oracle服務(wù)和電腦,但是發(fā)現(xiàn)此時(shí)用PL/SQL登陸oracle的時(shí)候,一直報(bào)無法識別指定的字符串,這里要說明這樣操作不行。

這里有個(gè)問題,我們要如何找到oracle初始文件的位置?可以在PL/SQL的command window窗口中執(zhí)行以下語句看到:

我當(dāng)時(shí)用notepad++修改的是下圖陰影部分的內(nèi)容:

*.job_queue_processes=11

4.定制定時(shí)執(zhí)行任務(wù)

假設(shè)我們要每隔兩分鐘向表test0916中插入一條記錄,這里我們只需要每隔2分鐘執(zhí)行一次存儲過程test_proc即可。

在PL/SQL的command window輸入以下語句:

job

1 var job_num number; 2 begin 3 dbms_job.submit(:job_num,'test_proc;',SYSDATE,'sysdate+2/24/60'); 4 end;

執(zhí)行過程的截圖如下:

執(zhí)行完成以后記得點(diǎn)擊PL/SQL的提交按鈕;

5.查看執(zhí)行結(jié)果

(1)查看我們新增的JOB是否成功

通過查看DBA_JOBS表中的WHAT字段可以看到最后一條記錄即使我們剛新建的定時(shí)任務(wù);

(2)查看test0916表是否插入了數(shù)據(jù)

6.其他相關(guān)說明

(1)如何刪除一個(gè)JOB?

在PL/SQL的command window執(zhí)行以下語句:

exec dbms_job.remove(81);

說明:這里的數(shù)字81是對應(yīng)DBA_JOBS表中當(dāng)前要?jiǎng)h除的JOB記錄所在行的JOB字段的值;

(2)submit的各個(gè)參數(shù)是什么意思?

使用Submit()過程,工作被正常地計(jì)劃好。 這個(gè)過程有五個(gè)參數(shù):job、what、next_date、interval與no_parse。 PROCEDURE Submit ( job OUT binary_ineger, What IN varchar2, next_date IN date, interval IN varchar2, no_parse IN booean:=FALSE)

job參數(shù)是由Submit()過程返回的binary_ineger。這個(gè)值用來唯一標(biāo)識一個(gè)工作。 前面有一個(gè)雙引號,在SQL windwo中沒有顯示,拷貝到command窗口就可以顯示出來了; what參數(shù)是將被執(zhí)行的PL/SQL代碼塊。這里是存儲過程的名稱,后面有一個(gè)英文狀態(tài)下的分號不能掉了; next_date參數(shù)指識何時(shí)將運(yùn)行這個(gè)工作。

interval參數(shù)何時(shí)這個(gè)工作將被重執(zhí)行。 這里加號、括號都必須在英文狀態(tài)下輸入; no_parse參數(shù)指示此工作在提交時(shí)或執(zhí)行時(shí)是否應(yīng)進(jìn)行語法分析——TRUE 指示此PL/SQL代碼在它第一次執(zhí)行時(shí)應(yīng)進(jìn)行語法分析, 而FALSE指示本PL/SQL代碼應(yīng)立即進(jìn)行語法分析。

(3)定時(shí)執(zhí)行的時(shí)間間隔是怎么設(shè)置的?

這里大家可以去百度,網(wǎng)上搜索一般都能找到滿足你需求的,主要是結(jié)果TRUNC函數(shù)來實(shí)現(xiàn)。

如何查看并刪除oracle的所有定時(shí)任務(wù)

主要是管理Jobs物件(Jobs頁簽)

JOB分類有dba_jobs

,

all_jobs

,

user_jobs

,

dba_jobs_running

查詢所有JOB

SELECT

JOB,

NEXT_DATE,

NEXT_SEC,

FAILURES,

BROKEN

FROM

ALL_JOBS;

SELECT

*

FROM

ALL_JOBS;

刪除JOB

(一個(gè)一個(gè)刪,我不記得有沒有一次全刪的命令)

begin

dbms_job.remove(:job);

--:job可以用dba_jobs.job的值代替如:1198

end;

怎么查看oracle定時(shí)文件是否已運(yùn)行?

你提供的信息太少,我估計(jì)你說的是oracle的定時(shí)處理任務(wù)的機(jī)制。查看任務(wù)隊(duì)列,如果要查看當(dāng)前用戶的定時(shí)任務(wù)隊(duì)列,可以通過查詢user_jobs視圖或dba_jobs.

select last_date from user_jobs;可以查看所有任務(wù)上次成功執(zhí)行的時(shí)間。

文章標(biāo)題:如何查看oracle定時(shí) 如何查看oracle定時(shí)任務(wù)
URL網(wǎng)址:http://chinadenli.net/article44/hpjphe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)全網(wǎng)營銷推廣App開發(fā)營銷型網(wǎng)站建設(shè)建站公司服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)