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

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

0

积分

1

好友

29

主题
1#
发表于 2012-12-23 15:46:59 | 查看: 4258| 回复: 9
关于执行计划中"A-Rows   操作返回的真实记录数"这个参数的调用,网上说要将statistics_level为all才可以使用,但是我设置为all后,依然无法获得a_rows
SYS@moon>show parameter statistics_l

NAME                                 TYPE       VALUE
------------------------------------ ---------- ------------------------------
statistics_level                     string     ALL

SYS@moon>select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
Plan hash value: 1601196873

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |    26 |     2   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T    |     1 |    26 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------

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

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------

   1 - filter("X"=1)

Note
-----
   - dynamic sampling used for this statement

17 rows selected.
不知道还有什么条件一起才可以看到参数a_rows
10#
发表于 2013-1-30 14:54:14
张沛 发表于 2013-1-30 14:50
刘大不好意思,我想要的参数它为什么没有呢?我希望得到的Id  | Operation          | Name | Starts | E ...
  1. SQL> show parameter statistics_level;

  2. NAME_COL_PLUS_SHOW_PARAM    TYPE    VALUE_COL_PLUS_SHOW_PARAM
  3.          statistics_level                     string               ALL
复制代码

回复 只看该作者 道具 举报

9#
发表于 2013-1-30 14:50:28
Liu Maclean(刘相兵 发表于 2012-12-24 09:15
1. 学会怎么用code模式贴代码!

2. 学会怎么搜索askmaclean.com博客来学习!

刘大不好意思,我想要的参数它为什么没有呢?
  1. SQL> set linesize 200 pagesize 1400
  2. SQL> r
  3.   1* select * from table(dbms_xplan.display_cursor('2hc2vdpftyarz',0,'ALLSTATS LAST'))

  4. PLAN_TABLE_OUTPUT
  5. ----------------------------------------------------------------------------------------------------
  6. --------------------------------------------------
  7. SQL_ID  2hc2vdpftyarz, child number 0
  8. -------------------------------------
  9. select /*+gather_plan_statistics*/ a.CUST_ACCOUNT_ID     CUSTOMER_ID,
  10. a.ACCOUNT_NUMBER      CUSTOMER_NUMBER,        b.PARTY_NAME          CUSTOMER_NAME,
  11. L_CLASS.MEANING       CUSTOMER_CLASS_MEANING,        a.CUSTOMER_CLASS_CODE
  12. CUSTOMER_CLASS_CODE,        a.attribute5   From apps.HZ_CUST_ACCOUNTS a, apps.HZ_PARTIES
  13. b, apps.AR_LOOKUPS L_CLASS  where 1 = 1 --a.ACCOUNT_NUMBER = '22970780'    and
  14. a.PARTY_ID = b.PARTY_ID    and a.status = 'A'    and b.created_by_module <> 'Oracle
  15. Shipping'    AND a.CUSTOMER_CLASS_CODE = L_CLASS.LOOKUP_CODE(+)    AND
  16. L_CLASS.LOOKUP_TYPE(+) = 'CUSTOMER CLASS'

  17. Plan hash value: 4103669154

  18. -------------------------------------------------------------------------------------------------
  19. | Id  | Operation                    | Name                 | E-Rows |  OMem |  1Mem | Used-Mem |
  20. -------------------------------------------------------------------------------------------------
  21. |*  1 |  HASH JOIN RIGHT OUTER       |                      |  10361 |   789K|   789K|          |
  22. |   2 |   TABLE ACCESS BY INDEX ROWID| FND_LOOKUP_VALUES    |      1 |       |       |          |
  23. |*  3 |    INDEX RANGE SCAN          | FND_LOOKUP_VALUES_U1 |      1 |       |       |          |
  24. |*  4 |   HASH JOIN                  |                      |  10361 |  1464K|  1116K|          |
  25. |*  5 |    TABLE ACCESS FULL         | HZ_CUST_ACCOUNTS     |  10362 |       |       |          |
  26. |*  6 |    TABLE ACCESS FULL         | HZ_PARTIES           |  90233 |       |       |          |
  27. -------------------------------------------------------------------------------------------------

  28. Predicate Information (identified by operation id):
  29. ---------------------------------------------------

  30.    1 - access("A"."CUSTOMER_CLASS_CODE"="LV"."LOOKUP_CODE")
  31.    3 - access("LV"."LOOKUP_TYPE"='CUSTOMER CLASS' AND "LV"."VIEW_APPLICATION_ID"=222 AND
  32.               "LV"."SECURITY_GROUP_ID"=0 AND "LV"."LANGUAGE"=USERENV('LANG'))
  33.        filter(("LV"."LANGUAGE"=USERENV('LANG') AND "LV"."SECURITY_GROUP_ID"=0))
  34.    4 - access("A"."PARTY_ID"="B"."PARTY_ID")
  35.    5 - filter("A"."STATUS"='A')
  36.    6 - filter("B"."CREATED_BY_MODULE"<>'Oracle Shipping')

  37. Note
  38. -----
  39.    - Warning: basic plan statistics not available. These are only collected when:
  40.        * hint 'gather_plan_statistics' is used for the statement or
  41.        * parameter 'statistics_level' is set to 'ALL', at session or system level


  42. 已选择41行。
复制代码
我希望得到的Id  | Operation          | Name | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |
这些不都是在'ALLSTATS LAST'里面应该包含了么?(statistics_level已经设置为all)

回复 只看该作者 道具 举报

8#
发表于 2013-1-7 15:31:36
张沛 发表于 2013-1-7 15:05
刘大不好意思,之前的问题解决了,但是今天的实验不知道为什么不出统计信息了,麻烦看下
PLAN_TABLE_OUTP ...

select * from table(dbms_xplan.display_cursor(null,null,'allstats -rows'));        找到答案了,嘿嘿,这个好像就能知道到了

回复 只看该作者 道具 举报

7#
发表于 2013-1-7 15:14:05
另外一种参数
SQL> select * from TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

SQL_ID  6a3x2p3yr02q7, child number 0

select * from table(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS
LAST'))

NOTE: cannot fetch plan for SQL_ID: 6a3x2p3yr02q7, CHILD_NUMBER: 0
      Please verify value of SQL_ID and CHILD_NUMBER;
      It could also be that the plan is no longer in cursor cache (check v$sql_p

lan)



已选择9行。
依然不行,是我哪有问题么?

回复 只看该作者 道具 举报

6#
发表于 2013-1-7 15:05:54
Liu Maclean(刘相兵 发表于 2012-12-24 09:15
1. 学会怎么用code模式贴代码!

2. 学会怎么搜索askmaclean.com博客来学习!

刘大不好意思,之前的问题解决了,但是今天的实验不知道为什么不出统计信息了,麻烦看下
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

MCSVC.CATEGORY_ID = MCK.CATEGORY_ID AND MCK.STRUCTURE_ID = ( SELECT
MCS1.STRUCTURE_ID FROM MTL_CATEGORY_SETS_B MCS1 WHERE
MCS1.CATEGORY_SET_ID = MCSVC.CATEGORY_SET_ID ))

NOTE: cannot fetch plan for SQL_ID: 7rwvtkq0nhuw5, CHILD_NUMBER: 0
      Please verify value of SQL_ID and CHILD_NUMBER;
      It could also be that the plan is no longer in cursor cache (check v$sql_p

lan)
这是为什么呢?note的内容为什么说不能获取呢?不加参数就可以

回复 只看该作者 道具 举报

5#
发表于 2012-12-24 09:18:40
fluttersnow 发表于 2012-12-24 08:43
使用hint /*+ gather_plan_statistics */ 再试试,
SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL, ...

嗯,有了,感谢大师

回复 只看该作者 道具 举报

4#
发表于 2012-12-24 09:18:21
Liu Maclean(刘相兵 发表于 2012-12-24 09:15
1. 学会怎么用code模式贴代码!

2. 学会怎么搜索askmaclean.com博客来学习!

感谢感谢,我这个是用的虚拟机的实验,所以没用code,尽快习惯code模式

回复 只看该作者 道具 举报

3#
发表于 2012-12-24 09:15:11
1. 学会怎么用code模式贴代码!

2. 学会怎么搜索askmaclean.com博客来学习!

FYI
  1. SQL> select * from v$version;

  2. BANNER
  3. --------------------------------------------------------------------------------
  4. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  5. PL/SQL Release 11.2.0.3.0 - Production
  6. CORE    11.2.0.3.0      Production
  7. TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
  8. NLSRTL Version 11.2.0.3.0 - Production


  9. SQL> alter session set statistics_level=all;

  10. Session altered.

  11. SQL> select count(*) from tv;

  12.   COUNT(*)
  13. ----------
  14.     300000

  15. SQL> set linesize 200 pagesize 1400
  16. SQL> select * from TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));

  17. PLAN_TABLE_OUTPUT
  18. ------------------------------------------------------------------------------------------------

  19. SQL_ID  9nbx4v07k59d3, child number 0
  20. -------------------------------------
  21. select count(*) from tv

  22. Plan hash value: 4129329588

  23. ----------------------------------------------------------------------------------------------
  24. | Id  | Operation          | Name | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |
  25. ----------------------------------------------------------------------------------------------
  26. |   0 | SELECT STATEMENT   |      |      1 |        |      1 |00:00:04.71 |   27277 |  27273 |
  27. |   1 |  SORT AGGREGATE    |      |      1 |      1 |      1 |00:00:04.71 |   27277 |  27273 |
  28. |   2 |   TABLE ACCESS FULL| TV   |      1 |    361K|    300K|00:00:04.68 |   27277 |  27273 |
  29. ----------------------------------------------------------------------------------------------

  30. Note
  31. -----
  32.    - dynamic sampling used for this statement (level=2)


  33. 18 rows selected.
复制代码

回复 只看该作者 道具 举报

2#
发表于 2012-12-24 08:43:58
本帖最后由 fluttersnow 于 2012-12-24 08:45 编辑

使用hint /*+ gather_plan_statistics */ 再试试,
SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-11-16 09:30 , Processed in 0.050260 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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