parallel优化案例

背景:某数据仓库系统 一个ETL流程执行了10多个小时才完成!平时都是1小时

问题定位:

查看ETL时间段内所有SQL的运行时间。
select count(1), sql_id
  from dba_hist_active_sess_history
 where to_char(sample_time, 'yyyy-mm-dd hh24:mi:ss') >=
       '2018-08-09 19:49:59'
   and to_char(sample_time, 'yyyy-mm-dd hh24:mi:ss') <=
       '2018-08-10 02:13:50'
 group by sql_id
 order by 1 desc;
SQL_ID为gv0ahj0f3x1bv的SQL占用了4000+个快照,也就是说这个SQL持续了40000秒+


查看历史执行计划,发现是执行计划突变导致的
select distinct plan_hash_value from dba_hist_sql_plan where  sql_id ='gv0ahj0f3x1bv';
2837655065
3754523820

查看SQL文本
select * from dba_hist_sqltext where sql_id ='gv0ahj0f3x1bv';

INSERT INTO ANNE_WORK.SUP_MID_INSTRUMENT
  (AS_OF_DATE,
   ORG_L1,
   ORG_L2,
   ORG_UNIT_ID,
   ORG_UNIT_ID_BIZ,
   LOB_ID,
   PROD_ID,
   GL_ACCT_ID,
   SRC_ID,
   LOB_L1,
   CURRENCY_CD,
   CUST_NO,
   BIZ_ENTITY_ID,
   CHANNEL,
   CUST_MGR,
   INDUSTRY,
   ACCT_TYPE,
   CUST_ACCT_NO,
   MA_ACCT_NO,
   ACCT_STATUS_CD,
   LOAN_RISK_LVL_CD,
   ACCT_BAL,
   DAILY_AVG_BAL,
   EXTNL_INTEREST_INCM,
   EXTNL_INTEREST_EXPNS,
   TRANS_AMT,
   TRANS_CNT,
   INTEREST_RATE,
   ORGIN_DT,
   DUE_DT,
   ORIG_BAL,
   ORG_TERM,
   ACCRU_BASIS,
   RATE_FLG,
   RC_FREQ,
   KEY_RATE,
   REPRICING_SPREAD,
   LST_REPRICE_DT,
   NXT_REPRICE_DT,
   PMT_TYP,
   PMT_FREQ,
   FORE_CLOSURE,
   YQBZ,
   PRE_DRAW_DT,
   TRAN_BASE_RATE,
   TRAN_END_RATE,
   TRAN_METHOD,
   RATE_METHOD,
   USED_TRAN_METHOD,
   USED_RATE_METHOD,
   ADJ1_RT,
   ADJ2_RT,
   ADJ3_RT,
   ADJ4_RT,
   ADJ5_RT,
   PRE_DRAW_INT,
   FTP_INT_AJUST,
   I_BIZ_INCM,
   I_BIZ_EXPNS,
   INVESTMENT_INCM,
   FAIR_VALUE_CHANGED_INCM,
   EXCHANGE_INCM,
   BIZ_TAX_SURCHARGE,
   OTH_OPERATING_INCM,
   OTH_OPERATING_EXPNS,
   ASSET_LOSS_PRVS,
   NON_OPERATING_INCM,
   NON_OPERATING_EXPNS,
   EXPENSES01,
   EXPENSES02,
   EXPENSES03,
   EXPENSES04,
   EXPENSES05,
   EXPENSES06,
   EXPENSES07,
   EXPENSES08,
   EXPENSES09,
   EXPENSES10,
   EXPENSES11,
   EXPENSES12,
   EXPENSES13,
   EXPENSES14,
   EXPENSES15,
   PRE_TAX_PROFIT,
   INCM_TAX,
   NET_PROFIT,
   CREDIT_RISK_CAPITAL,
   OPERATIONAL_RISK_CAPITAL,
   MARKET_RISK_CAPITAL,
   CAPITAL_COST,
   ECONOMIC_VALUE_ADDED,
   PL_ACCT_ID,
   INVESTMENT_ACCT_ID,
   FAIR_VALUE_CHANGED_ACCT_ID,
   OVERDUE_DAYS,
   BAD_DEBT_IND,
   FTP_INCM,
   FTP_EXPNS,
   INCM_TAX_RATE,
   CAPITAL_COST_RATE,
   BIZ_TAX_RATE,
   GROSS_INCOME,
   ACCT_NUM_MODF,
   PROD_ID_CORE,
   LIAB_TYPE,
   INDV_OPER_LOAN_FLG,
   RWA_WEIGHT,
   ELC_TRANS_CNT,
   PERSON_PREC_NUM,
   OUT_BAL,
   OUT_AVG_BAL)
