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

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

55

积分

0

好友

4

主题
1#
发表于 2012-3-8 15:02:41 | 查看: 5147| 回复: 7
数据库版本: 10.2.0.5

SQL句子:
select netdiskfil0_.FILEID      ,
       netdiskfil0_.CREATETIME     ,      
  from NETDISK_FILES netdiskfil0_
where netdiskfil0_.USERID = :1
   and netdiskfil0_.ISDELETE = 0
   and netdiskfil0_.IS_BACKUP = 0
   and netdiskfil0_.IS_INRECYCLER = 0
   and netdiskfil0_.IS_TMP = 0
   and netdiskfil0_.ROOT_PARENT_TYPE = 0
   and netdiskfil0_.PARENTID = :2
order by netdiskfil0_.ISFOLDER desc,
          netdiskfil0_.FILEID   desc;

执行计划:select * from table(dbms_xplan.display_awr('1w6pbxs8qw4np',null,null,'all'));
1.jpg
2.jpg

表上的索引:
SQL> select index_name,table_name,column_name from dba_ind_columns where table_name='NETDISK_FILES';

INDEX_NAME                     TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ --------------------------------------------------------------------------------
PK_NETDISK_FILES               NETDISK_FILES                  FILEID
IN_PARENTID                    NETDISK_FILES                  PARENTID


表的统计信息:
3.jpg


在v$slq里面看到2个子游标的信息:
4.jpg

awr里面1个小时的时间内 这个SQL句子的信息 5.jpg

[ 本帖最后由 oradbguy 于 2012-3-8 15:06 编辑 ]
2#
发表于 2012-3-8 15:11:50
生成2个 child cursor execution plan , 首先确认 为什么 游标不能共享。

参考 v$sql_shared_cursor 视图 找出 游标不共享的原因

一点猜测:

   NETDISK_FILES      的 last_analyzed 是 3月7日 22:00 , 这可能是一个新对象 或者 数据变化频繁的对象。


查一下 这2个child cursor的生成时间 V$SQL.LAST_LOAD_TIME

回复 只看该作者 道具 举报

3#
发表于 2012-3-8 15:15:08
逻辑读太高了,走全表扫描导致的。
请教该如何优化呢?

回复 只看该作者 道具 举报

4#
发表于 2012-3-8 15:30:47
补充  信息
select * from  v$sql_shared_cursor where sql_id='1w6pbxs8qw4np';

6.jpg


SQL> Select LAST_LOAD_TIME from v$sql where sql_id='1w6pbxs8qw4np';

LAST_LOAD_TIME
----------------------------------------------------------------------------
2012-03-07/18:00:11
2012-03-08/00:01:23

[ 本帖最后由 oradbguy 于 2012-3-8 15:33 编辑 ]

回复 只看该作者 道具 举报

5#
发表于 2012-3-8 15:35:12
使用 http://www.oracledatabase12g.com ... -or-hash-value.html 这个文档里介绍的 脚本,  把输出贴出来 文字!不要图!

图片信息是不可搜索 无法组织的信息, 除非你是GUI的问题 否则不要发图, 如果怕格式乱掉 请用 code模式
  1. 我是CODE模式!!!
复制代码
把 child cursor 生成的时间找出来, 参考2楼

回复 只看该作者 道具 举报

