您的位置:首页 > 其它

优化db file parallel read

2015-02-10 18:36 239 查看
SELECT TO_CHAR(A.DATA_DT, 'YYYY-MM-DD') AS DATA_DT,
A.MAGR_NO,
A.MAGR_NAME,
A.ORG_ID,
A.ORG_NAME,
sum(A.ACCT_BAL / 10000) as acct_bal,
sum(A.ACCT_AVG) as ACCT_AVG,
sum(A.SUM_BAL) as SUM_BAL,
sum(A.ASSETS_PROP) as ASSETS_PROP,
A.SEG_TYPE,
A.SEG_ID,
D.pty_type,
c.SEC_ORG_NAME ,
1 flag
FROM M_ASSETS_MAGR_PROP A
LEFT JOIN (SELECT ORG_ID,
PARENT_ORG_ID,
PTY_ID,
DATA_DT,
PTY_NAME,
PTY_SEX,
DEPT_NAME,
EMP_POSITION,
PTY_TYPE
FROM (SELECT ORG_ID,
PARENT_ORG_ID,
PTY_ID,
DATA_DT,
PTY_NAME,
PTY_SEX,
DEPT_NAME,
EMP_POSITION,
PTY_TYPE,
ROW_NUMBER() OVER(PARTITION BY PTY_ID ORDER BY DATA_DT DESC) ROW_NO
FROM DWM.M_MANAGE_LIST)
WHERE ROW_NO = 1
AND PTY_TYPE = 'רְ') D
ON A.MAGR_NO = D.PTY_ID
left join V_M_ORG_LEVEL c
on a.org_id = c.ORG_ID
where a.data_dt in
(select t.tx_date
from dw_sys_date t
where substr(to_char(t.tx_date, 'yyyy-mm-dd'), 1, 4) = '2014'
and t.is_mon_end = 'Y')
AND D.PTY_ID IS NOT NULL
and A.ORG_ID in (SELECT /*+ no_unnest */  t.Org_Id
FROM b_m_Sys_Branch t
WHERE t.Status = 1
AND t.Dept_Flag != '2'
CONNECT BY PRIOR t.Id = t.Parent_Id
START WITH t.Org_Id = '10000')
group by TO_CHAR(A.DATA_DT, 'YYYY-MM-DD'),
A.MAGR_NO,
A.MAGR_NAME,
A.ORG_ID,
A.ORG_NAME,
A.SEG_TYPE,
A.SEG_ID,
D.pty_type,
c.SEC_ORG_NAME;

Plan hash value: 1885001837