SELECT /*+ parallel(a,16) */
   A.AS_OF_DATE,
   A.ORG_L1,
   A.ORG_L2,
   A.ORG_UNIT_ID,
   A.ORG_UNIT_ID_BIZ,
   A.LOB_ID,
   A.PROD_ID,
   A.GL_ACCT_ID,
   A.SRC_ID,
   A.LOB_L1,
   A.CURRENCY_CD,
   A.CUST_NO,
   A.BIZ_ENTITY_ID,
   A.CHANNEL,
   A.CUST_MGR,
   A.INDUSTRY,
   A.ACCT_TYPE,
   A.CUST_ACCT_NO,
   A.MA_ACCT_NO,
   A.ACCT_STATUS_CD,
   A.LOAN_RISK_LVL_CD,
   A.ACCT_BAL,
   A.DAILY_AVG_BAL,
   A.EXTNL_INTEREST_INCM,
   A.EXTNL_INTEREST_EXPNS,
   A.TRANS_AMT,
   A.TRANS_CNT,
   A.INTEREST_RATE,
   A.ORGIN_DT,
   A.DUE_DT,
   A.ORIG_BAL,
   A.ORG_TERM,
   A.ACCRU_BASIS,
   A.RATE_FLG,
   A.RC_FREQ,
   A.KEY_RATE,
   A.REPRICING_SPREAD,
   A.LST_REPRICE_DT,
   A.NXT_REPRICE_DT,
   A.PMT_TYP,
   A.PMT_FREQ,
   NVL(TRIM(A.FORE_CLOSURE), 3) || CASE
     WHEN D.CUST_ID IS NOT NULL THEN
      'I'
     ELSE
      'C'
   END,
   A.YQBZ,
   A.PRE_DRAW_DT,
   B.TRAN_BASE_RATE,
   B.TRAN_END_RATE,
   B.TRAN_METHOD,
   B.RATE_METHOD,
   B.USED_TRAN_METHOD,
   B.USED_RATE_METHOD,
   B.ADJ1_RT,
   B.ADJ2_RT,
   B.ADJ3_RT,
   B.ADJ4_RT,
   B.ADJ5_RT,
   A.PRE_DRAW_INT,
   A.FTP_INT_AJUST,
   A.I_BIZ_INCM,
   A.I_BIZ_EXPNS,
   A.INVESTMENT_INCM,
   A.FAIR_VALUE_CHANGED_INCM,
   A.EXCHANGE_INCM,
   A.BIZ_TAX_SURCHARGE,
   A.OTH_OPERATING_INCM,
   A.OTH_OPERATING_EXPNS,
   A.ASSET_LOSS_PRVS,
   A.NON_OPERATING_INCM,
   A.NON_OPERATING_EXPNS,
   A.EXPENSES01,
   A.EXPENSES02,
   A.EXPENSES03,
   A.EXPENSES04,
   A.EXPENSES05,
   A.EXPENSES06,
   A.EXPENSES07,
   A.EXPENSES08,
   A.EXPENSES09,
   A.EXPENSES10,
   A.EXPENSES11,
   A.EXPENSES12,
   A.EXPENSES13,
   A.EXPENSES14,
   A.EXPENSES15,
   A.PRE_TAX_PROFIT,
   A.INCM_TAX,
   A.NET_PROFIT,
   A.CREDIT_RISK_CAPITAL,
   A.OPERATIONAL_RISK_CAPITAL,
   A.MARKET_RISK_CAPITAL,
   A.CAPITAL_COST,
   A.ECONOMIC_VALUE_ADDED,
   A.PL_ACCT_ID,
   A.INVESTMENT_ACCT_ID,
   A.FAIR_VALUE_CHANGED_ACCT_ID,
   A.OVERDUE_DAYS,
   A.BAD_DEBT_IND,
   B.FTP_INCM,
   B.FTP_EXPNS,
   A.INCM_TAX_RATE,
   A.CAPITAL_COST_RATE,
   A.BIZ_TAX_RATE,
   NVL(A.EXTNL_INTEREST_INCM, 0) - NVL(A.EXTNL_INTEREST_EXPNS, 0) +
   NVL(B.FTP_INCM, 0) - NVL(B.FTP_EXPNS, 0) + NVL(A.I_BIZ_INCM, 0) -
   NVL(A.I_BIZ_EXPNS, 0) + NVL(A.INVESTMENT_INCM, 0) +
   NVL(A.FAIR_VALUE_CHANGED_INCM, 0) + NVL(A.EXCHANGE_INCM, 0) +
   NVL(A.OTH_OPERATING_INCM, 0) - NVL(A.OTH_OPERATING_EXPNS, 0) +
   NVL(A.NON_OPERATING_INCM, 0) - NVL(A.NON_OPERATING_EXPNS, 0),
   A.ACCT_NUM_MODF,
   A.PROD_ID_CORE,
   A.LIAB_TYPE,
   A.INDV_OPER_LOAN_FLG,
   A.RWA_WEIGHT,
   NVL(E.TRANS_CNT, 0),
   CASE
     WHEN ACCT_TYPE IN ('A', 'L', 'F') AND D.CUST_ID IS NOT NULL THEN
      0.6
     WHEN ACCT_TYPE IN ('A', 'L', 'F') AND D.CUST_ID IS NULL THEN
      1
     ELSE
      0
   END,
   A.OUT_BAL,
   A.OUT_AVG_BAL
    FROM AAAAAAAAA_TABLE A,-- 4kw
         BBB_BBB_BBBB_BBB B,--3kw
         DIM_CCCC_CCCC    D,--2kw
         VW_ELC_TXN_QTY   E --10000
   WHERE A.MA_ACCT_NO = B.MA_ACCT_NO(+)
     AND A.CUST_NO = D.CUST_ID(+)
     AND A.CUST_ACCT_NO || ACCT_NUM_MODF = E.MA_ACCT_NO(+)
     AND A.CURRENCY_CD = E.CURRENCY_CD(+)
     AND D.CUST_TYP_CD(+) IN ('MA_S11_001', 'MA_S11_005')
     AND D.DATA_SRC_CD(+) = 'BCS';

查看SQL的历史执行计划:
select * from table(dbms_xplan.display_awr('gv0ahj0f3x1bv'));
 
Plan hash value: 2837655065
 
-----------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                            | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
-----------------------------------------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT                     |                           |       |       |   518K(100)|          |        |      |            |
|   1 |  LOAD TABLE CONVENTIONAL             |                           |       |       |            |          |        |      |            |
|   2 |   PX COORDINATOR                     |                           |       |       |            |          |        |      |            |
|   3 |    PX SEND QC (RANDOM)               | :TQ10005                  |    45M|    43G|   518K  (1)| 01:43:47 |  Q1,05 | P->S | QC (RAND)  |
|   4 |     HASH JOIN RIGHT OUTER BUFFERED   |                           |    45M|    43G|   518K  (1)| 01:43:47 |  Q1,05 | PCWP |            |
|   5 |      BUFFER SORT                     |                           |       |       |            |          |  Q1,05 | PCWC |            |
|   6 |       PX RECEIVE                     |                           |    25M|   890M|   240K  (1)| 00:48:02 |  Q1,05 | PCWP |            |
|   7 |        PX SEND HASH                  | :TQ10002                  |    25M|   890M|   240K  (1)| 00:48:02 |        | S->P | HASH       |
|   8 |         TABLE ACCESS FULL            | DIM_CCCC_CCCC             |    25M|   890M|   240K  (1)| 00:48:02 |        |      |            |
|   9 |      PX RECEIVE                      |                           |    45M|    42G|   278K  (1)| 00:55:45 |  Q1,05 | PCWP |            |
|  10 |       PX SEND HASH                   | :TQ10004                  |    45M|    42G|   278K  (1)| 00:55:45 |  Q1,04 | P->P | HASH       |
|  11 |        HASH JOIN RIGHT OUTER BUFFERED|                           |    45M|    42G|   278K  (1)| 00:55:45 |  Q1,04 | PCWP |            |
|  12 |         BUFFER SORT                  |                           |       |       |            |          |  Q1,04 | PCWC |            |
|  13 |          PX RECEIVE                  |                           |     1 |   197 | 26237   (1)| 00:05:15 |  Q1,04 | PCWP |            |
|  14 |           PX SEND HASH               | :TQ10001                  |     1 |   197 | 26237   (1)| 00:05:15 |        | S->P | HASH       |
|  15 |            VIEW                      | VW_ELC_TXN_QTY            |     1 |   197 | 26237   (1)| 00:05:15 |        |      |            |
|  16 |             SORT GROUP BY            |                           |     1 |    52 | 26237   (1)| 00:05:15 |        |      |            |
|  17 |              TABLE ACCESS FULL       | SRC_TXN_QTY_STATIS_MSNAPS |     1 |    52 | 26236   (1)| 00:05:15 |        |      |            |
|  18 |         PX RECEIVE                   |                           |    45M|    34G|   252K  (1)| 00:50:30 |  Q1,04 | PCWP |            |
|  19 |          PX SEND HASH                | :TQ10003                  |    45M|    34G|   252K  (1)| 00:50:30 |  Q1,03 | P->P | HASH       |
|  20 |           HASH JOIN RIGHT OUTER      |                           |    45M|    34G|   252K  (1)| 00:50:30 |  Q1,03 | PCWP |            |
|  21 |            BUFFER SORT               |                           |       |       |            |          |  Q1,03 | PCWC |            |
|  22 |             PX RECEIVE               |                           |     1 |   507 |   210K  (1)| 00:42:09 |  Q1,03 | PCWP |            |
|  23 |              PX SEND BROADCAST       | :TQ10000                  |     1 |   507 |   210K  (1)| 00:42:09 |        | S->P | BROADCAST  |
|  24 |               TABLE ACCESS FULL      | BBB_BBB_BBBB_BBB          |     1 |   507 |   210K  (1)| 00:42:09 |        |      |            |
|  25 |            PX BLOCK ITERATOR         |                           |    45M|    12G| 41711   (1)| 00:08:21 |  Q1,03 | PCWC |            |
|  26 |             TABLE ACCESS FULL        | AAAAAAAAAA_TABLE          |    45M|    12G| 41711   (1)| 00:08:21 |  Q1,03 | PCWP |            |
-----------------------------------------------------------------------------------------------------------------------------------------------
 
