在Oracle中,資料庫是由執行個體和實體儲存體結構組成的。而實體儲存體結構是指儲存在磁碟上的物理檔案,包括資料檔案(data file)、控制檔案(control file)、聯機重做日誌(online redo log)、參數檔案(spfile/pfile)、警告日誌(alert log)、追蹤檔案(trace file)等眾多作用不同的檔案所組成的。我們最關注的資料,則是儲存在資料檔案(data file)中。那我們在建立以及維護資料庫時,該如何規劃資料檔案的大小和數量呢?這裡面涉及較多的考量因素。主要有如下幾點:
1、作業系統的限制
資料庫是運行在作業系統之上的,作業系統是基礎,因此,作業系統所能支援的最大檔案容量和數量就成為資料庫所能支援的限制。但不同作業系統之間,這個限制也是不同的。
以下是較為常見的幾種作業系統對此的限制:
WINDOWS
最大資料區塊:16K
最大檔案數量:20000個(資料區塊2K時)/40000個(資料區塊4K時)/65536個(資料區塊為8K或16K時)
最大檔案容量:4GB(檔案系統為FAT時)/ 64GB(檔案系統為NTFS時)
UNIX和LINUX
最大資料區塊:32K (LINUX_X86為16K)
最大檔案數量:65534個
2、ORACLE資料庫的限制
每個資料庫可管理的最大檔案數量:65533個
每個資料表空間可管理的最大檔案數量:取決於作業系統可同時開啟的檔案數量。通常是1022個。
每個資料檔案的最大容量:該值等於 資料區塊大小 * 最大可管理的資料區塊數量
其中,資料區塊的大小最大不超過32K,一般取值是8K;可管理的資料區塊數量是2的22次方減1,約等於4M個塊。因此,對於一個資料區塊大小為8K的資料檔案,其最大不能超過32G。但是,若作業系統支援的單個檔案最大容量小於此值,則以作業系統的最大容量為限。
3、參數DB_FILES的限制
參數DB_FILES指定了一個執行個體可以建立的最大檔案數量。這個值可以被修改,但只有重啟執行個體後,才會生效。DB_FILES設定得過低,可能造成不成添加新的資料檔案的問題。設定得過高,會消耗更多的記憶體資源。
4、效能和便利性影響
a) 通過精心設計,將同一資料表空間內經常訪問的對象放置在不同的資料檔案中,並將這些資料檔案放置到不同的磁碟通道上,可以改善I/O輸送量。
b) 將經常改變的資料和不變的資料,放置到不同的資料檔案中,備份時,可以只對改變的資料檔案進行備份,從而減少備份和恢複的時間
註:從ORACLE 10g起,引入了大資料表空間的技術。所謂大資料表空間就是該資料表空間僅由1個資料檔案組成。其優點如下:
1、顯著增加了儲存容量。大資料表空間可管理的資料區塊數量由傳統的小資料表空間的2的22次方,提升到2的32次方。在同樣採用8K大小的資料區塊大小時,其最大可管理空間為32T。
2、減少了資料庫所需的資料檔案的數量。
3、簡化資料庫管理。