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

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

50

积分

0

好友

3

主题
1#
发表于 2012-3-14 15:12:38 | 查看: 8098| 回复: 8
AWR报告里的sql_id执行计划:
awr

将这个sql放在plsql里执行:
plsql

[ 本帖最后由 136156188 于 2012-3-14 15:28 编辑 ]
2#
发表于 2012-3-14 15:42:39
感觉三种可能:一 得到计划的时间不一样 ,  里面的数据及数据量发生变化;
二 统计 信息的更新了;
三 awr中那个是真实执行得到的,  下面的那个是估计算出来 的。

回复 只看该作者 道具 举报

3#
发表于 2012-3-14 15:57:37
比较明显的是 HD40.TELEFILLUP 这张表的统计信息发生了较大的变化:

action plan:

执行以下SQL并上传结果
  1. set linesize 200 pagesize 1400

  2. select blocks,num_rows,last_analyzed from dba_tables where table_name='TELEFILLUP';
  3. select * from dba_tab_statistics where table_name='TELEFILLUP';
  4. select * from dba_tab_stats_history where table_name='TELEFILLUP';

  5. show parameter db_file

  6. select   * from v$version
复制代码

回复 只看该作者 道具 举报

4#
发表于 2012-3-14 16:11:02
上传所需附件
log1.rar (1.43 KB, 下载次数: 3267)

回复 只看该作者 道具 举报

5#
发表于 2012-3-14 16:16:36
ODM Finding:
  1. SQL> select blocks,num_rows,last_analyzed from dba_tables where table_name='TELEFILLUP';

  2.     BLOCKS   NUM_ROWS LAST_ANALYZED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  3. ---------- ---------- -------------------                                                                                                                                                                                          
  4.      16661     762997 2012.03.12 22:06:52  


  5. TELEFILLUP

  6. 在以下三个日期 都有统计信息的更新:

  7. STATS_UPDATE_TIME
  8. 09-3月 -12 10.13.14.093000 下午 +08:00
  9. 12-3月 -12 10.20.40.906000 下午 +08:00
  10. 13-3月 -12 10.08.15.015000 下午 +08:00


  11. Version 10.2.0.4

  12. db_file_multiblock_read_count        integer     8

  13. Effects of Changing the Multiblock Read Count
  14. db_file_multiblock_read_count Cost Adjusted dbf_mbrc
复制代码



db_file_multiblock_read_count=8 时  对应的Adjusted dbf_mbrc=3.69(这是11.2中的值,  10.2.0.4 中可能略微有点差别)

全表扫描的成本 FULL TABLE SCAN COST= blocks / Adjusted dbf_mbrc= 16661/3.68= 4527 接近于 截图中 TABLE ACCESS FULL TELEFILLUP的 Cost 4579

所以这是由于统计信息更新 造成的Cost成本计算变化。

回复 只看该作者 道具 举报

6#
发表于 2012-3-14 16:16:40
plsql    如果是基于autotrace的   则有可能是估算值(未实际运行获得)
个人觉得AWR更准确

回复 只看该作者 道具 举报

7#
发表于 2012-3-14 16:33:11
两个执行计划中的byte值是不一样的,  所以应该是统计信息的问题。

回复 只看该作者 道具 举报

8#
发表于 2012-3-14 16:38:13
我觉得,PL/SQL和AWR 在统计信息不更新的情况下,执行计划中的cost值不会有太大的变化。都是根据liu.maclean说的估算出来的。

回复 只看该作者 道具 举报

9#
发表于 2012-3-14 16:41:54
谢谢大家的分享,又明白了一点。

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-12-24 04:09 , Processed in 0.055109 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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