oracle 控制文件 數據文件 日誌文件

Oracle幾種文件的作用

1、控制文件 (Control files)

參數文件init.ora 記錄了控制文件的位置,控制文件是一個非常小的二進制文件,最大可以增長到64MB,控制文件包括如下主要信息:
·數據庫的名字,檢查點信息,數據庫創建的時間戳
·所有的數據文件,聯機日誌文件,歸檔日誌文件信息
·備份信息等
有了這些信息,Oracle 就知道那些文件是數據文件,現在的重做日誌文件是哪些,這些都是系統啓動和運行的基本條件,所以他是Oracle 運行的根本。如果沒有控制文件系統是不可能啓動的。控制文件是非常重要的,一般採用多個鏡相複製來保護控制文件,或採用RAID 來保護控制文件。控制文件的丟失,將使數據庫的恢復變的很複雜。控制文件信息可以從V$Controlfile 中查詢獲得

2、數據文件(Data files)

數據文件的詳細信息記載在控制文件中
可以通過如下方式查看數據文件
SQL> select name from v$datafile;
數據文件是ORACLE 中最重要的物理文件,直接記錄了用戶數據。按照使用上的不同,可以把數據文件分成如下幾類:
·系統數據文件
·回滾數據文件
·臨時數據文件
·用戶數據文件
以上各類文件分別屬於不同性質的表空間。

3、重做日誌文件(Redo files)

用戶對數據庫進行的任何操作都會記錄在重做日誌文件。在瞭解重做日誌之前必須瞭解重做日誌的兩個概念,重做日誌組和重做日誌組成員(Member),一個 數據庫中至少要有兩個日誌組文件,一組寫完後再寫另一組,即輪流寫。每個日誌組中至少有一個日誌成員,一個日誌組中的多個日誌成員是鏡相關係,有利於日誌 文件的保護,因爲日誌文件的損壞,特別是當前聯機日誌的損壞,對數據庫的影響是巨大的。
聯機日誌組的交換過程叫做切換,需要特別注意的是,日誌切換在一個優化效果不好的數據庫中會引起臨時的“掛起”。掛起大致有兩種情況:
·在歸檔情況下,需要歸檔的日誌來不及歸檔,而聯機日誌又需要被重新利用
·檢查點事件還沒有完成(日誌切換引起檢查點),而聯機日誌需要被重新利用

4、歸檔日誌文件(Archived files)

Oracle 可以運行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當然你就不會有歸檔日誌,但是,你的系統將不會是一個實用系統,特別是不能用於生產系 統,因爲你可能會丟失數據。但是在歸檔模式中,爲了保存用戶的所有修改,在重做日誌文件切換後和被覆蓋之間系統將他們另外保存成一組連續的文件系列,該文 件系列就是歸檔日誌文件。
有人或許會說,歸檔日誌文件佔領我大量的硬盤空間,其實,具體想一想,你是願意浪費一點磁盤空間來保護你的數據,還是願意丟失你的數據呢?顯而義見,我們 需要保證我們的數據的安全性。其實,歸檔並不是一直佔領你的磁盤空間,你可以把她備份到磁帶上,或刪除上一次完整備份前的所有日誌文件。通過 v$archived_log 和v$log_history 可以查看歸檔日誌文件的信息。

1、表空間(tablespace)
表空間是數據庫中的基本邏輯結構,一系列數據文件的集合。一個表空間可以包含多個數據文件,但是一個數據文件只能屬於一個表空間。
在8i 以前,表空間的管理類型只有一種,被稱爲字典管理表空間(DMT),即在數據字典中管理表空間中的空間的分配。在8i
以後的版本,爲了減少在字典上的開銷,引入了本地管理的表空間(LMT),在該類型的表空間中,在每個數據文件中存儲的位圖來管理空間的分配,不再要求使
用數據字典。本地管理的表空間有速度快,無碎片等衆多優點,建議用戶表空間都實現本地管理。
通過v$tablespace 可以查詢表空間,DBA_TABLESPACE 可以查詢詳細表空間信息。

2、段(Segment)
段是對象在數據庫中佔用的空間,雖然段和數據庫對象是一一對應的,但段是從數據庫存儲的角度來看的。一個段只能屬於一個表空間,當然一個表空間可以有多個
段。
表空間和數據文件是物理存儲上的一對多的關係,表空間和段是邏輯存儲上的一對多的關係,段不直接和數據文件發生關係。一個段可以屬於多個數據文件,關於段
可以指定擴展到哪個數據文件上面。段基本可以分爲以下四種
·數據段(Data Segment)
·索引段(Index Segment)
·回滾段(Rollback Segment)
·臨時段(Temporary Segment)
通過DBA/ALL/USER_SEGMENTS 可以查詢詳細的段信息。

3、區間(Extent)
關於Extent
的翻譯有多種解釋,有的譯作擴展,有的譯作盤區,我這裏通常譯爲區間。在一個段中可以存在多個區間,區間是爲數據一次性預留的一個較大的存儲空間,直到那
個區間被用滿,數據庫會繼續申請一個新的預留存儲空間,即新的區間,一直到段的最大區間數(Max Extent)或沒有可用的磁盤空間可以申請。
在ORACLE8i 以上版本,理論上一個段可以無窮個區間,但是多個區間對ORACLE 卻是有性能影響的,ORACLE
建議把數據分佈在儘量少的區間上,以減少ORACLE 的管理與磁頭的移
動,但是在某些特殊情況下,需要把一個段分佈在多個數據文件或多個設備上,適當的加多區間數也是有很大好處的。
通過DBA/ALL/USER_EXTENTS 可以查詢詳細的區間信息。

4、 Oracle 數據塊(Block)
ORACLE 最基本的存儲單位,在建立數據庫的時候指定,雖然在初始化文件中可見,但是不能修改。爲了保證存取的速度,它是OS
數據塊的整數倍。ORACLE 的操作都是以塊爲基本單位,一個區間可以包含多個塊,如果區間大小不是塊大小的整數倍,ORACLE
實際也擴展到塊的整數倍。
塊的內部結構與數據的存取方法都是比較複雜的,以表段的塊爲例,從簡單的結構上劃分,可以把塊的內部劃分成如下幾個部分:公用頭,表目錄,行目錄,可存取
空間等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章