資料庫 Oracle與MySql定時器使用

2021-07-10 05:53:36 字數 2942 閱讀 3764

一、oracle 建立定時器

對於dba來說,資料庫job再熟悉不過了,因為經常要資料庫定時的自動執行一些指令碼,或做資料庫備份,或做資料的提煉,或做資料庫的效能優化,包括重建索引等等的工作。但是,oracle定時器job時間的處理上,千變萬化,今天我把比較常用寫法彙總如下:

在總結之前,先把job的引數一一說明一下:

job引數是由

submit()

過程返回的

binary_ineger

。這個值用來唯一標識乙個工作;

what

引數是將被執行的

pl/sql

**塊;

next_date

引數指識何時將執行這個工作。寫

job的時候可以不指定該值;

interval

引數何時這個工作將被重執行。

其中interval這個值是決定job何時,被重新執行的關鍵。

例如:有儲存過程 p_dosomethings,需要被不同的時間間隔執行。12

3456

'p_dosomething;

',  

--what

7to_date(

'20090101020000',

'yyyy-mm-dd hh24:mi:ss'),

--next_date,可以不填

8'interval時間字串'--

interval,關鍵設定

9);   

10commit;   

11end; 

12

1、 每分鐘執行

interval => trunc(sysdate,』mi』) + 1 / (24*60)
2、 每天定時執行

例如:每天的凌晨2點執行

interval => trunc(sysdate) + 1 +2 / (24)
3、 每週定時執行

例如:每週一凌晨2點執行

interval => trunc(next_day(sysdate,2))+2/24 --星期一,一周的第二天
4、 每月定時執行

例如:每月1日凌晨2點執行

interval =>trunc(last_day(sysdate))+1+2/24
5、 每季度定時執行

例如每季度的第一天凌晨2點執行

interval => trunc(add_months(sysdate,3),'q') + 2/24
6、 每半年定時執行

例如:每年7月1日和1月1日凌晨2點

interval => add_months(trunc(sysdate,'yyyy'),6)+2/24
7、 每年定時執行

例如:每年1月1日凌晨2點執行

interval =>add_months(trunc(sysdate,'yyyy'),12)+2/24
當然上面羅列不可能照顧到方方面面,但是稍微變化一下,就能衍生出無數的例子,聰明的你一定會的吧,我這裡就不多羅嗦了。

二、mysql 建立定時器

mysql定時器是系統給提供了event,而oracle裡面的定時器是系統給提供的job。廢話少說,下面建立表:

create table mytable (

id int auto_increment not null,

name varchar(100) not null default '',

introduce text not null,

createtime timestamp not null,

constraint pk_mytable primary key(id)

)

建立儲存過程,這裡的儲存過程主要提供給mysql的定時器event來呼叫去執行:

create procedure mypro()

begin

insert into mytable (name,introduce,createtime) values ('1111','inner mongolia',now());

end;

這裡只是簡單的寫了一下,只是為了說明例子。

緊接著建立mysql的定時器event:

create event if not exists eventjob 

on schedule every 1 second

on completion preserve

do call mypro();

這裡設定為每一秒執行一次

至此所有的準備工作已經寫完了,做完這些,mysql要想利用定時器必須的做準備工作,就是把mysql的定時器給開啟了:

set global event_scheduler = 1;  -- 啟動定時器

set global event_scheduler = 0; -- 停止定時器

緊接著還要開啟事件:

alter event eventjob on  completion preserve enable;   -- 開啟事件

alter event eventjob on completion preserve disable; -- 關閉事件

show variables like '%sche%'; -- 檢視定時器狀態

至此,你去資料庫裡面的表mytable裡面看下,系統會每隔一秒去插入一條資料,嘻嘻,任務完成了。

select * from mytable

資料庫 Oracle與Mysql對比

oracle與mysql有什麼直觀的區別呢?區別一 oracle收費,mysql開源 使用者量最多 區別二 資料型別不同,資料型別大致類似,但具體上稍有區別 區別三 分頁方式不同,oracle實現分頁需要多層 3層 select巢狀,mysql使用limit offset,pagesize 區別四 ...

資料庫基本操作Mysql與Oracle

1.oracle 1 啟動 監聽 lsnrctl start 2 進入sqlplus介面 sqlplus nolog sql conn sys jiaxiaoai orcl as sysdba 3 啟動資料庫例項 sql startup 4 檢視當前所有的資料庫 select from v data...

oracle與mysql 資料庫sql 分頁查詢

最近發現在工作中有很多 忘得一乾二淨 所以覺得應該把一些寫好的 記錄下來 其實之前有用有道筆記 但是發現它並沒有搜尋功能 所以還是寫到部落格中來 可以用強大的搜尋引擎來找到 很方便 select from select a.rownum rn from select from cms matchin...