无法并行创建物化视图
Posted
技术标签:
【中文标题】无法并行创建物化视图【英文标题】:Can't parallelize creation of a Materiazed View 【发布时间】:2019-06-14 10:42:55 【问题描述】:我正在尝试创建一个引用具有超过 800 万条记录的远程表的物化视图。 我在 DDL MVIEW 语句中加入了子句“PARALLEL 8”,在 MVIEW QUERY 中加入了提示“/*+ PARALLEL(8) */”。
创建时,没有为进程激活并行从属进程。
怎么了?
感谢您的建议。
这些是目标服务器的 DOP 参数:
NAME TYPE VALUE
------------------------------------ ----------- -----------------------
fast_start_parallel_rollback string LOW
parallel_adaptive_multi_user boolean TRUE
parallel_automatic_tuning boolean FALSE
parallel_degree_level integer 100
parallel_degree_limit string CPU
parallel_degree_policy string MANUAL
parallel_execution_message_size integer 16384
parallel_force_local boolean FALSE
parallel_instance_group string
parallel_io_cap_enabled boolean FALSE
parallel_max_servers integer 80
parallel_min_percent integer 0
parallel_min_servers integer 8
parallel_min_time_threshold string AUTO
parallel_server boolean FALSE
parallel_server_instances integer 1
parallel_servers_target integer 32
parallel_threads_per_cpu integer 2
recovery_parallelism integer 0
我尝试将参数“parallel_degree_policy”从 MANUAL 设置为 AUTO,并更改会话(在启动 MVIEW 创建语句之前):
ALTER SESSION FORCE PARALLEL DML PARALLEL 8;
ALTER SESSION FORCE PARALLEL QUERY PARALLEL 8;
...但结果相同..
这是 MVIEW DDL:
CREATE MATERIALIZED VIEW NEMESI_REPLICA.SCGC_CONSENSI (ID_CODICE_CONSENSO,ID_CLIENTE,OPERATORE,TIMESTAMP_SCGC,TIMESTAMP_CONSENSO,ARCHIVIAZIONE,VALORE_CONSENSO,ID_SISTEMA,ID_SOCIETA,ID_CANALE_ACQUISIZIONE,INTEGRITA,NOTA,ID_IDENTIFICAZIONE_CLIENTE,CANALE_SCGC,STATO_CLIENTE,ID_FRONTEND)
TABLESPACE TBS_NEMESI_REPLICA
PCTUSED 0
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 1M
NEXT 30M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
NOCACHE
NOLOGGING
NOCOMPRESS
PARALLEL 8
BUILD IMMEDIATE
USING INDEX
TABLESPACE TBS_NEMESI_REPLICA
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 1M
NEXT 50M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
REFRESH FAST ON DEMAND
WITH PRIMARY KEY
AS
SELECT
/*+ PARALLEL(8) */
"SCGC_CONSENSI"."ID_CODICE_CONSENSO" "ID_CODICE_CONSENSO",
"SCGC_CONSENSI"."ID_CLIENTE" "ID_CLIENTE",
"SCGC_CONSENSI"."OPERATORE" "OPERATORE",
"SCGC_CONSENSI"."TIMESTAMP_SCGC" "TIMESTAMP_SCGC",
"SCGC_CONSENSI"."TIMESTAMP_CONSENSO" "TIMESTAMP_CONSENSO",
"SCGC_CONSENSI"."ARCHIVIAZIONE" "ARCHIVIAZIONE",
"SCGC_CONSENSI"."VALORE_CONSENSO" "VALORE_CONSENSO",
"SCGC_CONSENSI"."ID_SISTEMA" "ID_SISTEMA",
"SCGC_CONSENSI"."ID_SOCIETA" "ID_SOCIETA",
"SCGC_CONSENSI"."ID_CANALE_ACQUISIZIONE" "ID_CANALE_ACQUISIZIONE",
"SCGC_CONSENSI"."INTEGRITA" "INTEGRITA",
"SCGC_CONSENSI"."NOTA" "NOTA",
"SCGC_CONSENSI"."ID_IDENTIFICAZIONE_CLIENTE"
"ID_IDENTIFICAZIONE_CLIENTE",
"SCGC_CONSENSI"."CANALE_SCGC" "CANALE_SCGC",
"SCGC_CONSENSI"."STATO_CLIENTE" "STATO_CLIENTE",
"SCGC_CONSENSI"."ID_FRONTEND" "ID_FRONTEND"
FROM
"SCGC_ONLINE"."SCGC_CONSENSI"@"NEMESI_LINK" "SCGC_CONSENSI";
【问题讨论】:
【参考方案1】:您将并行放在 mview DDL 和 mview 查询上,也许您遇到了一些错误
并行 DML 不用于 Mview 刷新(文档 ID 2529168.1)
查看 MOS 说明,并做一些解决方案。
另一种方法是改变主表做度数>1,然后你的刷新将是并行的。
"当物化视图的主表的 PARALLEL 属性设置为 > 1 时,则 创建以及刷新过程将被并行化。无论您是否指定 REFRESH 子句中的 PARALLELISM 参数无关紧要。"
如何并行刷新实体化视图(文档 ID 577870.1)
我会首先尝试第二种方法,并更改您的主表的度数以进行测试。如果不能解决您的问题,请查看 MOS 说明
【讨论】:
以上是关于无法并行创建物化视图的主要内容,如果未能解决你的问题,请参考以下文章