Note
-----
   - dynamic sampling used for this statement (level=6)
 

Plan hash value: 3754523820
 
--------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                               | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT                        |                           |       |       |   467K(100)|          |        |      |            |
|   1 |  LOAD TABLE CONVENTIONAL                |                           |       |       |            |          |        |      |            |
|   2 |   PX COORDINATOR                        |                           |       |       |            |          |        |      |            |
|   3 |    PX SEND QC (RANDOM)                  | :TQ10006                  |    40M|    25G|   467K  (1)| 01:33:26 |  Q1,06 | P->S | QC (RAND)  |
|   4 |     HASH JOIN RIGHT OUTER BUFFERED      |                           |    40M|    25G|   467K  (1)| 01:33:26 |  Q1,06 | PCWP |            |
|   5 |      BUFFER SORT                        |                           |       |       |            |          |  Q1,06 | PCWC |            |
|   6 |       PX RECEIVE                        |                           |    30M|  4279M|   175K  (1)| 00:35:06 |  Q1,06 | PCWP |            |
|   7 |        PX SEND HASH                     | :TQ10002                  |    30M|  4279M|   175K  (1)| 00:35:06 |        | S->P | HASH       |
|   8 |         TABLE ACCESS FULL               | BBB_BBB_BBBB_BBB          |    30M|  4279M|   175K  (1)| 00:35:06 |        |      |            |
|   9 |      PX RECEIVE                         |                           |    40M|    20G|   291K  (1)| 00:58:21 |  Q1,06 | PCWP |            |
|  10 |       PX SEND HASH                      | :TQ10005                  |    40M|    20G|   291K  (1)| 00:58:21 |  Q1,05 | P->P | HASH       |
|  11 |        HASH JOIN RIGHT OUTER BUFFERED   |                           |    40M|    20G|   291K  (1)| 00:58:21 |  Q1,05 | PCWP |            |
|  12 |         BUFFER SORT                     |                           |       |       |            |          |  Q1,05 | PCWC |            |
|  13 |          PX RECEIVE                     |                           |    22M|   779M|   204K  (1)| 00:40:56 |  Q1,05 | PCWP |            |
|  14 |           PX SEND HASH                  | :TQ10001                  |    22M|   779M|   204K  (1)| 00:40:56 |        | S->P | HASH       |
|  15 |            TABLE ACCESS FULL            | DIM_CCCC_CCCC             |    22M|   779M|   204K  (1)| 00:40:56 |        |      |            |
|  16 |         PX RECEIVE                      |                           |    40M|    18G| 87059   (1)| 00:17:25 |  Q1,05 | PCWP |            |
|  17 |          PX SEND HASH                   | :TQ10004                  |    40M|    18G| 87059   (1)| 00:17:25 |  Q1,04 | P->P | HASH       |
|  18 |           HASH JOIN RIGHT OUTER BUFFERED|                           |    40M|    18G| 87059   (1)| 00:17:25 |  Q1,04 | PCWP |            |
|  19 |            BUFFER SORT                  |                           |       |       |            |          |  Q1,04 | PCWC |            |
|  20 |             PX RECEIVE                  |                           |     1 |   197 | 49718   (1)| 00:09:57 |  Q1,04 | PCWP |            |
|  21 |              PX SEND HASH               | :TQ10000                  |     1 |   197 | 49718   (1)| 00:09:57 |        | S->P | HASH       |
|  22 |               VIEW                      | VW_ELC_TXN_QTY            |     1 |   197 | 49718   (1)| 00:09:57 |        |      |            |
|  23 |                SORT GROUP BY            |                           |     1 |    46 | 49718   (1)| 00:09:57 |        |      |            |
|  24 |                 TABLE ACCESS FULL       | SRC_TXN_QTY_STATIS_MSNAPS |     1 |    46 | 49717   (1)| 00:09:57 |        |      |            |
|  25 |            PX RECEIVE                   |                           |    40M|    11G| 37328   (1)| 00:07:28 |  Q1,04 | PCWP |            |
|  26 |             PX SEND HASH                | :TQ10003                  |    40M|    11G| 37328   (1)| 00:07:28 |  Q1,03 | P->P | HASH       |
|  27 |              PX BLOCK ITERATOR          |                           |    40M|    11G| 37328   (1)| 00:07:28 |  Q1,03 | PCWC |            |
|  28 |               TABLE ACCESS FULL         | AAAAAAAAAA_TABLE          |    40M|    11G| 37328   (1)| 00:07:28 |  Q1,03 | PCWP |            |
--------------------------------------------------------------------------------------------------------------------------------------------------
 
