日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了Oracle動態(tài)SQL中的并行提示是否并行運(yùn)行?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我將DML和DDL都作為過程的一部分,并在DML和DDL上啟用了并行。我想使用并行提示在并行模式下運(yùn)行它們,但它們都不能并行執(zhí)行。這是使用動態(tài)SQL的限制嗎?

例如

DECLARE
v_parallel_degree NUMBER := 8;
BEGIN
    EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL DML PARALLEL ' || v_parallel_degree;
    EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL QUERY PARALLEL ' || v_parallel_degree;
    EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL DDL PARALLEL ' || v_parallel_degree;

    EXECUTE IMMEDIATE 'INSERT /*+PARALLEL(DEFAULT)*/ INTO '|| p_target_tabname || ' NOLOGGING
                SELECT /*+PARALLEL(dmf,DEFAULT)*/*
                FROM ' || p_source_tabname ||' PARTITION('|| p_part_name ||');
    
    EXECUTE IMMEDIATE 'CREATE UNIQUE INDEX idx_pk ON TAB_HIST
                 (COL1,COL2,COL3)
                 LOCAL
                 NOLOGGING PARALLEL ' || v_parallel_degree;
END;

我甚至嘗試了下面的塊,但不起作用。

v_sql := 'BEGIN
                EXECUTE IMMEDIATE ''ALTER SESSION FORCE PARALLEL DML PARALLEL ' || v_parallel_degree ||''';
                EXECUTE IMMEDIATE ''ALTER SESSION FORCE PARALLEL QUERY PARALLEL ' || v_parallel_degree ||''';
                INSERT /*+PARALLEL(DEFAULT)*/ INTO '|| p_target_tabname || ' NOLOGGING
                SELECT /*+PARALLEL(dmf,DEFAULT)*/*
                FROM ' || p_source_tabname ||' PARTITION('|| p_part_name ||') dmf;
    DBMS_OUTPUT.PUT_LINE(''Inserted '' || SQL%ROWCOUNT || '' Rows into Table- '' || p_target_tabname || '' Partition - '' || p_part_name );
                COMMIT;
              END;';
    EXECUTE IMMEDIATE v_sql;
Oracle Version -
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
CORE    12.1.0.2.0  Production

很快將升級到19c。

如有任何建議,我們將不勝感激。

TIA
Venkat

推薦答案

TLDR

很可能是您忘記啟用并行DML。

ALTER SESSION ENABLE PARALLEL DML;

另外,如果您強(qiáng)制并行執(zhí)行,則通常不要使用并行提示,反之亦然。

安裝示例(11.2)

create table TAB_HIST (
col1 int,
col2 int,
col3 varchar2(4000))
PARTITION BY RANGE (col1) 
interval(1000000)
(
  partition p_init values less than (1000000) 
); 


create table TAB_SRC (
col1 int,
col2 int,
col3 varchar2(4000)
)
PARTITION BY RANGE (col1) 
interval(1000000)
(
  partition p_init values less than (1000000) 
);

insert into tab_src
select rownum, rownum,  rpad('x',1000,'y') from dual connect by level <= 100000;
commit;

插入

您必須在第一步enable parallel DML

ALTER SESSION ENABLE PARALLEL DML;

請注意,也可以使用提示

INSERT /*+ ENABLE_PARALLEL_DML */ …

此外,如果強(qiáng)制并行DML和查詢,則通常不使用并行提示。我在提示使用在這種情況下經(jīng)常使用的APPEND直接插入。

DECLARE
v_parallel_degree NUMBER := 2;
BEGIN
    EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL DML PARALLEL ' || v_parallel_degree;
    EXECUTE IMMEDIATE 'ALTER SESSION FORCE PARALLEL QUERY PARALLEL ' || v_parallel_degree;

    EXECUTE IMMEDIATE 'INSERT /*+ APPEND */ INTO TAB_HIST  
                SELECT  *
                FROM  TAB_SRC PARTITION(P_INIT)';
END;
/

如何檢查表是否并行插入?
最簡單的方法是查詢表(在進(jìn)行提交之前)–如果您收到下面的錯誤,它將以并行直接插入的方式進(jìn)行。

select count(*) from TAB_HIST;
ORA-12838: cannot read/modify an object after modifying it in parallel

索引

如果在create index語句中指定并行度,則不需要啟用強(qiáng)制任何內(nèi)容。

DECLARE
v_parallel_degree NUMBER := 2;
BEGIN
    
    EXECUTE IMMEDIATE 'CREATE UNIQUE INDEX idx_pk ON TAB_HIST
                 (COL1,COL2,COL3)
                 LOCAL
                 NOLOGGING PARALLEL ' || v_parallel_degree;
END;
/

檢查就像在數(shù)據(jù)字典中查找學(xué)位一樣簡單

select DEGREE from user_indexes where table_name = 'TAB_HIST';

DEGREE 
--------- 
2

請注意,在并行模式下創(chuàng)建索引后,您通常希望將DOP重置為1。否則,一些簡單的嵌套循環(huán)查詢可能會被混淆,并將打開一個并行查詢…

這篇關(guān)于Oracle動態(tài)SQL中的并行提示是否并行運(yùn)行?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標(biāo)簽:dynamic-sql errorDoesParallelHintwithinDynamicSQLofOracleruninparalle
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定