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

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

44

积分

0

好友

2

主题
1#
发表于 2013-1-18 09:40:55 | 查看: 7089| 回复: 5
red hat 5.6
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
使用 dbms_xplan.display_cursor 查看 V$ACTIVE_SESSION_HISTORY 中的执行计划,发现一句
note
   - cpu costing is off (consider enabling it)

以前看资料没注意到有这一句。现网上查询也没看到具体的解释。
希望Maclean或其他人能给解释下
如何开启 cpu costing
cpu costing off 与 cpu costing on 对sql执行有何影响
2#
发表于 2013-1-18 10:56:40
  1. SQL> select
  2.   2    x.ksppinm  name,
  3.   3    y.ksppstvl  value,
  4.   4    y.ksppstdf  isdefault,
  5.   5    decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE')  ismod,
  6.   6    decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE')  isadj
  7.   7  from
  8.   8    sys.x$ksppi x,
  9.   9    sys.x$ksppcv y
  10. 10  where
  11. 11    x.inst_id = userenv('Instance') and
  12. 12    y.inst_id = userenv('Instance') and
  13. 13    x.indx = y.indx and
  14. 14    x.ksppinm like '%_&par%'
  15. 15  order by
  16. 16    translate(x.ksppinm, ' _', ' ')
  17. 17  /
  18. 输入 par 的值:  model
  19. 原值   14:   x.ksppinm like '%_&par%'
  20. 新值   14:   x.ksppinm like '%_model%'

  21. NAME                           VALUE                     ISDEFAULT ISMOD      ISADJ
  22. ------------------------------ ------------------------- --------- ---------- -----
  23. _optimizer_cost_model          CHOOSE                    TRUE      FALSE      FALSE
  24. _sql_model_unfold_forloops     RUN_TIME                  TRUE      FALSE      FALSE

  25. SQL>
  26. SQL> set autot traceonly exp
  27. SQL> select * from dual;

  28. 执行计划
  29. ----------------------------------------------------------
  30. Plan hash value: 272002086

  31. --------------------------------------------------------------------------
  32. | Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
  33. --------------------------------------------------------------------------
  34. |   0 | SELECT STATEMENT  |      |     1 |     2 |     2   (0)| 00:00:01 |
  35. |   1 |  TABLE ACCESS FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |
  36. --------------------------------------------------------------------------

  37. SQL> alter session set "_optimizer_cost_model"=io;

  38. 会话已更改。

  39. SQL> select * from dual;

  40. 执行计划
  41. ----------------------------------------------------------
  42. Plan hash value: 272002086

  43. ----------------------------------------------------------
  44. | Id  | Operation         | Name | Rows  | Bytes | Cost  |
  45. ----------------------------------------------------------
  46. |   0 | SELECT STATEMENT  |      |     1 |     2 |     2 |
  47. |   1 |  TABLE ACCESS FULL| DUAL |     1 |     2 |     2 |
  48. ----------------------------------------------------------

  49. Note
  50. -----
  51.    - cpu costing is off (consider enabling it)

  52. SQL>
复制代码

回复 只看该作者 道具 举报

3#
发表于 2013-1-18 11:01:30
COST=IOCOST+CPUCOST
禁止了CPU COST ,CBO在计算成本的时候 ,不会用到
CPUSPEEDNW
IOSEEKTIM
IOTFRSPEED
这些信息,计算出来的成本比原来小点。

这些信息可以从aux_stats$查询到。

回复 只看该作者 道具 举报

4#
发表于 2013-1-18 11:55:18
yanshoupeng 发表于 2013-1-18 11:01
COST=IOCOST+CPUCOST
禁止了CPU COST ,CBO在计算成本的时候 ,不会用到
CPUSPEEDNW

我的参数是CHOOSE,没人动过,workload是发现cpu costint is off后才统计的,原来是noworkload
  1. Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
  2. Connected as SYS


  3. SQL>
  4. SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
  5.   2  FROM SYS.x$ksppi x, SYS.x$ksppcv y
  6.   3  WHERE x.inst_id = USERENV ('Instance')
  7.   4  AND y.inst_id = USERENV ('Instance')
  8.   5  AND x.indx = y.indx
  9.   6  AND x.ksppinm LIKE '%&par%'
  10.   7  /

  11. NAME                                                                             VALUE                                                                            DESCRIB
  12. -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
  13. _optimizer_cost_model                                                            CHOOSE                                                                           optimizer cost model

  14. SQL>
