Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

1

好友

29

主题
1#
发表于 2013-3-18 09:42:55 | 查看: 3891| 回复: 8
sql语句
  1. SELECT PID,
  2.           NO,
  3.                   'LG', '力干',
  4.                   'XH', '祥和',
  5.                   'SD', '晟达',
  6.                   'PK', '派克',
  7.                   'JZLT', '昆明忠金立泰科技有限公司',
  8.                   'HS', '豪胜',
  9.                   'SH', '松浩',
  10.                   '无')
  11.              wip_type,
  12.           SIGN (
  13.                NVL (COMPLETIONTIME, SYSDATE)
  14.              - NVL (e.last_update_date, SYSDATE))
  15.              overdue,
  16.           b.planflag
  17.      FROM LS_WIP_HEADERS a
  18.           LEFT OUTER JOIN ls_wip_lines b
  19.              ON a.pid = b.headerid
  20.           LEFT OUTER JOIN lsv_gongdan2 c
  21.              ON b.makeno = c.makeno AND b.fnumber = c.ordered_item
  22.           LEFT OUTER JOIN (  SELECT DISTINCT
  23.                                     header_id,
  24.                                     line_id,
  25.                                     prod_proc_type_id,
  26.                                     MAX (last_update_date) last_update_date
  27.                                FROM LS_WIP_PROD_PROC
  28.                            GROUP BY header_id, line_id, prod_proc_type_id) e
  29.              ON     b.headerid = e.header_id
  30.                 AND b.lineid = e.line_id
  31.                 AND e.prod_proc_type_id =
  32.                        DECODE (a.inv_type, '导轨', 7, 12)
  33.     WHERE b.state = 1 AND a.flag IN (2, 3)
复制代码
执行计划
  1. 1        Plan hash value: 2064127176
  2. 2         
  3. 3        ---------------------------------------------------------------------------------------------------------
  4. 4        | Id  | Operation                              | Name             | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
  5. 5        ---------------------------------------------------------------------------------------------------------
  6. 6        |   0 | SELECT STATEMENT             |                  | 35811 |   212M|       |   100K  (1)| 00:20:02 |
  7. 7        |*  1 |  HASH JOIN RIGHT OUTER       |                  | 35811 |   212M|    10M|   100K  (1)| 00:20:02 |
  8. 8        |   2 |   VIEW                       |                  |   178K|  8390K|       |  1341   (2)| 00:00:17 |
  9. 9        |   3 |    HASH GROUP BY             |                  |   178K|  3496K|    10M|  1341   (2)| 00:00:17 |
  10. 10        |   4 |     TABLE ACCESS FULL        | LS_WIP_PROD_PROC |   178K|  3496K|       |   240   (3)| 00:00:03 |
  11. 11        |   5 |   VIEW                       |                  | 35811 |   211M|       | 87765   (1)| 00:17:34 |
  12. 12        |*  6 |    HASH JOIN OUTER           |                  | 35811 |   135M|  5216K| 87765   (1)| 00:17:34 |
  13. 13        |*  7 |     HASH JOIN                |                  | 35811 |  4791K|  2800K|  4638   (1)| 00:00:56 |
  14. 14        |*  8 |      TABLE ACCESS FULL       | LS_WIP_LINES     | 35811 |  2378K|       |  3733   (1)| 00:00:45 |
  15. 15        |*  9 |      TABLE ACCESS FULL       | LS_WIP_HEADERS   | 62753 |  4228K|       |   525   (2)| 00:00:07 |
  16. 16        |  10 |     VIEW                              | LSV_GONGDAN2     |   319K|  1167M|       | 24777   (1)| 00:04:58 |
  17. 17        |  11 |      HASH GROUP BY           |                  |   319K|    37M|    81M| 24777   (1)| 00:04:58 |
  18. 18        |* 12 |       HASH JOIN RIGHT OUTER  |                  |   319K|    37M|  5944K| 15881   (1)| 00:03:11 |
  19. 19        |  13 |        TABLE ACCESS FULL     | LS_MATERIEL_ITEM |   121K|  4511K|       |  1254   (1)| 00:00:16 |
  20. 20        |* 14 |        HASH JOIN OUTER       |                  |   319K|    26M|    17M| 12851   (1)| 00:02:35 |
  21. 21        |* 15 |         HASH JOIN RIGHT OUTER|                  |   319K|    13M|  9224K|  4764   (1)| 00:00:58 |
  22. 22        |  16 |           TABLE ACCESS FULL   | LS_ORDER_HEADERS |   248K|  6309K|       |  2635   (1)| 00:00:32 |
  23. 23        |  17 |           TABLE ACCESS FULL   | LS_ORDER_LISTS   |   319K|  6231K|       |  1188   (1)| 00:00:15 |
  24. 24        |  18 |          TABLE ACCESS FULL    | LS_ORDER_LINES   |   596K|    22M|       |  5727   (1)| 00:01:09 |
  25. 25        ---------------------------------------------------------------------------------------------------------
  26. 26         
  27. 27        Predicate Information (identified by operation id):
  28. 28        ---------------------------------------------------
  29. 29         
  30. 30           1 - access("E"."PROD_PROC_TYPE_ID"(+)=DECODE("A"."INV_TYPE",'导轨',7,12) AND
  31. 31                      "B"."LINEID"="E"."LINE_ID"(+) AND "B"."HEADERID"="E"."HEADER_ID"(+))
  32. 32           6 - access("B"."FNUMBER"="C"."ORDERED_ITEM"(+) AND "B"."MAKENO"="C"."MAKENO"(+))
  33. 33           7 - access("A"."PID"="B"."HEADERID")
  34. 34           8 - filter("B"."STATE"=1)
  35. 35           9 - filter("A"."FLAG"=2 OR "A"."FLAG"=3)
  36. 36          12 - access("LINE"."ORDERED_ITEM"="ITEM"."FNUMBER"(+))
  37. 37          14 - access("LIST"."LINE_ID"="LINE"."LINE_ID"(+) AND "LIST"."HEAD_ID"="LINE"."HEADER_ID"(+))
  38. 38          15 - access("LIST"."HEAD_ID"="HEAD"."HEADER_ID"(+))
