oracle并行创建多维数据集

时间:2015-04-21 08:46:33

标签: oracle olap-cube

有没有办法并行运行两个多维数据集构建:

例如,我有以下两个顺序运行的多维数据集构建:

 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。

可以在Analytic Workspace中实现吗?如果不是,我怎么能在PL / SQL代码中这样做?

感谢。

1 个答案:

答案 0 :(得分: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;