Note
-----
   - dynamic sampling used for this statement (level=6)

SQL当前的执行计划是2837655065

上次我们讲过,针对执行计划突变的问题,我们只需要将SQL绑定我们之前正常的执行计划3754523820即可

快速解决问题入口 ——>  https://blog.csdn.net/Skybig1988/article/details/81324137

继续分析:查看2837655065执行计划。Operation和PQ Distrib里面都出现BROADCAST关键字:

这个关键字是什么意思?

假设1w 行和1亿行关联 不开并行是1w跟1亿 

开并行 1w的表被放到PGA 开10个并行。一个并行先去读完小表,10个并行进程 去读大表,
现在开并行之后
1w  1kw
1w  1kw
1w  1kw
……
1w  1kw
关联10次
小表要广播到10个并行 进程里面去 这个过程就是出现关键字BROADCAST

而如果是两个超大表的关联 
500w
1亿
500w PGA 放不下只能到磁盘里面去 这时候等待事件是direct path readtemp writetemp

同样的我们开10个并行
如果拿500w的数据 去广播,就GG了,500w的数据要传到10个进程里面去
这个时候Oracle使用HASH运算将这两个表拆分成10份,用10个进程分别去读这两个表
50w 1000w
50w 1000w
50w 1000w
……
50w 1000w
关联10次 
这种并行对性能是有提升的(10倍左右),这个并行hash 提升最大的是对temp的提升,因为避免了temp