复制代码
我的问题是,为什么2,5,11view那一行的bytes会比下一行多那么多(10g,olap数据库)
2#
发表于 2013-3-18 09:48:23
e视图的view在语句中,c视图的语句
  1. select max(line.IMAGE) image,

  2.        max(line.USER_ITEM_DESCRIPTION) fdesc,
  3.         fmodel,
  4.         lsf_get_cus_name(head.sold_to_org_id) custname
  5.   from ls_order_lists list
  6.   left outer join ls_order_lines line on list.head_id = line.header_id
  7.                                      and list.line_id = line.line_id
  8.   left

  9. outer join ls_order_headers head on list.head_id = head.header_id
  10.   left outer join ls_materiel_item item on line.ordered_item = item.fnumber

  11. group by
  12.        line.ordered_item,

  13.        fmodel,
  14.        order_no,

  15.        makeno,

  16.        lsf_get_cus_name(head.sold_to_org_id)
复制代码
执行计划
  1. 1        Plan hash value: 1972235066
  2. 2         
  3. 3        -----------------------------------------------------------------------------------------------------
  4. 4        | Id  | Operation                | Name             | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
  5. 5        -----------------------------------------------------------------------------------------------------
  6. 6        |   0 | SELECT STATEMENT         |                  |   319K|    37M|       | 24777   (1)| 00:04:58 |
  7. 7        |   1 |  HASH GROUP BY           |                  |   319K|    37M|    81M| 24777   (1)| 00:04:58 |
  8. 8        |*  2 |   HASH JOIN RIGHT OUTER  |                  |   319K|    37M|  5944K| 15881   (1)| 00:03:11 |
  9. 9        |   3 |    TABLE ACCESS FULL     | LS_MATERIEL_ITEM |   121K|  4511K|       |  1254   (1)| 00:00:16 |
  10. 10        |*  4 |    HASH JOIN OUTER       |                  |   319K|    26M|    17M| 12851   (1)| 00:02:35 |
  11. 11        |*  5 |     HASH JOIN RIGHT OUTER|                  |   319K|    13M|  9224K|  4764   (1)| 00:00:58 |
  12. 12        |   6 |      TABLE ACCESS FULL   | LS_ORDER_HEADERS |   248K|  6309K|       |  2635   (1)| 00:00:32 |
  13. 13        |   7 |      TABLE ACCESS FULL   | LS_ORDER_LISTS   |   319K|  6231K|       |  1188   (1)| 00:00:15 |
  14. 14        |   8 |     TABLE ACCESS FULL    | LS_ORDER_LINES   |   596K|    22M|       |  5727   (1)| 00:01:09 |
  15. 15        -----------------------------------------------------------------------------------------------------
  16. 16         
  17. 17        Predicate Information (identified by operation id):
  18. 18        ---------------------------------------------------
  19. 19         
  20. 20           2 - access("LINE"."ORDERED_ITEM"="ITEM"."FNUMBER"(+))
  21. 21           4 - access("LIST"."LINE_ID"="LINE"."LINE_ID"(+) AND
  22. 22                      "LIST"."HEAD_ID"="LINE"."HEADER_ID"(+))
  23. 23           5 - access("LIST"."HEAD_ID"="HEAD"."HEADER_ID"(+))
复制代码

回复 只看该作者 道具 举报

3#
发表于 2013-3-18 11:00:45
没看懂你具体指哪些行, 开帖子请不要有头无尾。 bytes 取决于这个结果集的 基数和 行程度

回复 只看该作者 道具 举报

