优化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
相关文章推荐
- 根据statspack报表优化oracle数据库实例之“DB file sequential read”
- 根据statspack报表优化oracle数据库实例之“DB file sequential read”
- 根据statspack报表优化oracle数据库实例之“DB file scattered read”
- Oracle 等待事件之 db file parallel read
- Oracle 11g通过提高IO吞吐量(修改_db_file_optimizer_read_count)来优化全表扫描
- db file sequential read 事件的优化(一)
- db file parallel read等待事件
- Oracle等待事件之db file sequential read/ db file parallel read
- I/O上的等待事件 —— db file parallel read
- Oracle IO问题解析(八)—— db file parallel read
- Oracle等待事件db file parallel read
- db file parallel read等待事件
- oracle之 db file sequential read等待事件优化思想
- db file parallel read
- Oracle 11g通过提高IO吞吐量(修改_db_file_optimizer_read_count)来优化全表扫描
- oracle之 db file sequential read等待事件优化思想
- 深入了解db file parallel read等待事件
- db file parallel write和db file parallel read
- 全表扫描引发的db file sequential read
- Oracle 等待事件之 db file scattered read