Oracle文件系統對於很多剛接觸Oracle數據庫的新人來說,可能還是一個陌生的概念。下面就為您詳細介紹Oracle文件系統機制,希望可以對您學習Oracle有所幫助。
在Oracle中,可以用4種Oracle文件系統機制存儲你的數據。這裡強調了“你的數據”,是指你的數據字典、redo記錄、undo記錄、表、索引、LOB等,也就是你自己每天關心的數據。簡單地講,這包括:
“Cooked”操作系統(OS)文件系統
這些文件就像字處理文檔一樣放在文件系統中。在Windows 資源管理器中可以看到這些文件,在UNIX上,可以通過ls命令看到這些文件。可以使用簡單的OS工具(如Windows上的xcopy或UNIX上的cp)來移動文件。從歷史上看,Cooked OS文件一直是Oracle中存儲數據的“最流行”的方法,不過我個人認為,隨著ASM(稍後再詳細說明)的引入,這種情況會有所改觀。Cooked文件系統(“加工”文件系統或“熟”文件系統)通常也會緩存,這說明在你讀寫磁盤時,OS會為你緩存信息。
原始分區(raw partitions,也稱裸分區)
這不是文件,而是原始磁盤。不能用ls來查看;不能在Windows資源管理器中查看其內容。它們就是磁盤上的一些大扇區,上面沒有任何文件系統。對Oracle來說,整個原始分區就是一個大文件。這與cooked文件系統不同,cooked文件系統上可能有幾十個甚至數百個數據庫數據文件。目前,只有極少數Oracle安裝使用原始分區,因為原始分區的管理開銷很大。原始分區不是緩沖設備,所完成的所有I/O都是直接I/O,對數據沒有任何OS緩沖(不過,對於數據庫來說,這通常是一個優點)。
自動存儲管理(Automatic Storage Management,ASM)
這是 Oracle 10gRelease 1 的一個新特性(標准版和企業版都提供了這個特性)。ASM是專門為數據庫設計的文件系統。可以簡單地把它看作一個數據庫文件系統。在這個文件系統上,不是把購物清單存儲在文本文件中;這裡只能存儲與數據庫相關的信息:你的表、索引、備份、控制文件、參數文件、重做日志、歸檔文件等。不過,即使是ASM,也同樣存在著相應的數據文件;從概念上講,數據庫仍存儲在文件中,不過現在的文件系統是ASM。ASM設計成可以在單機環境或者集群環境中工作。
集群文件系統
這個文件系統專用於RAC(集群)環境,看上去有些像由集群環境中多個節點(計算機)共享的cooked文件系統。傳統的cooked文件系統只能由集群環境中的一台計算機使用。所以,盡管可以在集群中的多個節點之間使用NFS裝載或Samba共享一個cooked文件系統(Samba與NFS類似,可以在Windows/UNIX環境之間共享磁盤),但這會導致一損俱損。如果安裝有文件系統並提供共享的節點失敗,這個文件系統都將不可用。Oracle集群文件系統(Oracle Cluster File System,OCFS)是Oracle在這個領域推出的一個新的文件系統,目前只能在Windows和Linux上使用。其他第三方開發商也提供了一些經認證的集群文件系統,也可以用於Oracle。集群文件系統讓cooked文件系統的優點延伸到了集群環境中。
數據庫可能包含來自上述所有文件系統中的文件,你不必只選其中的一個。在你的數據庫中,可能部分數據存儲在一個傳統的cooked文件系統中,有些在原始分區上,有一些在ASM中,還有一些在集群文件系統中。這樣就能很容易地切換技術,或者只是涉及一個新的文件系統,而不必把整個數據庫都搬到這個文件系統中。