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

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

31

积分

0

好友

0

主题
1#
发表于 2012-3-13 14:34:59 | 查看: 9022| 回复: 8
早上从生产上拉了份awr,分析了下,发现在SQL ordered by Elapsed Time部分的一条系统的sql的效率很差,如图: awrtopsql

烦请ML老大帮忙分析下这个sql主要是什么原因导致效率这么差。

awrrpt_1_11015_11093.html

622.97 KB, 下载次数: 906

2#
发表于 2012-3-13 14:53:20
ODM Finding:

语句:

update sys.aud$
   set action#       = :2,
       returncode    = :3,
       logoff$time   = cast(SYS_EXTRACT_UTC(systimestamp) as date),
       logoff$pread  = :4,
       logoff$lread  = :5,
       logoff$lwrite = :6,
       logoff$dead   = :7,
       sessioncpu    = :8
where sessionid = :1
   and entryid = 1
   and action# = 100


action # =100 是 LOGON 操作, 这语句的作用可能是 给update sys.aud$上的记录 更新logoff$time

回复 只看该作者 道具 举报

3#
发表于 2012-3-13 15:10:03
11.1.0.6.0        Linux 64-bit for AMD

Cluster Wait Time (s)        %Ela        %Total        Elapsed Time(s)        CPU Time(s)        Executions        SQL Id        SQL Module        SQL Text
27,737.12        22.82        65.73        121,570.85        20,014.13        3,484        209fr01svbb5s                   update sys.aud$ set action#=:2...

该语句 运行3484 次, 消耗了 大量的CPU 和 IO



select count(*) From sys.aud$;            检查一下 aud$有多大

确认 update sys.aud$ 是否使用了索引:


select * from table(dbms_xplan.display_awr('209fr01svbb5s'));

action plan:

运行一下SQL并贴出结果 :
  1. select * from table(dbms_xplan.display_awr('209fr01svbb5s'));

  2. select count(*) From sys.aud$;     


  3. select status,index_name from dba_indexes where table_name='AUD$' and owner='SYS';
复制代码

回复 只看该作者 道具 举报

4#
发表于 2012-3-13 15:43:43
执行计划如下:
  1. SQL> set pagesize 200
  2. SQL> col plan_table_output for a120
  3. SQL> select * from table(dbms_xplan.display_awr('209fr01svbb5s'));

  4. PLAN_TABLE_OUTPUT
  5. ------------------------------------------------------------------------------------------------------------------------
  6. SQL_ID 209fr01svbb5s
  7. --------------------
  8. update sys.aud$ set action#=:2, returncode=:3,
  9. logoff$time=cast(SYS_EXTRACT_UTC(systimestamp) as date),
  10. logoff$pread=:4, logoff$lread=:5, logoff$lwrite=:6, logoff$dead=:7,
  11. sessioncpu=:8 where sessionid=:1 and entryid=1 and action#=100

  12. Plan hash value: 444042542

  13. ---------------------------------------------------------------------------
  14. | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
  15. ---------------------------------------------------------------------------
  16. |   0 | UPDATE STATEMENT   |      |       |       |     2 (100)|          |
  17. |   1 |  UPDATE            | AUD$ |       |       |            |          |
  18. |   2 |   TABLE ACCESS FULL| AUD$ |     1 |    49 |     2   (0)| 00:00:01 |
  19. ---------------------------------------------------------------------------


  20. 17 rows selected.

  21. SQL>
复制代码

回复 只看该作者 道具 举报

5#
发表于 2012-3-13 15:47:01
TABLE ACCESS FULL| AUD$ |     1 |    49 |     2   (0)| 00:00:01 |

这个比较明显 统计信息过期了,  你可以查一下 AUD$ 上一次 分析是什么时候:

select blocks,num_rows,last_analyzed from dba_tables where table_name='AUD$';

回复 只看该作者 道具 举报

6#
发表于 2012-3-13 16:03:05
  1. SQL> select status,index_name from dba_indexes where table_name='AUD
  2. and owner='SYS';

  3. STATUS   INDEX_NAME
  4. -------- ------------------------------
  5. VALID    SYS_IL0000000375C00040$
  6. VALID    SYS_IL0000000375C00041$
  7. VALID    I_AUD1

  8. SQL>


  9. SQL> select blocks,num_rows,last_analyzed from dba_tables where table_name='AUD
  10. ;

  11.     BLOCKS   NUM_ROWS LAST_ANALYZED
  12. ---------- ---------- -------------------
  13.          1          5 2010-07-22 21:25:13
复制代码
Liu老大,这个是不是需要重新收集一下,不过目前不知道总量有多少,趁业务空闲是不是有必要手动收集一下。

回复 只看该作者 道具 举报

7#
发表于 2012-3-13 16:06:31
统计信息 过期导致的 执行计划使用全表扫描, 建议在空闲时间手动收集 SYS.AUD$的统计信息。

回复 只看该作者 道具 举报

8#
发表于 2012-3-19 15:54:51
相当强悍,丝丝入扣 :)

回复 只看该作者 道具 举报

9#
发表于 2012-3-21 10:58:02
是否能说系统表的效率差往往都是统计信息 过期导致的?

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-11-15 07:39 , Processed in 0.057931 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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