I/O 包括了讀、寫兩部分,先介紹 Oracle資料庫 中寫操作的產生。
2.1. 寫
介紹寫操作之前,先簡單的看下 Oracle 的物理結構:Oracle 的物理檔案包括以下三種檔案:控 制檔案(Control Files)、重做記錄檔(Redo Log Files)、資料檔案(datafiles)。而資料文 件中,根據功能的不同,還可以分為:系統資料檔案、使用者資料檔案、臨時空間檔案和復原段檔案。 另外,如果資料庫的 Archive Log 模式被啟用,還存在歸檔記錄檔。Oracle 的 I/O 產生, 就是對這些檔案的資料讀、寫操作。下面再詳細看下幾種主要寫操作的產生及其過程。
2.1.1. 控制檔案
控制檔案中記錄了整個資料庫的物理結構資訊。同時控制檔案還記錄系統和各個資料檔案的 SCN( System Change Number,關於 SCN 可以參見文章《Orac le SCN 機制詳解》)資訊,以 用於資料恢複,因此資料檔案上的 SCN 變化後,Oracle資料庫 也會相應修改控制檔案上的 SCN 資訊 。
2.1.2. Redo Log
在非直接寫(Direct Write)的情況下,事務中的寫操作都會產生 Redo Log,作為資料區塊異常關 閉時的恢複記錄。同樣,和寫使用者資料類似,Redo Log 也不會被直接寫入 Redo Log 檔案,而是先寫 入 Log Buffer 中。
Log Buffer 是一個可以迴圈重用的緩衝區。LGWR 進程負責將 Log Buffer 中的記錄寫入 Redo Log File 中去。
一旦 Log Buffer 中的條目被寫入了 Redo Log 檔案中,就可以被重用了。
為了保證事務儘快獲得 Log Buffer,LGWR 進程一般會儘快將 Log Buffer 中的資料寫入 Redo Log 檔案中去。
在以下幾種情況下,LGWR 會將一個連續的 Log Buffer 寫入 Redo Log 檔案中去:
A.當一個事務提交(COMMIT)時。
B.每 3 秒鐘寫一次 Log Buffer。
C.當 Log Buffer 滿 1/3 時。
D.當 DBWn 進程將“髒”資料寫入磁碟時。
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/