复制代码
  1. SQL> select pname, pval1,pval2,sname from sys.aux_stats$;

  2. PNAME                               PVAL1 PVAL2                                                                            SNAME
  3. ------------------------------ ---------- -------------------------------------------------------------------------------- ------------------------------
  4. STATUS                                    COMPLETED                                                                        SYSSTATS_INFO
  5. DSTART                                    01-18-2013 09:23                                                                 SYSSTATS_INFO
  6. DSTOP                                     01-18-2013 10:23                                                                 SYSSTATS_INFO
  7. FLAGS                                   0                                                                                  SYSSTATS_INFO
  8. CPUSPEEDNW                       2069.392                                                                                  SYSSTATS_MAIN
  9. IOSEEKTIM                           8.893                                                                                  SYSSTATS_MAIN
  10. IOTFRSPEED                       26253.22                                                                                  SYSSTATS_MAIN
  11. SREADTIM                        99299.138                                                                                  SYSSTATS_MAIN
  12. MREADTIM                        18765.121                                                                                  SYSSTATS_MAIN
  13. CPUSPEED                             2083                                                                                  SYSSTATS_MAIN
  14. MBRC                                   15                                                                                  SYSSTATS_MAIN
  15. MAXTHR                          642671616                                                                                  SYSSTATS_MAIN
  16. SLAVETHR                         10209280                                                                                  SYSSTATS_MAIN

  17. 13 rows selected

  18. SQL>
复制代码

回复 只看该作者 道具 举报

5#
发表于 2013-1-18 11:58:46
本帖最后由 26856649 于 2013-1-18 12:35 编辑

cpu costing is off的语句是这种
  1. INSERT INTO table( ...) VALUES ( :B26 ,:B25 ,:B24 ,:B23 ,:B22 ,:B21 ,:B20 ,:B19 , :B18 ,:B17 ,:B16 ,:B15 ,:B14 ,:B13 , :B12 ,:B11 ,:B10 ,:B9 , :B8 ,:B7 ,:B6 ,:B5 ,:B4 ,:B3 , :B2 ,:B1 )
复制代码

回复 只看该作者 道具 举报

6#
发表于 2013-1-18 12:39:05
本帖最后由 26856649 于 2013-1-18 14:01 编辑

现象重现的语句,及10053 trace文件 如下
  1. DROP TABLE TEST
  2. /
  3. CREATE TABLE TEST AS SELECT * FROM dba_objects WHERE 1<0
  4. /
  5. BEGIN
  6.   FOR CUR IN (SELECT * FROM DBA_OBJECTS WHERE ROWNUM <= 10000) LOOP
  7.     INSERT INTO TEST
  8.       (OWNER,
  9.        OBJECT_NAME,
  10.        SUBOBJECT_NAME,
  11.        OBJECT_ID,
  12.        DATA_OBJECT_ID,
  13.        OBJECT_TYPE,
  14.        CREATED,
  15.        LAST_DDL_TIME,
  16.        TIMESTAMP,
  17.        STATUS,
  18.        TEMPORARY,
  19.        GENERATED,
  20.        SECONDARY,
  21.        NAMESPACE,
  22.        EDITION_NAME)
  23.     VALUES
  24.       (CUR.OWNER,
  25.        CUR.OBJECT_NAME,
  26.        CUR.SUBOBJECT_NAME,
  27.        CUR.OBJECT_ID,
  28.        CUR.DATA_OBJECT_ID,
  29.        CUR.OBJECT_TYPE,
  30.        CUR.CREATED,
  31.        CUR.LAST_DDL_TIME,
  32.        CUR.TIMESTAMP,
  33.        CUR.STATUS,
  34.        CUR.TEMPORARY,
  35.        CUR.GENERATED,
  36.        CUR.SECONDARY,
  37.        CUR.NAMESPACE,
  38.        CUR.EDITION_NAME);
  39.     COMMIT;
  40.   END LOOP;
  41. END;
  42. /
  43. SELECT * FROM v$sql v WHERE v.SQL_TEXT LIKE '%TEST%'
  44. /
  45. select plan_table_output from table(dbms_xplan.display_cursor('39qtntf5j6nch',null,'peeked_binds'));
复制代码

orcl_ora_8622.rar

30.97 KB, 下载次数: 1045

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-11-16 06:53 , Processed in 0.051377 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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