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

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

2135

积分

502

好友

184

主题
1#
发表于 2012-3-8 22:34:46 | 查看: 5067| 回复: 1
网友提问, Question:

alter system flush shared_pool 刷新共享池后shared_pool内的内存碎片memory fragement 会合并吗
下载专业ORACLE数据库恢复工具PRM-DUL  For Oracle http://www.parnassusdata.com/zh-hans/emergency-services

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638  QQ: 47079569   
2#
发表于 2012-3-8 22:50:33
我原本以为不会, 做了一次测试发现是会的


SQL> select * from V$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production


SQL> select a.ksppinm "Parameter",
  2  b.ksppstvl "Session Value",
  3  c.ksppstvl "Instance Value"
  4  from sys.x$ksppi a, sys.x$ksppcv b, sys.x$ksppsv c
  5  where a.indx = b.indx and a.indx = c.indx
  6  and a.ksppinm like '%kghdsidx%';

Parameter
--------------------------------------------------------------------------------
Session Value
--------------------------------------------------------------------------------
Instance Value
--------------------------------------------------------------------------------
_kghdsidx_count
1
1

_kghdsidx_count=1 只有一个 shared pool subpool


begin
for i in 1..10000 loop
execute immediate 'select 1 from dual where 1='||i;
end loop;
end;
/
==> 生成大量非共享cursor
  1. ttitle off
  2. set heading on
  3. set feedback on

  4. select '0 (<140)' BUCKET,
  5.        KSMCHCLS,
  6.        KSMCHIDX,
  7.        10 * trunc(KSMCHSIZ / 10) "From",
  8.        count(*) "Count",
  9.        max(KSMCHSIZ) "Biggest",
  10.        trunc(avg(KSMCHSIZ)) "AvgSize",
  11.        trunc(sum(KSMCHSIZ)) "Total"
  12.   from x$ksmsp
  13. where KSMCHSIZ < 140
  14.    and KSMCHCLS = 'free'
  15. group by KSMCHCLS, KSMCHIDX, 10 * trunc(KSMCHSIZ / 10)
  16. UNION ALL
  17. select '1 (140-267)' BUCKET,
  18.        KSMCHCLS,
  19.        KSMCHIDX,
  20.        20 * trunc(KSMCHSIZ / 20),
  21.        count(*),
  22.        max(KSMCHSIZ),
  23.        trunc(avg(KSMCHSIZ)) "AvgSize",
  24.        trunc(sum(KSMCHSIZ)) "Total"
  25.   from x$ksmsp
  26. where KSMCHSIZ between 140 and 267
  27.    and KSMCHCLS = 'free'
  28. group by KSMCHCLS, KSMCHIDX, 20 * trunc(KSMCHSIZ / 20)
  29. UNION ALL
  30. select '2 (268-523)' BUCKET,
  31.        KSMCHCLS,
  32.        KSMCHIDX,
  33.        50 * trunc(KSMCHSIZ / 50),
  34.        count(*),
  35.        max(KSMCHSIZ),
  36.        trunc(avg(KSMCHSIZ)) "AvgSize",
  37.        trunc(sum(KSMCHSIZ)) "Total"
  38.   from x$ksmsp
  39. where KSMCHSIZ between 268 and 523
  40.    and KSMCHCLS = 'free'
  41. group by KSMCHCLS, KSMCHIDX, 50 * trunc(KSMCHSIZ / 50)
  42. UNION ALL
  43. select '3-5 (524-4107)' BUCKET,
  44.        KSMCHCLS,
  45.        KSMCHIDX,
  46.        500 * trunc(KSMCHSIZ / 500),
  47.        count(*),
  48.        max(KSMCHSIZ),
  49.        trunc(avg(KSMCHSIZ)) "AvgSize",
  50.        trunc(sum(KSMCHSIZ)) "Total"
  51.   from x$ksmsp
  52. where KSMCHSIZ between 524 and 4107
  53.    and KSMCHCLS = 'free'
  54. group by KSMCHCLS, KSMCHIDX, 500 * trunc(KSMCHSIZ / 500)
  55. UNION ALL
  56. select '6+ (4108+)' BUCKET,
  57.        KSMCHCLS,
  58.        KSMCHIDX,
  59.        1000 * trunc(KSMCHSIZ / 1000),
  60.        count(*),
  61.        max(KSMCHSIZ),
  62.        trunc(avg(KSMCHSIZ)) "AvgSize",
  63.        trunc(sum(KSMCHSIZ)) "Total"
  64.   from x$ksmsp
  65. where KSMCHSIZ >= 4108
  66.    and KSMCHCLS = 'free'
  67. group by KSMCHCLS, KSMCHIDX, 1000 * trunc(KSMCHSIZ / 1000)
  68. /


  69. BUCKET         KSMCHCLS   KSMCHIDX       From      Count    Biggest    AvgSize      Total
  70. -------------- -------- ---------- ---------- ---------- ---------- ---------- ----------
  71. 0 (<140)       free              1         50         85         56         56       4760
  72. 0 (<140)       free              1        110         73        112        112       8176
  73. 0 (<140)       free              1         70         48         72         72       3456
  74. 0 (<140)       free              1         80         86         88         84       7248
  75. 0 (<140)       free              1        120        135        128        125      16904
  76. 0 (<140)       free              1         60        162         64         64      10368
  77. 0 (<140)       free              1         40        206         48         43       8992
  78. 0 (<140)       free              1         90         70         96         96       6720
  79. 0 (<140)       free              1        130         73        136        136       9928
  80. 0 (<140)       free              1        100         60        104        104       6240
  81. 1 (140-267)    free              1        140        113        152        147      16640
  82. 1 (140-267)    free              1        200         34        216        200       6824
  83. 1 (140-267)    free              1        240          9        256        247       2224
  84. 1 (140-267)    free              1        220        181        232        231      41872
  85. 1 (140-267)    free              1        260         31        264        264       8184
  86. 1 (140-267)    free              1        160         77        168        160      12360
  87. 2 (268-523)    free              1        450          1        472        472        472
  88. 2 (268-523)    free              1        300         57        344        330      18824
  89. 2 (268-523)    free              1        350        449        392        364     163720
  90. 2 (268-523)    free              1        400          1        408        408        408
  91. 2 (268-523)    free              1        250         17        296        284       4840
  92. 3-5 (524-4107) free              1        500          1        544        544        544
  93. 3-5 (524-4107) free              1       3000          1       3336       3336       3336
  94. 3-5 (524-4107) free              1       1000          1       1112       1112       1112
  95. 6+ (4108+)     free              1       8000         40       8712       8590     343600
