天天看點

《Oracle資料庫管理與維護實戰》——2.5 Oracle實體結構

本節書摘來自異步社群出版社《oracle資料庫管理與維護實戰》一書中的第2章,第2.5節,作者: 何偉娜 , 常建功,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

oracle資料庫管理與維護實戰

實體結構就是我們熟悉的一些實體檔案,這些檔案是資料庫的載體,資料庫中的所有資料,包括系統資料都存放在這些實體檔案中,如圖2-11所示。

《Oracle資料庫管理與維護實戰》——2.5 Oracle實體結構

每一個oracle資料庫都有一個或多個實體的資料檔案(data file)。一個資料庫的資料檔案包含全部資料庫資料。邏輯資料庫結構(如表、索引)的資料也需要存儲在資料庫的資料檔案中。資料檔案有下列特征。

一個資料檔案隻與一個資料庫聯系。

一旦建立,資料檔案不能改變大小。

資料檔案中的資料在需要時可以讀取并存儲在oracle記憶體中。例如,使用者要存取資料庫一表的某些資料,如果請求資訊不在資料庫的記憶體存儲區内,則從相應的資料檔案中讀取并存儲在記憶體。當修改和插入新資料時,系統不必立刻寫入資料檔案。為了減少磁盤輸出的總數,提高性能,資料存儲在記憶體,然後由oracle背景程序dbwr決定如何将其寫入到相應的資料檔案。

控制檔案(control file)控制資料庫的實體結構。控制檔案記錄了資料庫中所有檔案的控制資訊,維護資料庫内部的一緻性,并引導資料庫恢複。控制檔案是資料庫的控制中心,對資料庫至關重要,是以在一個oracle資料中同時聯機存儲了多個複本。這些檔案一般存儲在各個不同的磁盤上,這樣可以降低因磁盤損壞而引起資料庫徹底崩潰的風險。建立資料庫時,系統同時會建立與之對應的控制檔案。控制檔案中主要包含以下資訊。

資料庫名稱

資料庫資料檔案和日志檔案的名稱和位置

資料庫建立日期

表空間資訊

歸檔日志資訊

目前的日志序列号

檢查點資訊

資料庫控制檔案的名稱通過初始化參數control_files确定。如果需要給資料庫添加一個新的控制檔案,使用者需關閉執行個體,把已存在的一個控制檔案複制到新的位址,把新的位址添加到control_files參數設定值上,然後重新啟動這個執行個體,使新的控制檔案生效。

oracle用重做日志檔案來儲存所有資料庫事務的日志。當資料庫被破壞時,用重做日志檔案恢複資料庫。

重做日志檔案一般是以組形式存在的,每一個資料庫有兩個或多個重做日志檔案(redo log file)組,每一組内都有多個鏡像檔案。如圖2-12所示,一共有3組重做日志檔案,每組内都有3個鏡像檔案。

《Oracle資料庫管理與維護實戰》——2.5 Oracle實體結構

oracle以循環方式向重做日志檔案寫入:第一個日志檔案被寫滿後,就向第二個日志檔案寫入,然後依次類推。當所有聯機重做日志檔案都被寫滿時,就再回到第一個日志檔案,用新事務的資料重寫第一個日志檔案。如果資料庫正以archivelog模式運作,在重寫聯機重做日志檔案前,資料庫會先将其内容存入歸檔重做日志檔案中,任何時候都可以用這些歸檔重做日志檔案來恢複資料庫。

為防止重做日志檔案遭破壞,注意,盡量将重做日志檔案鏡像到不同磁盤上,當lgwr向日志檔案寫資訊時,會同時将資訊也寫到鏡像檔案上。

參數檔案一般以ora為擴充名,ora為oracle的前三個字母。oracle 9i版本資料庫之後系統有以下幾類參數檔案。

1.初始化參數檔案

在啟動一個執行個體時,oracle必須讀入一個初始化參數檔案(initialization parameter file)。該參數檔案中含有執行個體配置參數,這些參數值決定着資料庫和執行個體的特性,如共享池、高速緩沖、重做日志緩沖配置設定、背景程序的自動啟動、控制檔案的讀取、自動聯機復原段等。oracle9i之前,該參數檔案名為init.ora,該參數檔案中主要包含以下幾點。

一個執行個體所啟動的資料庫名字

在sga中存儲結構配置

資料庫控制檔案的名字和位置

2.配置參數檔案

配置參數檔案,一般被命名為config.ora。配置參數檔案一般由初始化參數檔案調用,在初始化參數檔案由ifile參數來指定配置參數檔案的位置。

系統中如果一個資料庫對應一個執行個體,則沒有配置參數檔案;配置參數檔案隻有在一個資料庫對應多個執行個體時才有。

3.二進制參數檔案spfile

oracle 9i之前,參數檔案是文本檔案,oracle 9i之後采用了和以前版本不同的二進制的參數檔案spfile,同時保留了對原有文本參數檔案的支援,是以oracle 9i之後有兩種參數檔案:靜态文本的pfile參數檔案和spfile參數檔案。後面的章節将會詳細介紹這幾種參數檔案的差別和使用方法。參數檔案spfile不能直接修改,如果直接修改會導緻資料庫啟動失敗。

跟蹤檔案是由背景程序和使用者程序建立的,用于記載程序運作時出現故障的資訊。在執行個體中運作的每一個背景程序都有一個跟蹤檔案與之相連。跟蹤檔案記載背景程序遇到的重大事件的資訊。

背景程序的追蹤檔案被命名為proc.trc,proc是背景程序的名字。使用者程序追蹤檔案命名為_ora_xxx.trc,xxx是一連串用來唯一辨別的數字。

背景程序追蹤檔案存在background_dump_dest所指定的位置,使用者程序追蹤檔案存儲在由user_dump_ dest參數設定所指定的目錄裡。

使用者可以在v$parameter視圖中獲得background_dump_dest和user_dimp_ dest參數的目前設定。

除了跟蹤檔案外,oracle還有一個稱作警告日志(alert log)的檔案,警告日志檔案記錄資料庫運作中發生的主要事件的指令及結果。例如,表空間的建立、重做日志的轉換、作業系統的恢複、資料庫的建立等資訊都記錄在警告日志中。警告日志是資料庫每日管理的重要資源,應經常監控警告日志。因為警告日志記錄了資料庫操作期間遇到的任何問題,其中包括出現的任何内部錯誤。當調查資料庫故障時,使用者應首先檢視該檔案,關鍵的錯誤總是記錄在這裡。

為使警告日志便于使用,使用者最好是每天對其重新命名。例如,如果警告日志稱作alert_ orcl.log,使用者可以重新命名将檔案名包括目前日期。下次oracle要寫該警告日志時,找不到具有alert_orcl.log檔案名的檔案,資料庫又會新建立一個。這樣,除了有以前的警告日志,使用者還有一個目前的警告日志(alert<_sid>.log)。這樣有利于今後對資料庫曆史運作的追蹤。

警告日志檔案存在由初始化參數background_dump_dest指定的位置。