三、关于连续空间 可以用下面的语句来查看Oracle数据库中的自由空间:
) u# g3 i# X6 k, @; V' | 1.SQL > select * from dba_free_space
5 ?3 Z& [1 r& k0 g 2.where tablespace_name='SFSJTS' F( M o0 a! K
3.2 order by block_id;
6 U3 L0 v2 b% a* R/ s) l 4.TABLESPACE FILE_ID BLOCK_ID BYTESBLOCKS
0 B4 \' L( X5 U9 e 5._NAME
2 _, j1 U+ G! P; ?3 S 6.SFSJTS 6 133455 1064960 1302 M' L6 T8 T. G; J; Z
7.SFSJTS 6 133719 1032192 1264 B" T( @2 t$ P9 A8 {6 l$ M
8.SFSJTS 6 133845 1064960 130 a" A* Z9 a5 V! Q3 V
9.SFSJTS 6 135275 1064960 130
) h8 V0 F7 [5 p0 z; z 10.SFSJTS 6 135721 606208 74: I7 z" u( W, l6 }; H
11.SFSJTS 6 139877 901120 110+ x* }9 S1 B% B6 p' Q& f, P
12.SFSJTS 6 143497 737280 90外语学习网: f# g9 h {, r0 u
13.SFSJTS 6 220248 737280 90: }5 ?2 J) r* ?3 [) P G/ R6 d
14.SFSJTS 6 246228 491520 60
: B- Q3 p, r6 y* q6 F0 G9 @ Q 15.SFSJTS 6 261804 1064960 1306 V# X# [) [7 n" w
16.10 rows selected.
' e/ W( {! `' P5 F: n 我们可以通过命令的结果来估计相邻自由空间的真正数量。对每一行,用起始快的id(BLOCK_ID)加上自由块(BLOCKS)的数量,如果其和与下一行的块id(BLOCK_ID)相等,则此两行是连续的。如上例第二行和第三行,133719+126=133845,而1338456+130!=135275,所以从block_id为133719开始,有126+130=256个block的连续空间。' W: n$ P, l* O3 `
在Oracle数据库的后台,系统监视器(SMON)周期性地合并自由空间相邻的块,以得到更大的连续块。而DBA可以用SQL命令来完成这个工作:
: v# p- a D! q) T 1.alter tablespace tablespace_name coalesce;
# v7 F3 m8 q5 A/ V( m9 D7 j Oracle空间管理对数据库的工作性能有重要影响,其管理方法值得我们认真摸索研究。 |