我们看上面被广播的表BBB_BBB_BBBB_BBB,ORACLE估算rows为1,所以CBO才进行并行广播操作。明显是统计信息出了问题!手动去COUNT一下BBB_BBB_BBBB_BBB表发现里面的表有4kw行……把一个4kw行的表去广播了16次。结果可想而知!!

我们可以通过收集统计信息,让SQL走最合适的执行计划。但是无法彻底避免类似问题再次发生,而且收集统计信息非常耗时!

换个方法,使用/*+ parallel(a,16)  parallel(b,16) parallel(d,16)  use_hash(a,b,d,e) full(a)  full(b) full(d) PQ_DISTRIBUTE(a HASH,HASH)  PQ_DISTRIBUTE(b HASH,HASH)  PQ_DISTRIBUTE(d HASH,HASH) */ 让ORACLE在进行并行操作的时候对大表进行HASH操作而非广播,即可!PQ_DISTRIBUTE(a HASH, HASH)里面的a随便写 是不是驱动表都可以!!

这里帖一下加HINT优化后的执行计划:

Plan hash value: 299881837
 
--------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                         | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |    TQ  |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------------------------------------
|   0 | INSERT STATEMENT                  |                           |     1 |  4646 |     9  (12)| 00:00:01 |        |      |            |
|   1 |  LOAD TABLE CONVENTIONAL          | SUP_MID_INSTRUMENT        |       |       |            |          |        |      |            |
|   2 |   PX COORDINATOR                  |                           |       |       |            |          |        |      |            |
|   3 |    PX SEND QC (RANDOM)            | :TQ10006                  |     1 |  4646 |     9  (12)| 00:00:01 |  Q1,06 | P->S | QC (RAND)  |
|*  4 |     HASH JOIN OUTER               |                           |     1 |  4646 |     9  (12)| 00:00:01 |  Q1,06 | PCWP |            |
|   5 |      PX RECEIVE                   |                           |     1 |  4449 |     6   (0)| 00:00:01 |  Q1,06 | PCWP |            |
|   6 |       PX SEND HASH                | :TQ10005                  |     1 |  4449 |     6   (0)| 00:00:01 |  Q1,05 | P->P | HASH       |
|*  7 |        HASH JOIN OUTER BUFFERED   |                           |     1 |  4449 |     6   (0)| 00:00:01 |  Q1,05 | PCWP |            |
|   8 |         PX RECEIVE                |                           |     1 |  4063 |     4   (0)| 00:00:01 |  Q1,05 | PCWP |            |
|   9 |          PX SEND HASH             | :TQ10003                  |     1 |  4063 |     4   (0)| 00:00:01 |  Q1,03 | P->P | HASH       |
|* 10 |           HASH JOIN OUTER BUFFERED|                           |     1 |  4063 |     4   (0)| 00:00:01 |  Q1,03 | PCWP |            |
|  11 |            PX RECEIVE             |                           |     1 |  3556 |     2   (0)| 00:00:01 |  Q1,03 | PCWP |            |
|  12 |             PX SEND HASH          | :TQ10001                  |     1 |  3556 |     2   (0)| 00:00:01 |  Q1,01 | P->P | HASH       |
|  13 |              PX BLOCK ITERATOR    |                           |     1 |  3556 |     2   (0)| 00:00:01 |  Q1,01 | PCWC |            |
|  14 |               TABLE ACCESS FULL   | AAAAAAAAAA_TABLE          |     1 |  3556 |     2   (0)| 00:00:01 |  Q1,01 | PCWP |            |
|  15 |            PX RECEIVE             |                           |     1 |   507 |     2   (0)| 00:00:01 |  Q1,03 | PCWP |            |
|  16 |             PX SEND HASH          | :TQ10002                  |     1 |   507 |     2   (0)| 00:00:01 |  Q1,02 | P->P | HASH       |
|  17 |              PX BLOCK ITERATOR    |                           |     1 |   507 |     2   (0)| 00:00:01 |  Q1,02 | PCWC |            |
|  18 |               TABLE ACCESS FULL   | BBB_BBB_BBBB_BBB          |     1 |   507 |     2   (0)| 00:00:01 |  Q1,02 | PCWP |            |
|  19 |         PX RECEIVE                |                           |     1 |   386 |     2   (0)| 00:00:01 |  Q1,05 | PCWP |            |
|  20 |          PX SEND HASH             | :TQ10004                  |     1 |   386 |     2   (0)| 00:00:01 |  Q1,04 | P->P | HASH       |
|  21 |           PX BLOCK ITERATOR       |                           |     1 |   386 |     2   (0)| 00:00:01 |  Q1,04 | PCWC |            |
|* 22 |            TABLE ACCESS FULL      | DIM_CCCC_CCCC             |     1 |   386 |     2   (0)| 00:00:01 |  Q1,04 | PCWP |            |
|  23 |      BUFFER SORT                  |                           |       |       |            |          |  Q1,06 | PCWC |            |
|  24 |       PX RECEIVE                  |                           |     1 |   197 |     3  (34)| 00:00:01 |  Q1,06 | PCWP |            |
|  25 |        PX SEND HASH               | :TQ10000                  |     1 |   197 |     3  (34)| 00:00:01 |        | S->P | HASH       |
|  26 |         VIEW                      | VW_ELC_TXN_QTY            |     1 |   197 |     3  (34)| 00:00:01 |        |      |            |
|  27 |          SORT GROUP BY            |                           |     1 |   289 |     3  (34)| 00:00:01 |        |      |            |
|* 28 |           TABLE ACCESS FULL       | SRC_TXN_QTY_STATIS_MSNAPS |     1 |   289 |     2   (0)| 00:00:01 |        |      |            |
--------------------------------------------------------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   4 - access("E"."MA_ACCT_NO"(+)="A"."CUST_ACCT_NO"||"ACCT_NUM_MODF" AND "A"."CURRENCY_CD"="E"."CURRENCY_CD"(+))
   7 - access("A"."CUST_NO"="D"."CUST_ID"(+))
  10 - access("A"."MA_ACCT_NO"="B"."MA_ACCT_NO"(+))
  22 - filter("D"."DATA_SRC_CD"(+)='BCS' AND ("D"."CUST_TYP_CD"(+)='MA_S11_001' OR "D"."CUST_TYP_CD"(+)='MA_S11_005'))
  28 - filter("S"."CHANNEL"='01' OR "S"."CHANNEL"='05')

猜你喜欢

转载自blog.csdn.net/Skybig1988/article/details/81662389
今日推荐