2015-04-21 58 views
0

創建多維數據集有沒有辦法運行兩個立方體構建並行:在Oracle並行

比如我有以下兩種立方體構建運行順序:

BEGIN 
    DBMS_CUBE.BUILD(
     'OLAPTRAIN."TIME", OLAPTRAIN.CHANNEL, OLAPTRAIN.PRODUCT, OLAPTRAIN.GEOGRAPHY, OLAPTRAIN.SALES_CUBE', 
     'CCCCC', -- refresh method 
     false, -- refresh after errors 
     1, -- parallelism 
     false, -- atomic refresh 
     false, -- automatic order 
     false); -- add dimensions 
    END; 



BEGIN 
    DBMS_CUBE.BUILD(
     ' 
    OLAPTRAIN.FORECAST USING 
    (
     EXECUTE OLAP DML ''do_forecast'' 
    )', 
     'C', -- refresh method 
     false, -- refresh after errors 
     1, -- parallelism 
     false, -- atomic refresh 
     false, -- automatic order 
     false); -- add dimensions 

    END; 

不過,我想這是以平行的方式構建。一個版本分別採用一個CPU。

這可以在分析工作區中實現嗎?如果不是,我怎麼能在PL/SQL代碼中做到這一點?

謝謝。

回答

0

DBMS_Scheduler可能是你正在尋找的東西。

如果這是常規作業的一部分,則創建一個調度程序鏈並行執行這兩個過程。

您可能會調查使用SCHEDULER_JOB參數來運行構建作爲自己的工作,但通常您將不得不編寫自己的監視代碼,以等待兩個作業完成後,調度器鏈將爲您處理。

https://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse009.htm#ADMIN10021

順便說你的代碼將作爲更強大的:

BEGIN 
    DBMS_CUBE.BUILD(
    script    => 'OLAPTRAIN."TIME", OLAPTRAIN.CHANNEL, OLAPTRAIN.PRODUCT, OLAPTRAIN.GEOGRAPHY, OLAPTRAIN.SALES_CUBE', 
    method    => 'CCCCC', 
    refresh_after_errors => false, 
    parallelism   => 1, 
    atomic_refresh  => false, 
    automatic_order  => false, 
    add_dimensions  => false); 
END; 
+0

他們會在不同的CPU上運行是有辦法檢查? – bytebiscuit

+0

它們將作爲完全不同的流程運行。這些進程的名稱形式爲cjqNNN,因此cjq002 ... cjq015等。http://docs.oracle.com/cd/B19306_01/server.102/b14231/schedadmin.htm –