4#
发表于 2013-3-18 11:14:01
Maclean Liu(刘相兵 发表于 2013-3-18 11:00
没看懂你具体指哪些行, 开帖子请不要有头无尾。 bytes 取决于这个结果集的 基数和 行程度 ...

恩,如果bytes取决于的是结果集和行程度的话,为什么
  1. 16      
  2.   |  10 |     VIEW       | LSV_GONGDAN2     |   319K|  1167M|       | 24777   (1)| 00:04:58 |

  3. |  11 |      HASH GROUP BY        |          |   319K|    37M|    81M| 24777   (1)| 00:04:58 |

复制代码
这两行返回的bytes会差那么多?一个是1167m一个是37m(还有就是第id=2,3之间;id=10,11之间)

回复 只看该作者 道具 举报

5#
发表于 2013-3-18 11:49:52
把这个视图 lsv_gongdan2    的DDL 用 dbms_metadata.get_ddl拉出来

回复 只看该作者 道具 举报

6#
发表于 2013-3-18 12:52:49
  1. create or replace view lsv_gongdan2 as
  2. select max(line.IMAGE) image,

  3.        max(line.USER_ITEM_DESCRIPTION) fdesc,

  4.        line.ordered_item,

  5.        fmodel,
  6.        order_no,

  7.        makeno,

  8.        lsf_get_cus_name(head.sold_to_org_id) custname

  9.   from ls_order_lists list
  10.   left outer join ls_order_lines line on list.head_id = line.header_id
  11.                                      and list.line_id = line.line_id
  12.   left

  13. outer join ls_order_headers head on list.head_id = head.header_id
  14.   left outer join ls_materiel_item item on line.ordered_item = item.fnumber

  15. group by



  16.        line.ordered_item,

  17.        fmodel,
  18.        order_no,

  19.        makeno,

  20.        lsf_get_cus_name(head.sold_to_org_id)
复制代码
这个是我用developer收集的
  1. SQL> SELECT dbms_metadata.get_ddl('VIEW','lsv_gongdan2') from dual;

  2. SELECT dbms_metadata.get_ddl('VIEW','lsv_gongdan2') from dual

  3. ORA-31603: object "lsv_gongdan2" of type VIEW not found in schema "ACEDEV"
  4. ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
  5. ORA-06512: at "SYS.DBMS_METADATA", line 2805
  6. ORA-06512: at "SYS.DBMS_METADATA", line 4333
  7. ORA-06512: at line 1
复制代码
这个报错是为什么?lsv_gongdan2视图不在acedev下么?还是我语法错误了,我正在找相关文档解决这个错误..

回复 只看该作者 道具 举报

7#
发表于 2013-3-18 13:04:32
Maclean Liu(刘相兵 发表于 2013-3-18 11:49
把这个视图 lsv_gongdan2    的DDL 用 dbms_metadata.get_ddl拉出来

不好意思,刚才犯二了,
  1. select dbms_metadata.get_ddl('VIEW', 'LSV_GONGDAN2', 'ACEDEV') from dual;
复制代码

  1.   CREATE OR REPLACE FORCE VIEW "ACEDEV"."LSV_GONGDAN2" ("IMAGE", "FDESC", "ORDERED_ITEM", "FMODEL", "ORDER_NO", "MAKENO", "CUSTNAME") AS
  2.   select max(line.IMAGE) image,

  3.        max(line.USER_ITEM_DESCRIPTION) fdesc,

  4.        line.ordered_item,

  5.        fmodel,
  6.        order_no,

  7.        makeno,

  8.        lsf_get_cus_name(head.sold_to_org_id) custname

  9.   from ls_order_lists list
  10.   left outer join ls_order_lines line on list.head_id = line.header_id
  11.                                      and list.line_id = line.line_id
  12.   left

  13. outer join ls_order_headers head on list.head_id = head.header_id
  14.   left outer join ls_materiel_item item on line.ordered_item = item.fnumber

  15. group by



  16.        line.ordered_item,

  17.        fmodel,
  18.        order_no,

  19.        makeno,

  20.        lsf_get_cus_name(head.sold_to_org_id)

复制代码

回复 只看该作者 道具 举报

8#
发表于 2013-3-18 13:14:57

action plan:

alter session set events '10053 trace name context forever , level 1';
set autotrace traceonly;
select /*+ hard_parse */ * from ACEDEV.LSV_GONGDAN2

把获得的autotrace输出和 10053 trace上传

回复 只看该作者 道具 举报

9#
发表于 2013-3-18 16:04:56
Maclean Liu(刘相兵 发表于 2013-3-18 13:14
action plan:

alter session set events '10053 trace name context forever , level 1';

set autotrace时报错,没有权限,有dba那人出差了,等回来再发吧,呜呜呜,先谢谢刘大了

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 08:24 , Processed in 0.056713 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569