基本介紹
定義
數據檔案(一般是指資料庫的檔案)如:每一個ORACLE資料庫有一個或多個物理的數據檔案(data file)。邏輯資料庫結構(如表、索引)的數據物理地存儲在資料庫的數據檔案中。
特徵
一個數據檔案僅與一個資料庫聯繫,一個資料庫的數據檔案包含全部資料庫數據。一旦建立,數據檔案不能改變大小。一個表空間(資料庫存儲的邏輯單位)由一個或多個數據檔案組成。數據檔案中的數據在需要時可以讀取並存儲在ORACLE記憶體儲區中。例如:用戶要存取資料庫一表的某些數據,如果請求信息不在資料庫的記憶體存儲區內,則從相應的數據檔案中讀取並存儲在記憶體。當修改和插入新數據時,不必立刻寫入數據檔案。為了減少磁碟輸出的總數,提高性能,數據存儲在記憶體,然後由 ORACLE後台進程DBWR決定如何將其寫入到相應的數據檔案。
可以改變已有數據檔案的大小的。
重新調整數據檔案的大小:
SQL> alter database datafile '/u1/oradata/userdata_001.ora ' resize 50M; --Unix中
SQL> alter database datafile 'c:\oradata\userdata_002.ora ' resize 50M; --Windows NT中
主要數據檔案
主要數據檔案由主檔案組中的初始數據檔案組成。檔案組是經過命名的數據檔案集合。包含所有資料庫系統表,以及沒有賦給自定義檔案組的對象和數據。主要數據檔案是資料庫的起始點,它指向資料庫中的其他檔案。每一個資料庫都有一個主要數據檔案和一個主檔案組,主要數據檔案的擴展名是.mdf 。
創建檔案
on primary -- 默認就屬於primary檔案組,可省略
(
/*--數據檔案的具體描述--*/
name="資料庫名稱_data", -- 主數據檔案的邏輯名稱
filename="所存位置:\資料庫名稱_data.mdf", -- 主數據檔案的物理名稱
size=數值mb, --主數據檔案的初始大小
maxsize=數值mb, -- 主數據檔案增長的最大值
filegrowth=數值%--主數據檔案的增長率
)
恢復技術
在進行硬碟數據恢復時,如果每次都從頭到尾地進行掃描,需要耗費大量的時間,而且恢復的數據大部分是不需要的。為了節約時間提高效率,應對特定的重要數據檔案進行恢復。從硬碟啟動及檔案讀寫的原理出發,分析檔案被修改或刪除時作業系統所做的操作,對比分析檔案分配表(FAT)和檔案目錄表(FDT)在特定檔案修改或刪除時產生的變化,針對現有的數據恢復技術無法自動恢復不連續簇檔案的問題,通過FAT表內連續簇的分布規律來進行特定檔案恢復。
檔案丟失原因
檔案數據丟失的原因主要分兩大類,一類是硬碟無法啟動或損壞,從硬碟啟動到檔案讀寫,這一過程中涉及到五個環節,任何一個環節出問題都可能導致檔案數據丟失,可以針對每一個環節進行恢復,確保檔案能夠讀寫成功。另一類是人為地誤操作導致。
硬碟無法讀取檔案的分析與恢復
硬碟從啟動到讀取其中的檔案,這一過程涉及到五個環節:讀取主引導扇區(Boot Sector)、讀取作業系統引導記錄(DBR)、讀取檔案目錄表(FDT)、讀取檔案分配表(FAT)、 讀取檔案數據存儲區。其過程如圖1所示:
在開機加電自檢後,CPU 從內在地址 0ffff:0000 處開始執行,將硬碟第一個扇區(0面0磁軌1扇區)讀入記憶體地址 0000:7c00 處,然後執行 MBR中的程式,即在主分區表(DPT)中搜尋活動分區,找到 DBR 進行作業系統引導,從 DBR 中找到 BPB 中記錄的本分區的起始扇區、結束扇區、檔案存儲格式、根目錄等等信息,並進入系統,在成功進入作業系統後,讀寫某一個檔案時,需要先從檔案目錄表(FDT)中找到該檔案的目錄項,獲取該檔案的起始簇號,並通過檔案分配表(FAT)中的相應簇號信息找到下一簇號,直至檔案結束,然後到數據存儲區按這一系列簇號進行數據讀寫。這個過程中的任何一個環節出問題,都會導致檔案讀取失敗,因此,可以針對每一個環節對硬碟進行恢復。
誤操作丟失檔案的分析與恢復
針對一個特定的檔案,當出現誤操作致使檔案丟失時,如誤刪除、格式化等,檔案的數據並沒有丟失,只是修改了 FDT 和 FAT 等地方的相關項,所以,只要採取相應的措施, 就可以將誤操作丟失的檔案恢復。這裡對檔案的新建、修改和刪除操作進行實驗,通過 winhex 實時觀察硬碟在上述檔案操作時發生的變化,並分析如何對檔案進行恢復。當檔案內容被修改時,比如內容擴充,系統會自動地從 FAT 中找到沒有使用的簇,並將其填入擴充的內容,同時在 FAT表里進行標記,先將原檔案的最後一個簇用擴充的內容填滿,然後連結至剩餘新內容的第一個簇,並在檔案結束時標記為結束簇,以此維持該檔案的鏈式結構。而在 FDT 目錄項中,除了檔案大小和修改時間等信息發生變化外,其他信息如起始簇號信息不變。
針對不連續簇檔案的恢復
在實驗過程中我們發現,當檔案較大,利用的硬碟空間不連續時,用一般的數據恢復軟體如EasyRecovery,FinalData 等進行恢復,往往得不到完整的檔案,原因在於它們都只是從 FDT 項中讀取到起始簇號和檔案大小,然後去數據區對應的起始簇開始複製與檔案大小相同的長度的數據,並沒有考慮檔案的簇沒有連在一起的情況。而這種情況目前尚沒有統一的解決方案,本文在實驗中嘗試找到這種檔案的簇在分配和刪除時的規律,進行一定條件下的檔案完整恢復。系統在對檔案進行分配空間時,先遵循力爭完整的規則,若進行檔案擴充時,擴充的新內容也力爭完整地放在一塊區域,因此,對於擴充的檔案,其對應的 FAT 表也是由不同的整塊整塊區域組成的。在數據密度較大的硬碟區域,當刪除一個不連續簇的檔案時(以兩個簇塊兒的檔案為例),FAT 表里對應的表項就會很有規律地清零。
3D列印中的套用
3D 列印中的數據檔案格式主要分為 2 類:CAD 三維數據檔案格式和二維層片檔案格式。CAD 三 維 數 據 文 件 格 式 包 括:STL(stereolithography)、STEP(standard for the exchange ofproduct modal data )、 IGES ( initialgraphicsexchange specification )、 LEAF( layer exchangeASCII format )、RPI( rapid prototypinginterface)、LMI(layer manufacturing interface)等;二維層片檔案格式包括:SLC(stereo lithographycontour)、CLI(common layer interface)、HPGL(Hewlett-Packard graphics language)等。 其中 STL是最早用於 CAD與CAPP間數據交換的檔案格式,並且得到了廣泛的套用。目前,3D 列印系統大部分都是基於 STL 格式設計的。