三、关于连续空间 可以用下面的语句来查看Oracle数据库中的自由空间:
* l7 D* p+ _# E/ f1 m, v 1.SQL > select * from dba_free_space* s+ r, u- G+ G; Y5 \- m
2.where tablespace_name='SFSJTS'
$ ]" n# h/ K$ ~ 3.2 order by block_id;
' H1 n; _: @2 W 4.TABLESPACE FILE_ID BLOCK_ID BYTESBLOCKS& U% j( N" l4 M! ]
5._NAME
, U9 H4 f; K6 } 6.SFSJTS 6 133455 1064960 130- _2 p7 X5 W" s! e7 h, z
7.SFSJTS 6 133719 1032192 126) c9 u& Y8 Y' y0 h0 ~/ ^
8.SFSJTS 6 133845 1064960 130
5 A/ G3 G' ?% r- m% V" I 9.SFSJTS 6 135275 1064960 130
7 f: U7 V; D! `: q L' H7 V# H 10.SFSJTS 6 135721 606208 74) d# z6 |. O* P1 J4 {# y
11.SFSJTS 6 139877 901120 110
0 b! D4 [- P& `/ P3 S4 c 12.SFSJTS 6 143497 737280 90外语学习网
, g% \) P: P( h 13.SFSJTS 6 220248 737280 90
{, k h1 c% d8 \0 n) J 14.SFSJTS 6 246228 491520 60
2 W- f/ C/ o% z2 Z 15.SFSJTS 6 261804 1064960 130$ M: `. i1 L6 S# @* c8 `
16.10 rows selected. ?$ m8 u* \) R; e/ V
我们可以通过命令的结果来估计相邻自由空间的真正数量。对每一行,用起始快的id(BLOCK_ID)加上自由块(BLOCKS)的数量,如果其和与下一行的块id(BLOCK_ID)相等,则此两行是连续的。如上例第二行和第三行,133719+126=133845,而1338456+130!=135275,所以从block_id为133719开始,有126+130=256个block的连续空间。
& j. J; V: u. h* d 在Oracle数据库的后台,系统监视器(SMON)周期性地合并自由空间相邻的块,以得到更大的连续块。而DBA可以用SQL命令来完成这个工作:; f9 o8 U3 d y; I
1.alter tablespace tablespace_name coalesce;
* O# }/ }8 @+ K Oracle空间管理对数据库的工作性能有重要影响,其管理方法值得我们认真摸索研究。 |