复制代码
可以看到以上 bucket 0 (<140)  中有不少 size小于149 bytes 的小的free chunk


之后我们alter sytem flush shared_pool ;
  1. SQL> alter system flush shared_pool;

  2. System altered.

  3. SQL> ttitle off
  4. SQL> set heading on
  5. SQL> set feedback on
  6. SQL>
  7. SQL> select '0 (<140)' BUCKET,
  8.   2         KSMCHCLS,
  9.   3         KSMCHIDX,
  10.   4         10 * trunc(KSMCHSIZ / 10) "From",
  11.   5         count(*) "Count",
  12.   6         max(KSMCHSIZ) "Biggest",
  13.   7         trunc(avg(KSMCHSIZ)) "AvgSize",
  14.   8         trunc(sum(KSMCHSIZ)) "Total"
  15.   9    from x$ksmsp
  16. 10   where KSMCHSIZ < 140
  17. 11     and KSMCHCLS = 'free'
  18. 12   group by KSMCHCLS, KSMCHIDX, 10 * trunc(KSMCHSIZ / 10)
  19. 13  UNION ALL
  20. 14  select '1 (140-267)' BUCKET,
  21. 15         KSMCHCLS,
  22. 16         KSMCHIDX,
  23. 17         20 * trunc(KSMCHSIZ / 20),
  24. 18         count(*),
  25. 19         max(KSMCHSIZ),
  26. 20         trunc(avg(KSMCHSIZ)) "AvgSize",
  27. 21         trunc(sum(KSMCHSIZ)) "Total"
  28. 22    from x$ksmsp
  29. 23   where KSMCHSIZ between 140 and 267
  30. 24     and KSMCHCLS = 'free'
  31. 25   group by KSMCHCLS, KSMCHIDX, 20 * trunc(KSMCHSIZ / 20)
  32. 26  UNION ALL
  33. 27  select '2 (268-523)' BUCKET,
  34. 28         KSMCHCLS,
  35.        KSMCHIDX,
  36. 29   30         50 * trunc(KSMCHSIZ / 50),
  37. 31         count(*),
  38. 32         max(KSMCHSIZ),
  39. 33         trunc(avg(KSMCHSIZ)) "AvgSize",
  40. 34         trunc(sum(KSMCHSIZ)) "Total"
  41. 35    from x$ksmsp
  42. 36   where KSMCHSIZ between 268 and 523
  43. 37     and KSMCHCLS = 'free'
  44. 38   group by KSMCHCLS, KSMCHIDX, 50 * trunc(KSMCHSIZ / 50)
  45. 39  UNION ALL
  46. 40  select '3-5 (524-4107)' BUCKET,
  47. 41         KSMCHCLS,
  48. 42         KSMCHIDX,
  49. 43         500 * trunc(KSMCHSIZ / 500),
  50. 44         count(*),
  51.        max(KSMCHSIZ),
  52. 45   46         trunc(avg(KSMCHSIZ)) "AvgSize",
  53. 47         trunc(sum(KSMCHSIZ)) "Total"
  54. 48    from x$ksmsp
  55. 49   where KSMCHSIZ between 524 and 4107
  56. 50     and KSMCHCLS = 'free'
  57. 51   group by KSMCHCLS, KSMCHIDX, 500 * trunc(KSMCHSIZ / 500)
  58. 52  UNION ALL
  59. 53  select '6+ (4108+)' BUCKET,
  60. 54         KSMCHCLS,
  61. 55         KSMCHIDX,
  62. 56         1000 * trunc(KSMCHSIZ / 1000),
  63. 57         count(*),
  64. 58         max(KSMCHSIZ),
  65. 59         trunc(avg(KSMCHSIZ)) "AvgSize",
  66. 60         trunc(sum(KSMCHSIZ)) "Total"
  67. 61    from x$ksmsp
  68. 62   where KSMCHSIZ >= 4108
  69. 63     and KSMCHCLS = 'free'
  70. group by KSMCHCLS, KSMCHIDX, 1000 * trunc(KSMCHSIZ / 1000)
  71. 64   65  /

  72. BUCKET         KSMCHCLS   KSMCHIDX       From      Count    Biggest    AvgSize      Total
  73. -------------- -------- ---------- ---------- ---------- ---------- ---------- ----------
  74. 0 (<140)       free              1        110         10        112        112       1120
  75. 0 (<140)       free              1         50          4         56         56        224
  76. 0 (<140)       free              1         80          9         88         85        768
  77. 0 (<140)       free              1         70          5         72         72        360
  78. 0 (<140)       free              1         40         36         48         44       1616
  79. 0 (<140)       free              1        120         13        128        123       1608
  80. 0 (<140)       free              1         60         10         64         64        640
  81. 0 (<140)       free              1         90          3         96         96        288
  82. 0 (<140)       free              1        130         18        136        136       2448
  83. 0 (<140)       free              1        100          6        104        104        624
  84. 1 (140-267)    free              1        200         31        216        202       6280
  85. 1 (140-267)    free              1        220         47        232        230      10824
  86. 1 (140-267)    free              1        240         13        256        246       3200
  87. 1 (140-267)    free              1        140         16        152        148       2368
  88. 1 (140-267)    free              1        260          7        264        264       1848
  89. 1 (140-267)    free              1        160         97        176        165      16080
  90. 1 (140-267)    free              1        180         27        192        189       5128
  91. 2 (268-523)    free              1        450         28        496        480      13448
  92. 2 (268-523)    free              1        300         26        344        327       8504
  93. 2 (268-523)    free              1        400         35        448        419      14688
  94. 2 (268-523)    free              1        350         54        392        377      20392
  95. 2 (268-523)    free              1        500         20        520        510      10216
  96. 2 (268-523)    free              1        250         22        296        284       6256
  97. 3-5 (524-4107) free              1       2500         64       2992       2783     178128
  98. 3-5 (524-4107) free              1       1500         69       1992       1732     119576
  99. 3-5 (524-4107) free              1       2000         84       2488       2266     190344
  100. 3-5 (524-4107) free              1       3500        160       3992       3720     595280
  101. 3-5 (524-4107) free              1        500         38        552        535      20344
  102. 3-5 (524-4107) free              1       4000         28       4080       4048     113360
  103. 3-5 (524-4107) free              1       3000        163       3496       3319     541072
  104. 3-5 (524-4107) free              1       1000         28       1496       1475      41304
  105. 6+ (4108+)     free              1      18000         34      18920      18481     628376
  106. 6+ (4108+)     free              1      40000          3      40848      40514     121544
  107. 6+ (4108+)     free              1       9000         84       9992       9419     791248
  108. 6+ (4108+)     free              1      13000         56      13976      13447     753072
  109. 6+ (4108+)     free              1      21000         18      21936      21571     388280
  110. 6+ (4108+)     free              1      32000          2      32992      32516      65032
  111. 6+ (4108+)     free              1      52000          2      52456      52400     104800
  112. 6+ (4108+)     free              1      17000         26      17824      17351     451136
  113. 6+ (4108+)     free              1      59000          1      59856      59856      59856
  114. 6+ (4108+)     free              1      50000          2      50376      50232     100464
  115. 6+ (4108+)     free              1      19000         25      19888      19518     487968
  116. 6+ (4108+)     free              1      23000         22      23920      23395     514696
  117. 6+ (4108+)     free              1      15000         41      15976      15480     634720
  118. 6+ (4108+)     free              1      31000          6      31784      31497     188984
  119. 6+ (4108+)     free              1      43000          1      43192      43192      43192
  120. 6+ (4108+)     free              1       5000        116       5992       5397     626152
  121. 6+ (4108+)     free              1       6000         88       6992       6497     571736
  122. 6+ (4108+)     free              1      30000          3      30712      30552      91656
  123. 6+ (4108+)     free              1      24000         22      24984      24493     538864
  124. 6+ (4108+)     free              1      64000          1      64688      64688      64688
  125. 6+ (4108+)     free              1      38000          3      38776      38440     115320
  126. 6+ (4108+)     free              1      47000          2      47928      47520      95040
  127. 6+ (4108+)     free              1       4000        155       4976       4447     689304
  128. 6+ (4108+)     free              1      14000         60      14992      14559     873552
  129. 6+ (4108+)     free              1      39000          2      39864      39672      79344
  130. 6+ (4108+)     free              1      35000          2      35600      35400      70800
  131. 6+ (4108+)     free              1      34000          2      34800      34684      69368
  132. 6+ (4108+)     free              1      36000          2      36544      36528      73056
  133. 6+ (4108+)     free              1      11000         99      11968      11505    1139072
  134. 6+ (4108+)     free              1      10000         66      10944      10520     694376
  135. 6+ (4108+)     free              1      22000         20      22936      22395     447912
  136. 6+ (4108+)     free              1      28000          9      28816      28359     255232
  137. 6+ (4108+)     free              1      26000         11      26640      26328     289616
  138. 6+ (4108+)     free              1      44000          2      44528      44368      88736
  139. 6+ (4108+)     free              1      37000          3      37464      37160     111480
  140. 6+ (4108+)     free              1      42000          2      42072      42064      84128
  141. 6+ (4108+)     free              1       8000        201       8992       8491    1706776
  142. 6+ (4108+)     free              1       7000        133       7992       7510     998840
  143. 6+ (4108+)     free              1      25000         20      25960      25420     508400
  144. 6+ (4108+)     free              1      20000         20      20960      20547     410952
  145. 6+ (4108+)     free              1      27000          8      27984      27460     219680
  146. 6+ (4108+)     free              1      29000          8      29952      29491     235928
  147. 6+ (4108+)     free              1      46000          1      46832      46832      46832
  148. 6+ (4108+)     free              1      12000       7894      12992      12598   99451552
  149. 6+ (4108+)     free              1      53000          2      53448      53404     106808
  150. 6+ (4108+)     free              1      16000         57      16928      16476     939144
  151. 6+ (4108+)     free              1      33000          3      33872      33493     100480
  152. 6+ (4108+)     free              1      41000          2      41296      41224      82448