--------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation					| Name			| Starts | E-Rows | A-Rows |   A-Time	| Buffers |  OMem |  1Mem | Used-Mem |
--------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT				|			|      1 |	  |   2384 |00:00:44.71 |    1495K|	  |	  |	     |
|   1 |  HASH GROUP BY					|			|      1 |     52 |   2384 |00:00:44.71 |    1495K|    38M|  4144K| 1362K (0)|
|*  2 |   HASH JOIN RIGHT OUTER 			|			|      1 |    201 |    175K|00:00:44.38 |    1495K|  1393K|  1393K| 1255K (0)|
|   3 |    VIEW 					| V_M_ORG_LEVEL 	|      1 |     78 |    122 |00:00:00.01 |      24 |	  |	  |	     |
|*  4 |     HASH JOIN OUTER				|			|      1 |     78 |    122 |00:00:00.01 |      24 |  1055K|  1055K|  520K (0)|
|*  5 |      HASH JOIN OUTER				|			|      1 |     78 |    122 |00:00:00.01 |      18 |  1301K|  1301K|  890K (0)|
|*  6 |       HASH JOIN OUTER				|			|      1 |     78 |    122 |00:00:00.01 |      12 |  1696K|  1696K| 1585K (0)|
|*  7 |        TABLE ACCESS FULL			| B_M_SYS_BRANCH	|      1 |     78 |    122 |00:00:00.01 |	6 |	  |	  |	     |
|   8 |        TABLE ACCESS FULL			| B_M_SYS_BRANCH	|      1 |    172 |    172 |00:00:00.01 |	6 |	  |	  |	     |
|   9 |       TABLE ACCESS FULL 			| B_M_SYS_BRANCH	|      1 |    172 |    172 |00:00:00.01 |	6 |	  |	  |	     |
|  10 |      TABLE ACCESS FULL				| B_M_SYS_BRANCH	|      1 |    172 |    172 |00:00:00.01 |	6 |	  |	  |	     |
|* 11 |    HASH JOIN					|			|      1 |    201 |    175K|00:00:44.29 |    1495K|  1599K|  1599K| 1241K (0)|
|* 12 |     VIEW					|			|      1 |    226 |	53 |00:00:00.01 |	3 |	  |	  |	     |
|* 13 |      WINDOW SORT PUSHED RANK			|			|      1 |    226 |    226 |00:00:00.01 |	3 | 18432 | 18432 |16384  (0)|
|* 14 |       TABLE ACCESS FULL 			| M_MANAGE_LIST 	|      1 |    226 |    226 |00:00:00.01 |	3 |	  |	  |	     |
|  15 |     NESTED LOOPS				|			|      1 |   5687 |   4479K|00:00:43.19 |    1495K|	  |	  |	     |
|  16 |      NESTED LOOPS				|			|      1 |  16019 |   4479K|00:00:39.50 |    1334K|	  |	  |	     |
|* 17 |       TABLE ACCESS FULL 			| DW_SYS_DATE		|      1 |	1 |	12 |00:00:00.01 |      21 |	  |	  |	     |
|* 18 |       INDEX RANGE SCAN				| PK_M_ASSETS_MAGR_PROP |     12 |  16019 |   4479K|00:00:38.95 |    1334K|	  |	  |	     |
|* 19 |        FILTER					|			|    216K|	  |    201K|00:00:36.60 |    1298K|	  |	  |	     |
|* 20 | 	CONNECT BY NO FILTERING WITH SW (UNIQUE)|			|    216K|	  |	10M|00:00:35.53 |    1298K|	  |	  |	     |
|  21 | 	 TABLE ACCESS FULL			| B_M_SYS_BRANCH	|    216K|    172 |	37M|00:00:05.85 |    1298K|	  |	  |	     |
|  22 |      TABLE ACCESS BY INDEX ROWID		| M_ASSETS_MAGR_PROP	|   4479K|  16019 |   4479K|00:00:02.23 |     160K|	  |	  |	     |
--------------------------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("A"."ORG_ID"="C"."ORG_ID")
4 - access("C"."PARENT_ID"="D"."ID")
5 - access("B"."PARENT_ID"="C"."ID")
6 - access("A"."PARENT_ID"="B"."ID")
7 - filter((TO_NUMBER("A"."ORG_TYPE")=1 AND "A"."DEPT_FLAG"<>'2'))
11 - access("A"."MAGR_NO"="PTY_ID")
12 - filter(("ROW_NO"=1 AND "PTY_TYPE"='רְ'))
13 - filter(ROW_NUMBER() OVER ( PARTITION BY "PTY_ID" ORDER BY INTERNAL_FUNCTION("DATA_DT") DESC )<=1)
14 - filter("PTY_ID" IS NOT NULL)
17 - filter(("T"."IS_MON_END"='Y' AND SUBSTR(TO_CHAR(INTERNAL_FUNCTION("T"."TX_DATE"),'yyyy-mm-dd'),1,4)='2014'))
18 - access("A"."DATA_DT"="T"."TX_DATE")
filter( IS NOT NULL)
19 - filter(("T"."ORG_ID"=:B1 AND "T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2'))
20 - access("T"."PARENT_ID"=PRIOR NULL)
filter("T"."ORG_ID"='10000')

67 rows selected.

Plan hash value: 646284600

-------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                       | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                                |                       |    67 |  9313 |  6042   (1)| 00:01:13 |
|   1 |  HASH GROUP BY                                  |                       |    67 |  9313 |  6042   (1)| 00:01:13 |
|*  2 |   HASH JOIN RIGHT OUTER                         |                       |   253 | 35167 |  5736   (1)| 00:01:09 |
|   3 |    VIEW                                         | V_M_ORG_LEVEL         |    76 |  2584 |    18  (12)| 00:00:01 |
|*  4 |     HASH JOIN OUTER                             |                       |    76 |  5852 |    18  (12)| 00:00:01 |
|*  5 |      HASH JOIN OUTER                            |                       |    76 |  5016 |    13   (8)| 00:00:01 |
|*  6 |       HASH JOIN OUTER                           |                       |    76 |  2812 |     9  (12)| 00:00:01 |
|*  7 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |    76 |  1140 |     4   (0)| 00:00:01 |
|   8 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |   168 |  3696 |     4   (0)| 00:00:01 |
|   9 |       TABLE ACCESS FULL                         | B_M_SYS_BRANCH        |   168 |  4872 |     4   (0)| 00:00:01 |
|  10 |      TABLE ACCESS FULL                          | B_M_SYS_BRANCH        |   168 |  1848 |     4   (0)| 00:00:01 |
|* 11 |    HASH JOIN                                    |                       |   253 | 26565 |  5718   (1)| 00:01:09 |
|* 12 |     VIEW                                        |                       |    53 |  1272 |     5  (20)| 00:00:01 |
|* 13 |      WINDOW SORT PUSHED RANK                    |                       |    53 |  1007 |     5  (20)| 00:00:01 |
|* 14 |       TABLE ACCESS FULL                         | M_MANAGE_LIST         |    53 |  1007 |     4   (0)| 00:00:01 |
|  15 |     NESTED LOOPS                                |                       |       |       |            |          |
|  16 |      NESTED LOOPS                               |                       | 31341 |  2479K|  5712   (1)| 00:01:09 |
|* 17 |       TABLE ACCESS FULL                         | DW_SYS_DATE           |     2 |    20 |    20   (0)| 00:00:01 |
|* 18 |       INDEX RANGE SCAN                          | PK_M_ASSETS_MAGR_PROP | 16281 |       |  2557   (1)| 00:00:31 |
|* 19 |        FILTER                                   |                       |       |       |            |          |
|* 20 |         CONNECT BY NO FILTERING WITH SW (UNIQUE)|                       |       |       |            |          |
|  21 |          TABLE ACCESS FULL                      | B_M_SYS_BRANCH        |   168 |  3360 |     4   (0)| 00:00:01 |
|  22 |      TABLE ACCESS BY INDEX ROWID                | M_ASSETS_MAGR_PROP    | 16281 |  1128K|  3135   (1)| 00:00:38 |
-------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("A"."ORG_ID"="C"."ORG_ID"(+))
4 - access("C"."PARENT_ID"="D"."ID"(+))
5 - access("B"."PARENT_ID"="C"."ID"(+))
6 - access("A"."PARENT_ID"="B"."ID"(+))
7 - filter(TO_NUMBER("A"."ORG_TYPE")=1 AND "A"."DEPT_FLAG"<>'2')
11 - access("A"."MAGR_NO"="PTY_ID")
12 - filter("ROW_NO"=1 AND "PTY_TYPE"='רְ')
13 - filter(ROW_NUMBER() OVER ( PARTITION BY "PTY_ID" ORDER BY INTERNAL_FUNCTION("DATA_DT") DESC )<=1)
14 - filter("PTY_ID" IS NOT NULL)
17 - filter("T"."IS_MON_END"='Y' AND SUBSTR(TO_CHAR(INTERNAL_FUNCTION("T"."TX_DATE"),'yyyy-mm-dd'),1,4)='2014')
18 - access("A"."DATA_DT"="T"."TX_DATE")
filter( EXISTS (SELECT /*+ NO_UNNEST */ 0 FROM "B_M_SYS_BRANCH" "T" WHERE "T"."ORG_ID"=:B1 AND
"T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2' START WITH "T"."ORG_ID"='10000' CONNECT BY "T"."PARENT_ID"=PRIOR
"T"."ID"))
19 - filter("T"."ORG_ID"=:B1 AND "T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2')
20 - access("T"."PARENT_ID"=PRIOR "T"."ID")
filter("T"."ORG_ID"='10000')

SQL_ID  5admn3j93pmcp, child number 0
-------------------------------------
SELECT /*+no_push_pred(c) */  TO_CHAR(A.DATA_DT, 'YYYY-MM-DD') AS
DATA_DT,  A.MAGR_NO,  A.MAGR_NAME,  A.ORG_ID,  A.ORG_NAME,
sum(A.ACCT_BAL / 10000) as acct_bal,  sum(A.ACCT_AVG) as ACCT_AVG,
sum(A.SUM_BAL) as SUM_BAL,  sum(A.ASSETS_PROP) as ASSETS_PROP,
A.SEG_TYPE,  A.SEG_ID,  D.pty_type,  c.SEC_ORG_NAME ,  1 flag   FROM
M_ASSETS_MAGR_PROP A   LEFT JOIN (SELECT ORG_ID,
PARENT_ORG_ID,                     PTY_ID,                     DATA_DT,
PTY_NAME,                     PTY_SEX,
DEPT_NAME,                     EMP_POSITION,
PTY_TYPE                FROM (SELECT ORG_ID,
PARENT_ORG_ID,                             PTY_ID,
DATA_DT,                             PTY_NAME,
PTY_SEX,                             DEPT_NAME,
EMP_POSITION,                             PTY_TYPE,
ROW_N

Plan hash value: 646284600

-------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                       | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                                |                       |       |       |  6042 (100)|          |
|   1 |  HASH GROUP BY                                  |                       |    67 |  9313 |  6042   (1)| 00:01:13 |
|*  2 |   HASH JOIN RIGHT OUTER                         |                       |   253 | 35167 |  5736   (1)| 00:01:09 |
|   3 |    VIEW                                         | V_M_ORG_LEVEL         |    76 |  2584 |    18  (12)| 00:00:01 |
|*  4 |     HASH JOIN OUTER                             |                       |    76 |  5852 |    18  (12)| 00:00:01 |
|*  5 |      HASH JOIN OUTER                            |                       |    76 |  5016 |    13   (8)| 00:00:01 |
|*  6 |       HASH JOIN OUTER                           |                       |    76 |  2812 |     9  (12)| 00:00:01 |
|*  7 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |    76 |  1140 |     4   (0)| 00:00:01 |
|   8 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |   168 |  3696 |     4   (0)| 00:00:01 |
|   9 |       TABLE ACCESS FULL                         | B_M_SYS_BRANCH        |   168 |  4872 |     4   (0)| 00:00:01 |
|  10 |      TABLE ACCESS FULL                          | B_M_SYS_BRANCH        |   168 |  1848 |     4   (0)| 00:00:01 |
|* 11 |    HASH JOIN                                    |                       |   253 | 26565 |  5718   (1)| 00:01:09 |
|* 12 |     VIEW                                        |                       |    53 |  1272 |     5  (20)| 00:00:01 |
|* 13 |      WINDOW SORT PUSHED RANK                    |                       |    53 |  1007 |     5  (20)| 00:00:01 |
|* 14 |       TABLE ACCESS FULL                         | M_MANAGE_LIST         |    53 |  1007 |     4   (0)| 00:00:01 |
|  15 |     NESTED LOOPS                                |                       |       |       |            |          |
|  16 |      NESTED LOOPS                               |                       | 31341 |  2479K|  5712   (1)| 00:01:09 |
|* 17 |       TABLE ACCESS FULL                         | DW_SYS_DATE           |     2 |    20 |    20   (0)| 00:00:01 |
|* 18 |       INDEX RANGE SCAN                          | PK_M_ASSETS_MAGR_PROP | 16281 |       |  2557   (1)| 00:00:31 |
|* 19 |        FILTER                                   |                       |       |       |            |          |
|* 20 |         CONNECT BY NO FILTERING WITH SW (UNIQUE)|                       |       |       |            |          |
|  21 |          TABLE ACCESS FULL                      | B_M_SYS_BRANCH        |   168 |  3360 |     4   (0)| 00:00:01 |
|  22 |      TABLE ACCESS BY INDEX ROWID                | M_ASSETS_MAGR_PROP    | 16281 |  1128K|  3135   (1)| 00:00:38 |
-------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("A"."ORG_ID"="C"."ORG_ID")
4 - access("C"."PARENT_ID"="D"."ID")
5 - access("B"."PARENT_ID"="C"."ID")
6 - access("A"."PARENT_ID"="B"."ID")
7 - filter((TO_NUMBER("A"."ORG_TYPE")=1 AND "A"."DEPT_FLAG"<>'2'))
11 - access("A"."MAGR_NO"="PTY_ID")
12 - filter(("ROW_NO"=1 AND "PTY_TYPE"='רְ'))
13 - filter(ROW_NUMBER() OVER ( PARTITION BY "PTY_ID" ORDER BY INTERNAL_FUNCTION("DATA_DT") DESC )<=1)
14 - filter("PTY_ID" IS NOT NULL)
17 - filter(("T"."IS_MON_END"='Y' AND SUBSTR(TO_CHAR(INTERNAL_FUNCTION("T"."TX_DATE"),'yyyy-mm-dd'),1,4)='2014'
))
18 - access("A"."DATA_DT"="T"."TX_DATE")
filter( IS NOT NULL)
19 - filter(("T"."ORG_ID"=:B1 AND "T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2'))
20 - access("T"."PARENT_ID"=PRIOR NULL)
filter("T"."ORG_ID"='10000')

SELECT /*+no_push_pred(c) */
TO_CHAR(A.DATA_DT, 'YYYY-MM-DD') AS DATA_DT,
A.MAGR_NO,
A.MAGR_NAME,
A.ORG_ID,
A.ORG_NAME,
sum(A.ACCT_BAL / 10000) as acct_bal,
sum(A.ACCT_AVG) as ACCT_AVG,
sum(A.SUM_BAL) as SUM_BAL,
sum(A.ASSETS_PROP) as ASSETS_PROP,
A.SEG_TYPE,
A.SEG_ID,
D.pty_type,
c.SEC_ORG_NAME,
1 flag
FROM M_ASSETS_MAGR_PROP A
LEFT JOIN (SELECT ORG_ID,
PARENT_ORG_ID,
PTY_ID,
DATA_DT,
PTY_NAME,
PTY_SEX,
DEPT_NAME,
EMP_POSITION,
PTY_TYPE
FROM (SELECT ORG_ID,
PARENT_ORG_ID,
PTY_ID,
DATA_DT,
PTY_NAME,
PTY_SEX,
DEPT_NAME,
EMP_POSITION,
PTY_TYPE,
ROW_NUMBER() OVER(PARTITION BY PTY_ID ORDER BY DATA_DT DESC) ROW_NO
FROM DWM.M_MANAGE_LIST)
WHERE ROW_NO = 1
AND PTY_TYPE = '专职') D ON A.MAGR_NO = D.PTY_ID
left join V_M_ORG_LEVEL c on a.org_id = c.ORG_ID
where a.data_dt in
(select t.tx_date
from dw_sys_date t
where substr(to_char(t.tx_date, 'yyyy-mm-dd'), 1, 4) = '2014'
and t.is_mon_end = 'Y')
AND D.PTY_ID IS NOT NULL
and A.ORG_ID in (SELECT /*+ no_unnest */
t.Org_Id
FROM b_m_Sys_Branch t
WHERE t.Status = 1
AND t.Dept_Flag != '2'
CONNECT BY PRIOR t.Id = t.Parent_Id
START WITH t.Org_Id = '10000')
group by TO_CHAR(A.DATA_DT, 'YYYY-MM-DD'),
A.MAGR_NO,
A.MAGR_NAME,
A.ORG_ID,
A.ORG_NAME,
A.SEG_TYPE,
A.SEG_ID,
D.pty_type,
c.SEC_ORG_NAME;

Plan hash value: 646284600

--------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                       | Name                  | Starts | E-Rows | A-Rows |   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
--------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                                |                       |      1 |        |   3186 |00:02:43.40 |    2111K|       |       |          |
|   1 |  HASH GROUP BY                                  |                       |      1 |     67 |   3186 |00:02:43.40 |    2111K|  1212K|   970K| 1351K (0)|
|*  2 |   HASH JOIN RIGHT OUTER                         |                       |      1 |    253 |    237K|00:02:42.50 |    2111K|  1035K|  1035K| 1302K (0)|
|   3 |    VIEW                                         | V_M_ORG_LEVEL         |      1 |     76 |    124 |00:00:00.01 |      24 |       |       |          |
|*  4 |     HASH JOIN OUTER                             |                       |      1 |     76 |    124 |00:00:00.01 |      24 |   869K|   869K|  656K (0)|
|*  5 |      HASH JOIN OUTER                            |                       |      1 |     76 |    124 |00:00:00.01 |      18 |   990K|   990K|  775K (0)|
|*  6 |       HASH JOIN OUTER                           |                       |      1 |     76 |    124 |00:00:00.01 |      12 |  1180K|  1180K| 1257K (0)|
|*  7 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |      1 |     76 |    124 |00:00:00.01 |       6 |       |       |          |
|   8 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |      1 |    168 |    174 |00:00:00.01 |       6 |       |       |          |
|   9 |       TABLE ACCESS FULL                         | B_M_SYS_BRANCH        |      1 |    168 |    174 |00:00:00.01 |       6 |       |       |          |
|  10 |      TABLE ACCESS FULL                          | B_M_SYS_BRANCH        |      1 |    168 |    174 |00:00:00.01 |       6 |       |       |          |
|* 11 |    HASH JOIN                                    |                       |      1 |    253 |    237K|00:02:42.22 |    2111K|  1134K|  1134K| 1276K (0)|
|* 12 |     VIEW                                        |                       |      1 |     53 |     53 |00:00:00.01 |       6 |       |       |          |
|* 13 |      WINDOW SORT PUSHED RANK                    |                       |      1 |     53 |     53 |00:00:00.01 |       6 |  4096 |  4096 | 4096  (0)|
|* 14 |       TABLE ACCESS FULL                         | M_MANAGE_LIST         |      1 |     53 |     53 |00:00:00.01 |       6 |       |       |          |
|  15 |     NESTED LOOPS                                |                       |      1 |        |   6349K|00:02:37.88 |    2111K|       |       |          |
|  16 |      NESTED LOOPS                               |                       |      1 |  31341 |   6349K|00:02:23.93 |    1974K|       |       |          |
|* 17 |       TABLE ACCESS FULL                         | DW_SYS_DATE           |      1 |      2 |     12 |00:00:00.01 |      67 |       |       |          |
|* 18 |       INDEX RANGE SCAN                          | PK_M_ASSETS_MAGR_PROP |     12 |  16281 |   6349K|00:02:21.88 |    1974K|       |       |          |
|* 19 |        FILTER                                   |                       |    314K|        |    292K|00:02:14.33 |    1885K|       |       |          |
|* 20 |         CONNECT BY NO FILTERING WITH SW (UNIQUE)|                       |    314K|        |     15M|00:02:09.24 |    1885K|       |       |          |
|  21 |          TABLE ACCESS FULL                      | B_M_SYS_BRANCH        |    314K|    168 |     54M|00:00:21.41 |    1885K|       |       |          |
|  22 |      TABLE ACCESS BY INDEX ROWID                | M_ASSETS_MAGR_PROP    |   6349K|  16281 |   6349K|00:00:07.66 |     136K|       |       |          |
--------------------------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("A"."ORG_ID"="C"."ORG_ID")
4 - access("C"."PARENT_ID"="D"."ID")
5 - access("B"."PARENT_ID"="C"."ID")
6 - access("A"."PARENT_ID"="B"."ID")
7 - filter((TO_NUMBER("A"."ORG_TYPE")=1 AND "A"."DEPT_FLAG"<>'2'))
11 - access("A"."MAGR_NO"="PTY_ID")
12 - filter(("ROW_NO"=1 AND "PTY_TYPE"='专职'))
13 - filter(ROW_NUMBER() OVER ( PARTITION BY "PTY_ID" ORDER BY INTERNAL_FUNCTION("DATA_DT") DESC )<=1)
14 - filter("PTY_ID" IS NOT NULL)
17 - filter(("T"."IS_MON_END"='Y' AND SUBSTR(TO_CHAR(INTERNAL_FUNCTION("T"."TX_DATE"),'yyyy-mm-dd'),1,4)='2014'))
18 - access("A"."DATA_DT"="T"."TX_DATE")
filter( IS NOT NULL)
19 - filter(("T"."ORG_ID"=:B1 AND "T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2'))
20 - access("T"."PARENT_ID"=PRIOR NULL)
filter("T"."ORG_ID"='10000')

67 rows selected.

Plan hash value: 1885001837

--------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation					| Name			| Starts | E-Rows | A-Rows |   A-Time	| Buffers |  OMem |  1Mem | Used-Mem |
--------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT				|			|      1 |	  |   2384 |00:00:44.71 |    1495K|	  |	  |	     |
|   1 |  HASH GROUP BY					|			|      1 |     52 |   2384 |00:00:44.71 |    1495K|    38M|  4144K| 1362K (0)|
|*  2 |   HASH JOIN RIGHT OUTER 			|			|      1 |    201 |    175K|00:00:44.38 |    1495K|  1393K|  1393K| 1255K (0)|
|   3 |    VIEW 					| V_M_ORG_LEVEL 	|      1 |     78 |    122 |00:00:00.01 |      24 |	  |	  |	     |
|*  4 |     HASH JOIN OUTER				|			|      1 |     78 |    122 |00:00:00.01 |      24 |  1055K|  1055K|  520K (0)|
|*  5 |      HASH JOIN OUTER				|			|      1 |     78 |    122 |00:00:00.01 |      18 |  1301K|  1301K|  890K (0)|
|*  6 |       HASH JOIN OUTER				|			|      1 |     78 |    122 |00:00:00.01 |      12 |  1696K|  1696K| 1585K (0)|
|*  7 |        TABLE ACCESS FULL			| B_M_SYS_BRANCH	|      1 |     78 |    122 |00:00:00.01 |	6 |	  |	  |	     |
|   8 |        TABLE ACCESS FULL			| B_M_SYS_BRANCH	|      1 |    172 |    172 |00:00:00.01 |	6 |	  |	  |	     |
|   9 |       TABLE ACCESS FULL 			| B_M_SYS_BRANCH	|      1 |    172 |    172 |00:00:00.01 |	6 |	  |	  |	     |
|  10 |      TABLE ACCESS FULL				| B_M_SYS_BRANCH	|      1 |    172 |    172 |00:00:00.01 |	6 |	  |	  |	     |
|* 11 |    HASH JOIN					|			|      1 |    201 |    175K|00:00:44.29 |    1495K|  1599K|  1599K| 1241K (0)|
|* 12 |     VIEW					|			|      1 |    226 |	53 |00:00:00.01 |	3 |	  |	  |	     |
|* 13 |      WINDOW SORT PUSHED RANK			|			|      1 |    226 |    226 |00:00:00.01 |	3 | 18432 | 18432 |16384  (0)|
|* 14 |       TABLE ACCESS FULL 			| M_MANAGE_LIST 	|      1 |    226 |    226 |00:00:00.01 |	3 |	  |	  |	     |
|  15 |     NESTED LOOPS				|			|      1 |   5687 |   4479K|00:00:43.19 |    1495K|	  |	  |	     |
|  16 |      NESTED LOOPS				|			|      1 |  16019 |   4479K|00:00:39.50 |    1334K|	  |	  |	     |
|* 17 |       TABLE ACCESS FULL 			| DW_SYS_DATE		|      1 |	1 |	12 |00:00:00.01 |      21 |	  |	  |	     |
|* 18 |       INDEX RANGE SCAN				| PK_M_ASSETS_MAGR_PROP |     12 |  16019 |   4479K|00:00:38.95 |    1334K|	  |	  |	     |
|* 19 |        FILTER					|			|    216K|	  |    201K|00:00:36.60 |    1298K|	  |	  |	     |
|* 20 | 	CONNECT BY NO FILTERING WITH SW (UNIQUE)|			|    216K|	  |	10M|00:00:35.53 |    1298K|	  |	  |	     |
|  21 | 	 TABLE ACCESS FULL			| B_M_SYS_BRANCH	|    216K|    172 |	37M|00:00:05.85 |    1298K|	  |	  |	     |
|  22 |      TABLE ACCESS BY INDEX ROWID		| M_ASSETS_MAGR_PROP	|   4479K|  16019 |   4479K|00:00:02.23 |     160K|	  |	  |	     |
--------------------------------------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("A"."ORG_ID"="C"."ORG_ID")
4 - access("C"."PARENT_ID"="D"."ID")
5 - access("B"."PARENT_ID"="C"."ID")
6 - access("A"."PARENT_ID"="B"."ID")
7 - filter((TO_NUMBER("A"."ORG_TYPE")=1 AND "A"."DEPT_FLAG"<>'2'))
11 - access("A"."MAGR_NO"="PTY_ID")
12 - filter(("ROW_NO"=1 AND "PTY_TYPE"='רְ'))
13 - filter(ROW_NUMBER() OVER ( PARTITION BY "PTY_ID" ORDER BY INTERNAL_FUNCTION("DATA_DT") DESC )<=1)
14 - filter("PTY_ID" IS NOT NULL)
17 - filter(("T"."IS_MON_END"='Y' AND SUBSTR(TO_CHAR(INTERNAL_FUNCTION("T"."TX_DATE"),'yyyy-mm-dd'),1,4)='2014'))
18 - access("A"."DATA_DT"="T"."TX_DATE")
filter( IS NOT NULL)
19 - filter(("T"."ORG_ID"=:B1 AND "T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2'))
20 - access("T"."PARENT_ID"=PRIOR NULL)
filter("T"."ORG_ID"='10000')

67 rows selected.

select SAMPLE_TIME,
SESSION_ID,
NAME,
P1,
P2,
P3,
WAIT_TIME,
CURRENT_OBJ#,
CURRENT_FILE#,
CURRENT_BLOCK#
from v$active_session_history ash, v$event_name enm
where ash.event# = enm.event#
and SESSION_ID=1280

select a.session_id,
a.sql_id,
a.blocking_session,
a.sample_time,
a.module,
a.PROGRAM,
a.event,
b.SQL_TEXT
from v$active_session_history a, v$sqlarea b
where a.sql_id = b.sql_id

SQL_ID  bxy8345b81x3h, child number 0
-------------------------------------
SELECT /*+no_push_pred(c) */  TO_CHAR(A.DATA_DT, 'YYYY-MM-DD') AS
DATA_DT,  A.MAGR_NO,  A.MAGR_NAME,  A.ORG_ID,  A.ORG_NAME,
sum(A.ACCT_BAL / 10000) as acct_bal,  sum(A.ACCT_AVG) as ACCT_AVG,
sum(A.SUM_BAL) as SUM_BAL,  sum(A.ASSETS_PROP) as ASSETS_PROP,
A.SEG_TYPE,  A.SEG_ID,  D.pty_type,  c.SEC_ORG_NAME,  1 flag   FROM
M_ASSETS_MAGR_PROP A   LEFT JOIN (SELECT ORG_ID,
PARENT_ORG_ID,                     PTY_ID,                     DATA_DT,
PTY_NAME,                     PTY_SEX,
DEPT_NAME,                     EMP_POSITION,
PTY_TYPE                FROM (SELECT ORG_ID,
PARENT_ORG_ID,                             PTY_ID,
DATA_DT,                             PTY_NAME,
PTY_SEX,                             DEPT_NAME,
EMP_POSITION,                             PTY_TYPE,
ROW_NU

Plan hash value: 646284600

-------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                       | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                                |                       |       |       |  6042 (100)|          |
|   1 |  HASH GROUP BY                                  |                       |    67 |  9313 |  6042   (1)| 00:01:13 |
|*  2 |   HASH JOIN RIGHT OUTER                         |                       |   253 | 35167 |  5736   (1)| 00:01:09 |
|   3 |    VIEW                                         | V_M_ORG_LEVEL         |    76 |  2584 |    18  (12)| 00:00:01 |
|*  4 |     HASH JOIN OUTER                             |                       |    76 |  5852 |    18  (12)| 00:00:01 |
|*  5 |      HASH JOIN OUTER                            |                       |    76 |  5016 |    13   (8)| 00:00:01 |
|*  6 |       HASH JOIN OUTER                           |                       |    76 |  2812 |     9  (12)| 00:00:01 |
|*  7 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |    76 |  1140 |     4   (0)| 00:00:01 |
|   8 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |   168 |  3696 |     4   (0)| 00:00:01 |
|   9 |       TABLE ACCESS FULL                         | B_M_SYS_BRANCH        |   168 |  4872 |     4   (0)| 00:00:01 |
|  10 |      TABLE ACCESS FULL                          | B_M_SYS_BRANCH        |   168 |  1848 |     4   (0)| 00:00:01 |
|* 11 |    HASH JOIN                                    |                       |   253 | 26565 |  5718   (1)| 00:01:09 |
|* 12 |     VIEW                                        |                       |    53 |  1272 |     5  (20)| 00:00:01 |
|* 13 |      WINDOW SORT PUSHED RANK                    |                       |    53 |  1007 |     5  (20)| 00:00:01 |
|* 14 |       TABLE ACCESS FULL                         | M_MANAGE_LIST         |    53 |  1007 |     4   (0)| 00:00:01 |
|  15 |     NESTED LOOPS                                |                       |       |       |            |          |
|  16 |      NESTED LOOPS                               |                       | 31341 |  2479K|  5712   (1)| 00:01:09 |
|* 17 |       TABLE ACCESS FULL                         | DW_SYS_DATE           |     2 |    20 |    20   (0)| 00:00:01 |
|* 18 |       INDEX RANGE SCAN                          | PK_M_ASSETS_MAGR_PROP | 16281 |       |  2557   (1)| 00:00:31 |
|* 19 |        FILTER                                   |                       |       |       |            |          |
|* 20 |         CONNECT BY NO FILTERING WITH SW (UNIQUE)|                       |       |       |            |          |
|  21 |          TABLE ACCESS FULL                      | B_M_SYS_BRANCH        |   168 |  3360 |     4   (0)| 00:00:01 |
|  22 |      TABLE ACCESS BY INDEX ROWID                | M_ASSETS_MAGR_PROP    | 16281 |  1128K|  3135   (1)| 00:00:38 |
-------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("A"."ORG_ID"="C"."ORG_ID")
4 - access("C"."PARENT_ID"="D"."ID")
5 - access("B"."PARENT_ID"="C"."ID")
6 - access("A"."PARENT_ID"="B"."ID")
7 - filter((TO_NUMBER("A"."ORG_TYPE")=1 AND "A"."DEPT_FLAG"<>'2'))
11 - access("A"."MAGR_NO"="PTY_ID")
12 - filter(("ROW_NO"=1 AND "PTY_TYPE"='רְ'))
13 - filter(ROW_NUMBER() OVER ( PARTITION BY "PTY_ID" ORDER BY INTERNAL_FUNCTION("DATA_DT") DESC )<=1)
14 - filter("PTY_ID" IS NOT NULL)
17 - filter(("T"."IS_MON_END"='Y' AND SUBSTR(TO_CHAR(INTERNAL_FUNCTION("T"."TX_DATE"),'yyyy-mm-dd'),1,4)='2014'
))
18 - access("A"."DATA_DT"="T"."TX_DATE")
filter( IS NOT NULL)
19 - filter(("T"."ORG_ID"=:B1 AND "T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2'))
20 - access("T"."PARENT_ID"=PRIOR NULL)
filter("T"."ORG_ID"='10000')

Plan hash value: 646284600

-------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                       | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                                |                       |    67 |  9313 |  6042   (1)| 00:01:13 |
|   1 |  HASH GROUP BY                                  |                       |    67 |  9313 |  6042   (1)| 00:01:13 |
|*  2 |   HASH JOIN RIGHT OUTER                         |                       |   253 | 35167 |  5736   (1)| 00:01:09 |
|   3 |    VIEW                                         | V_M_ORG_LEVEL         |    76 |  2584 |    18  (12)| 00:00:01 |
|*  4 |     HASH JOIN OUTER                             |                       |    76 |  5852 |    18  (12)| 00:00:01 |
|*  5 |      HASH JOIN OUTER                            |                       |    76 |  5016 |    13   (8)| 00:00:01 |
|*  6 |       HASH JOIN OUTER                           |                       |    76 |  2812 |     9  (12)| 00:00:01 |
|*  7 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |    76 |  1140 |     4   (0)| 00:00:01 |
|   8 |        TABLE ACCESS FULL                        | B_M_SYS_BRANCH        |   168 |  3696 |     4   (0)| 00:00:01 |
|   9 |       TABLE ACCESS FULL                         | B_M_SYS_BRANCH        |   168 |  4872 |     4   (0)| 00:00:01 |
|  10 |      TABLE ACCESS FULL                          | B_M_SYS_BRANCH        |   168 |  1848 |     4   (0)| 00:00:01 |
|* 11 |    HASH JOIN                                    |                       |   253 | 26565 |  5718   (1)| 00:01:09 |
|* 12 |     VIEW                                        |                       |    53 |  1272 |     5  (20)| 00:00:01 |
|* 13 |      WINDOW SORT PUSHED RANK                    |                       |    53 |  1007 |     5  (20)| 00:00:01 |
|* 14 |       TABLE ACCESS FULL                         | M_MANAGE_LIST         |    53 |  1007 |     4   (0)| 00:00:01 |
|  15 |     NESTED LOOPS                                |                       |       |       |            |          |
|  16 |      NESTED LOOPS                               |                       | 31341 |  2479K|  5712   (1)| 00:01:09 |
|* 17 |       TABLE ACCESS FULL                         | DW_SYS_DATE           |     2 |    20 |    20   (0)| 00:00:01 |
|* 18 |       INDEX RANGE SCAN                          | PK_M_ASSETS_MAGR_PROP | 16281 |       |  2557   (1)| 00:00:31 |
|* 19 |        FILTER                                   |                       |       |       |            |          |
|* 20 |         CONNECT BY NO FILTERING WITH SW (UNIQUE)|                       |       |       |            |          |
|  21 |          TABLE ACCESS FULL                      | B_M_SYS_BRANCH        |   168 |  3360 |     4   (0)| 00:00:01 |
|  22 |      TABLE ACCESS BY INDEX ROWID                | M_ASSETS_MAGR_PROP    | 16281 |  1128K|  3135   (1)| 00:00:38 |
-------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("A"."ORG_ID"="C"."ORG_ID"(+))
4 - access("C"."PARENT_ID"="D"."ID"(+))
5 - access("B"."PARENT_ID"="C"."ID"(+))
6 - access("A"."PARENT_ID"="B"."ID"(+))
7 - filter(TO_NUMBER("A"."ORG_TYPE")=1 AND "A"."DEPT_FLAG"<>'2')
11 - access("A"."MAGR_NO"="PTY_ID")
12 - filter("ROW_NO"=1 AND "PTY_TYPE"='רְ')
13 - filter(ROW_NUMBER() OVER ( PARTITION BY "PTY_ID" ORDER BY INTERNAL_FUNCTION("DATA_DT") DESC )<=1)
14 - filter("PTY_ID" IS NOT NULL)
17 - filter("T"."IS_MON_END"='Y' AND SUBSTR(TO_CHAR(INTERNAL_FUNCTION("T"."TX_DATE"),'yyyy-mm-dd'),1,4)='2014')
18 - access("A"."DATA_DT"="T"."TX_DATE")
filter( EXISTS (SELECT /*+ NO_UNNEST */ 0 FROM "B_M_SYS_BRANCH" "T" WHERE "T"."ORG_ID"=:B1 AND
"T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2' START WITH "T"."ORG_ID"='10000' CONNECT BY "T"."PARENT_ID"=PRIOR
"T"."ID"))
19 - filter("T"."ORG_ID"=:B1 AND "T"."STATUS"=1 AND "T"."DEPT_FLAG"<>'2')
20 - access("T"."PARENT_ID"=PRIOR "T"."ID")
filter("T"."ORG_ID"='10000')

SELECT /*+no_push_pred(c) */
TO_CHAR(A.DATA_DT, 'YYYY-MM-DD') AS DATA_DT,
A.MAGR_NO,
A.MAGR_NAME,
A.ORG_ID,
A.ORG_NAME,
sum(A.ACCT_BAL / 10000) as acct_bal,
sum(A.ACCT_AVG) as ACCT_AVG,
sum(A.SUM_BAL) as SUM_BAL,
sum(A.ASSETS_PROP) as ASSETS_PROP,
A.SEG_TYPE,
A.SEG_ID,
D.pty_type,
c.SEC_ORG_NAME,
1 flag
FROM dwm.M_ASSETS_MAGR_PROP A
LEFT JOIN (SELECT ORG_ID,
PARENT_ORG_ID,
PTY_ID,
DATA_DT,
PTY_NAME,
PTY_SEX,
DEPT_NAME,
EMP_POSITION,
PTY_TYPE
FROM (SELECT ORG_ID,
PARENT_ORG_ID,
PTY_ID,
DATA_DT,
PTY_NAME,
PTY_SEX,
DEPT_NAME,
EMP_POSITION,
PTY_TYPE,
ROW_NUMBER() OVER(PARTITION BY PTY_ID ORDER BY DATA_DT DESC) ROW_NO
FROM DWM.M_MANAGE_LIST)
WHERE ROW_NO = 1
AND PTY_TYPE = 'רְ') D ON A.MAGR_NO = D.PTY_ID
left join dwm.V_M_ORG_LEVEL c on a.org_id = c.ORG_ID
where a.data_dt in
(select t.tx_date
from dwm.dw_sys_date t
where substr(to_char(t.tx_date, 'yyyy-mm-dd'), 1, 4) = '2014'
and t.is_mon_end = 'Y')
AND D.PTY_ID IS NOT NULL
and A.ORG_ID in (SELECT
t.Org_Id
FROM dwm.b_m_Sys_Branch t
WHERE t.Status = 1
AND t.Dept_Flag != '2'
CONNECT BY PRIOR t.Id = t.Parent_Id
START WITH t.Org_Id = '10000')
group by TO_CHAR(A.DATA_DT, 'YYYY-MM-DD'),
A.MAGR_NO,
A.MAGR_NAME,
A.ORG_ID,
A.ORG_NAME,
A.SEG_TYPE,
A.SEG_ID,
D.pty_type,
c.SEC_ORG_NAME;

SAMPLE_TIME	SESSION_ID	NAME	                       P1	P2	P3	WAIT_TIME	CURRENT_OBJ#	CURRENT_FILE#	CURRENT_BLOCK#
1	10-2月 -15 01.56.53.052 下午	998	db file parallel read	2	2	2	0	         93238	24	2402552
2	10-2月 -15 01.56.52.052 下午	998	db file parallel read	2	2	2	0	          93238	24	2402351
3	10-2月 -15 01.56.51.051 下午	998	db file sequential read	46	503382	1	0	           93238	46	503382
4	10-2月 -15 01.56.50.051 下午	998	db file parallel read	2	2	2	0	            93238	46	503089
5	10-2月 -15 01.56.49.050 下午	998	db file parallel read	2	2	2	0	            93238	54	1248234
6	10-2月 -15 01.56.48.050 下午	998	db file parallel read	1	2	2	0	93238	54	1245407
7	10-2月 -15 01.56.47.049 下午	998	db file parallel read	2	3	3	0	93238	54	1244878
8	10-2月 -15 01.56.46.049 下午	998	db file parallel read	2	2	2	0	93238	61	3734485
9	10-2月 -15 01.56.45.048 下午	998	db file parallel read	2	2	2	0	93238	54	1247857
10	10-2月 -15 01.56.44.048 下午	998	db file parallel read	1	2	2	0	93238	54	1245166
11	10-2月 -15 01.56.43.047 下午	998	db file parallel read	2	2	2	0	93238	46	501130
12	10-2月 -15 01.56.42.047 下午	998	db file parallel read	2	3	3	0	93238	61	3734456

db file parallel read 等待事件是Oracle 可以对多个数据文件实施并行地物理读取并加载到不连续的内存空间中(可能是PGA也可能是Buffer Cache)。  该db file parallel read 往往出现在 recovery操作或者 buffer prefetch以优化多个单块读的操作中。若该等待事件很突出,一般可以参考db file sequential read的优化方法来调优。

该等待事件的 P1、P2、P3如下:

Parameters:
P1	files	  	Number of files being requested
P2	blocks		Total number of blocks being requested
P3	requests	Number of actual AIO requests

高聚簇因子 index range scan -----> 引发灰常多的 rowid 回表扫描离散的block ------>buffer prefetching ------------> db file parallel read...

analyze table M_ASSETS_MAGR_PROP  compute statistics;
SQL> set linesize 200
SQL> select
2     owner              ,
3     table_name         ,
4     pct_free           ,
5     pct_used           ,
6     avg_row_len        ,
7     num_rows           ,
8     chain_cnt          ,
9     chain_cnt/num_rows
10  from
11     dba_tables
12  where
13     table_name='M_ASSETS_MAGR_PROP'
14  order by
15     chain_cnt desc;

OWNER                          TABLE_NAME                       PCT_FREE   PCT_USED AVG_ROW_LEN   NUM_ROWS  CHAIN_CNT CHAIN_CNT/NUM_ROWS
------------------------------ ------------------------------ ---------- ---------- ----------- ---------- ---------- ------------------
DWM                            M_ASSETS_MAGR_PROP                     10                     97   49995072          0                  0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: