以下的文章主要是對Oracle數據庫的空間相關管理技巧的描述,我們都知道關於相關的連續空間是可以用以下的語句,查看Oracle數據庫中的自由空間,以下就是相關內容的具體介紹,望你會有所收獲。
- SQL > select * from dba_free_space
- where tablespace_name='SFSJTS'
- 2 order by block_id;
- TABLESPACE FILE_ID BLOCK_ID BYTESBLOCKS
- _NAME
- SFSJTS 6 133455 1064960 130
- SFSJTS 6 133719 1032192 126
- SFSJTS 6 133845 1064960 130
- SFSJTS 6 135275 1064960 130
- SFSJTS 6 135721 606208 74
- SFSJTS 6 139877 901120 110
- SFSJTS 6 143497 737280 90
- SFSJTS 6 220248 737280 90
- SFSJTS 6 246228 491520 60
- SFSJTS 6 261804 1064960 130
- 10 rows selected.
我們可以通過命令的結果來估計相鄰自由空間的真正數量。對每一行,用起始快的id(BLOCK_ID)加上自由塊(BLOCKS)的數量,如果其和與下一行的塊id(BLOCK_ID)相等,則此兩行是連續的。如上例第二行和第三行,133719+126=133845,而1338456+130!=135275,所以從block_id為133719開始,有126+130=256個block的連續空間。
在Oracle數據庫的後台,系統監視器(SMON)周期性地合並自由空間相鄰的塊,以得到更大的連續塊。而DBA可以用SQL命令來完成這個工作:
- alter tablespace tablespace_name coalesce;
Oracle空間管理對Oracle數據庫的工作性能有重要影響,其管理方法值得我們認真摸索研究。