复制代码




可以看到 flush shared_pool之后 bucket 0 (<140) 中的小chunk明显变少 ,
而  bucket 6+ (4108+) 的 大尺寸 memory chunk 明显增加 ,说明 在 flush out  freeable 和 unpinned recreatable chunk 后, FREE LIST上确实发生合并(coalesce), 多个小的连续的free chunk 可以合并成较大的 free chunk。





SQL> oradebug setmypid;
Statement processed.
SQL> oradebug dump heapdump 536870914;
Statement processed.
SQL> oradebug tracefile_name;
/s01/admin/G10R21/udump/g10r21_ora_4541.trc

直接观察 FREE LIST也可以发现这一点:

  1. REE LISTS:
  2. Bucket 0 size=32
  3. Bucket 1 size=40
  4.   Chunk        080c517b0 sz=       40    free      "               "
  5.   Chunk        07f7a3b10 sz=       40    free      "               "
  6.   Chunk        07f444340 sz=       40    free      "               "
  7.   Chunk        08095b458 sz=       40    free      "               "
  8.   Chunk        07f8765b8 sz=       40    free      "               "
  9.   Chunk        0801f0300 sz=       40    free      "               "
  10.   Chunk        080d2a9b0 sz=       40    free      "               "
  11.   Chunk        07f69cd90 sz=       40    free      "               "
  12.   Chunk        080d52bd8 sz=       40    free      "               "
  13.   Chunk        07f8f8788 sz=       40    free      "               "
  14.   Chunk        07f1b3ee0 sz=       40    free      "               "
  15.   Chunk        07ef98bd8 sz=       40    free      "               "
  16.   Chunk        080151360 sz=       40    free      "               "
  17.   Chunk        0810a5068 sz=       40    free      "               "
  18.   Chunk        080657200 sz=       40    free      "               "
  19.   Chunk        0801e0f88 sz=       40    free      "               "
  20.   Chunk        0807ec3c8 sz=       40    free      "               "
  21.   Chunk        07fa767f0 sz=       40    free      "               "
  22.   Chunk        0810d3fd0 sz=       40    free      "               "
  23.   Chunk        080119dc0 sz=       40    free      "               "
  24.   Chunk        080fa3678 sz=       40    free      "               "
  25.   Chunk        081108140 sz=       40    free      "               "
  26.   Chunk        081f30f28 sz=       40    free      "               "

  27. ............................

  28. MORE LARGE FREE CHUNK Below:
复制代码

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-11-15 10:24 , Processed in 0.057421 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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