結合EM快速解決複雜的配置問題

jeanron100發表於2015-03-30
圖形工具在學習中一般是不作為推薦工具使用的,很多時候可能工作環境都是字元介面,遠端連線,基本沒有可能接觸到圖形工具,圖形工具的好處真是一把雙刃劍,功能豐富全面而且極其方面,這是優點也是缺點,如果一旦脫離了圖形工具,可能就會發現自己會的東西越來越少。在工作中,有時候有些同事會問我 一些關於toad,SQLDeveloper的使用細節,很多時候自己都有些陌生,因為確實使用這些圖形工具的機會相對比比較少,但是也不能一味排斥這些工具,一旦有緊急問題的時候,有些圖形工具的功能還是很給力的。
前段時間客戶有個需求,需要在在某個使用者下建立一個物化檢視,透過db link來從源資料中重新整理得到資料,但是重新整理的頻率有一定的要求,他們希望在每天凌晨4點半的時候重新整理這個物化檢視,這個工作看起來還是很簡單的。
作業系統層面可以透過crontab來完成。
如果透過指令碼,可以透過shell執行,然後設定sleep時間,基本能夠滿足要求。
如果從資料庫層面,scheduler job就是一個很不錯的選擇。dbms_scheduler算是dbms_job的升級版,可以靈活地搭配對應的程式(pl/sql)和排程來完成,這個時候程式和排程就像零件一樣,可以在不同的job中靈活組配。
客戶傾向於從資料庫層面來完成。這個時候思路就很清晰,需要建立program,建立scheduler,然後在job中載入program,scheduler
說起來容易做起來難,如果在文件中查詢,也能做出來,但是需要花一些時間來驗證,而且很有可能出錯,這個時候如果透過圖形工具也是一個不錯的選擇。可能這個時候工作環境中沒有圖形介面,透過遠端連線這些都是不可以實現的,
沒有條件我們要創造條件,我們可以在本地安裝一套資料庫軟體,配置EM就可以開工了,但是EM或者Grid control有一個很不錯的選項就是show sql的功能,本地建立沒有意義,但是我們可以把對應的sql語句複製出來,略作修改就是最終的指令碼了。
看看透過EM建立job是多麼的簡單。
建立scheduler的截圖如下:


建立program的截圖如下:



建立job的截圖如下:



來看看show sql生成的語句吧。

建立scheduler的語句。
BEGIN
sys.dbms_scheduler.create_schedule( 
repeat_interval => 'FREQ=DAILY;BYHOUR=4;BYMINUTE=30;BYSECOND=0',
start_date => systimestamp at time zone 'Pacific/Pago_Pago',
schedule_name => '"SYSTEM"."REFRESH_SNAP_BY_DAY"');
END;

建立program的語句
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM(
program_name=>'"SYSTEM"."PROGRAM_REFRESH_SNAP"',
program_action=>'exec dbms_mview.refresh(''XX'',''C'');',
program_type=>'PLSQL_BLOCK',
number_of_arguments=>0,
comments=>'',
enabled=>TRUE);
END;

建立job的語句
BEGIN
sys.dbms_scheduler.create_job( 
job_name => '"SYSTEM"."JOB_REFRESH_SNAP"',
program_name => '"SYSTEM"."PROGRAM_REFRESH_SNAP"',
schedule_name => '"SYSTEM"."REFRESH_SNAP_BY_DAY"',
job_class => '"DEFAULT_JOB_CLASS"',
auto_drop => FALSE,
enabled => TRUE);
END;
所以也不要一味排斥圖形工具,畢竟我們只是為了讓自己工作效率提高,白貓黑貓啊,抓住老鼠就是好貓,合理使用圖形工具還是值得推薦的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1479441/,如需轉載,請註明出處,否則將追究法律責任。

相關文章