正在看的ORACLE教程是:Oracle資料庫的空間管理技巧。 在Oracle資料庫中,DBA可以通過觀測一定的表或視圖來瞭解當前空間的使用狀況,進而作出可能的調整決定。
一.資料表空間的自由空間
通過對錶空間的自由空間的觀察,可用來判斷分配給某個資料表空間的空間是太多還是不夠。請看下列的語句
可以看出,在FileNo為12的資料表空間RBS中,只有0.19%的分配空間未被使用,這個比例太小了,而在SYSTEM及TEMP等資料表空間中,高達80%以上的空間未被利用,對於生產型資料庫,這個資料表空間的設定有些偏高。
關於自由空間的管理,有下面的一些建議:
利用Export及Import命令卸出和裝入資料表空間可以釋放大量的空間,從而緩解增加另外的資料檔案的要求。
如果包含具有高插入(insert)和更新(update)活動的表的資料表空間中自由空間的比重下降到了15%以下,要為此資料表空間增加更多的空間。
對於一個基本是靜態表資料的資料表空間,如果有多於20%的自由空間,則可以考慮減少分配給它的檔案空間量。
減少SYSTEM資料表空間的空間量比較困難,因為那要重建資料庫。
[NextPage]
二 表及索引的擴充
A.為了防止表或索引被過分擴充,及時實現對資料庫的調整,使用者應當經常對有關對象進行觀察。
我們可以認為,擴充地區大於5個的表或索引為過分擴充(overextended)。請看下面的語句:
通過觀察, DBA可以及時發現問題並進行相應的處理。
我們可以利用export卸出表,然後刪除表,再利用import命令將表裝入,這樣,可以將不連續的地區合并成一個連續的空間。
B.如果使用者希望對錶的空間設定進行最佳化,例如,需要改變表EMP的initial參數,可以採用下面的方法:
1.在將EMP表卸出並刪除後執行imp命令時使用indexfile參數:
imp userid=scott/tiger file=emp.dmp indexfile=emp.sql Oracle把表和索引的建立資訊寫到指定的檔案,而不是把資料寫回。
1 3 4
[NextPage]
2.開啟emp.sql檔案:
對它進行編輯,去除"REM"等資訊,找到Initial參數,根據需要改變它。
3.在SQL*plus中執行emp.sql。
4.裝入資料:
需要注意的是,ignore參數必須設為Y.
C.可以用下面的語句來觀察表或索引距離達到最大擴充的狀況,“UNUSE”為距離達到最大擴充的值,在User_extents表中,extent_id是從0開始記述數的。
如果“UNUSE"小到一定的程度,我們就應該加以關注,進行適當的調整處理。
[NextPage]
三 關於連續空間
可以用下面的語句來查看資料庫中的自由空間:
我們可以通過命令的結果來估計相鄰自由空間的真正數量。對每一行,用起始快的id(BLOCK_ID)加上自由塊(BLOCKS)的數量,如果其和與下一行的塊id(BLOCK_ID)相等,則此兩行是連續的。如上例第二行和第三行,133719+126=133845,而1338456+130!=135275,所以從block_id為133719開始,有126+130=256個block的連續空間。
在Oracle資料庫的後台,系統監視器(SMON)周期性地合并自由空間相鄰的塊,以得到更大的連續塊。而DBA可以用SQL命令來完成這個工作:
Oracle空間管理對資料庫的工作效能有重要影響,其管理方法值得我們認真摸索研究。
上一頁