6#
发表于 2012-3-8 15:58:31
  1. 1        Version Count Report Version 3.1.2 -- Today's Date 08-3月 -12 15:52
  2. 2        RDBMS Version :10.2.0.5.0 Host: ydb Instance 1 : ydb
  3. 3        ==================================================================
  4. 4        Addr: 00000007B1620458  Hash_Value: 292426389  SQL_ID 1w6pbxs8qw4np
  5. 5        Sharable_Mem: 86401 bytes   Parses: 3564523
  6. 6        Stmt:
  7. 7        0 select netdiskfil0_.FILEID as FILEID1_, netdiskfil0_.CREATETIME
  8. 8        1 as CREATETIME1_, netdiskfil0_.DOC_FILE_COUNT as DOC3_1_, netdisk
  9. 9        2 fil0_.FILEATTRIBUTE as FILEATTR4_1_, netdiskfil0_.FILE_COUNT as
  10. 10        3 FILE5_1_, netdiskfil0_.FILE_HASH as FILE6_1_, netdiskfil0_.FILEL
  11. 11        4 EVEL as FILELEVEL1_, netdiskfil0_.FILENAME as FILENAME1_, netdis
  12. 12        5 kfil0_.FILESIZE as FILESIZE1_, netdiskfil0_.FILESTATUS as FILEST
  13. 13        6 ATUS1_, netdiskfil0_.FILETYPE as FILETYPE1_, netdiskfil0_.FUID a
  14. 14        7 s FUID1_, netdiskfil0_.IS_BACKUP as IS13_1_, netdiskfil0_.ISDELE
  15. 15        8 TE as ISDELETE1_, netdiskfil0_.IS_DOCLIB as IS15_1_, netdiskfil0
  16. 16        9 _.ISFOLDER as ISFOLDER1_, netdiskfil0_.IS_INRECYCLER as IS17_1_,
  17. 17        10  netdiskfil0_.IS_MUSICLIB as IS18_1_, netdiskfil0_.IS_PHOTOLIB a
  18. 18        11 s IS19_1_, netdiskfil0_.IS_SHARE_INSITE as IS20_1_, netdiskfil0_
  19. 19        12 .IS_SHARE_OUTLINK as IS21_1_, netdiskfil0_.IS_TMP as IS22_1_, ne
  20. 20        13 tdiskfil0_.IS_VIDEOLIB as IS23_1_, netdiskfil0_.LAST_OP_TIME as
  21. 21        14 LAST24_1_, netdiskfil0_.MEDIA_TYPE as MEDIA25_1_, netdiskfil0_.M
  22. 22        15 EMO as MEMO1_, netdiskfil0_.MUSIC_FILE_C
  23. 23        
  24. 24        Versions Summary
  25. 25        ----------------
  26. 26        ROLL_INVALID_MISMATCH :1
  27. 27        Total Versions:1
  28. 28        ~
  29. 29        Plan Hash Value Summary
  30. 30        -----------------------
  31. 31        Plan Hash Value Count
  32. 32        =============== =====
  33. 33             3482979092     1
  34. 34              484634094     1
  35. 35         
  36. 36        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  37. 37        Details for ROLL_INVALID_MISMATCH :
  38. 38        
  39. 39        No details available
  40. 40        ####
  41. 41        To further debug Ask Oracle Support for the appropiate level LLL.
  42. 42        alter session set events
  43. 43         'immediate trace name cursortrace address 292426389, level LLL';
  44. 44        To turn it off do use address 1, level 2147483648
  45. 45        ================================================================
复制代码


  1. SQL> select first_load_time,last_load_time from v$sql where sql_id='1w6pbxs8qw4np';

  2. FIRST_LOAD_TIME                                                              LAST_LOAD_TIME
  3. ---------------------------------------------------------------------------- ----------------------------------------------------------------------------
  4. 2012-03-07/18:00:11                                                          2012-03-07/18:00:11
  5. 2012-03-07/18:00:11                                                          2012-03-08/00:01:23
复制代码


ok,知道了,多用CODE 模式。^_^

[ 本帖最后由 oradbguy 于 2012-3-8 16:00 编辑 ]

回复 只看该作者 道具 举报

7#
发表于 2012-3-8 16:51:48
一个child cursor 是   2012-03-07/18:00:11 生成的 , 而另一个 是 2012-03-08/00:01:23

跨越了last_analyzed 的 3月7日 22:00 , 可能是因为统计信息变化造成的 游标无法共享。

建议你 flush 一下shared_pool或者 将FULL TABLE SCAN的cursor 清除掉 ,参考 Oracle中清除游标缓存的几种方法:http://www.oracledatabase12g.com ... 96%B9%E6%B3%95.html

之后再观察该SQL 一段时间

回复 只看该作者 道具 举报

8#
发表于 2012-3-8 17:53:34
thanks alot

我再观察观察。谢谢ML

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-12-24 00:29 , Processed in 0.051413 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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