RMAN預備知識

路途中的人2012發表於2016-01-29
整理自《Oracle database 11g RMAN備份與恢復

001 備份與恢復概要
    在精心制訂計劃來應對資料庫可能出現的故障時,通常需要處理兩個不同的問題:一個有關體系結構方面的問題是高可用性,該問題與隨之而來的另一個問題備份和恢復具有松耦合關係。    
001-1 高可用性
    高可用性(High Availability,HA)指的是一種防止使用者發現部分或整個系統(如資料庫、網路和硬體等)出現故障的體系結構。HA解決方案包括的要素可以是映象驅動器、RAID體系結構、資料庫群集、資料庫故障切換(failover)模式,當然還包括備份和恢復。
    HA增加了整個資料庫體系結構解決方案的開銷,且超過了所選的備份和恢復解決方案的花費。雖然RMAN不是一個HA解決方案,但它是整個資料庫解決方案的一部分,而該解決方案可以包括HA。HA解決方案不能取代資料庫備份與恢復,但是如何對和資料庫備份與恢復的策略構成了您制定高可用決策的基礎。必須明確的是,如何備份和恢復資料庫是HA決策的一部分。
001-2 基本術語
    警告日誌(alert log):一個文字日誌檔案,記錄資料庫的錯誤和狀態訊息。警告日誌是判斷資料庫故障種類的一個關鍵結構。通常情況下,警告日誌位於後臺轉儲目標目錄中,該目錄是由資料庫引數BACKGROUND_DUMP_DEST定義的,其中警告日誌稱為alert<sid>.log。
    歸檔的重做日誌(archived redo log):資料庫在archivelog模式下時,每次Oracle透過了LGWR程式切換聯機重做日誌時都會發生歸檔的重做日誌。資料庫恢復期間也會使用歸檔的重做日誌。歸檔的重做日誌的副本可以寫入10個不同的目錄,這些目錄是由資料庫引數檔案中的Oracle引數LOG_ARCVIVE_DEST_n定義的。同樣,Oracle database 11g允許在稱為閃回恢復區(flash recovery area)的新位置中儲存歸檔的重做日誌。
    備份控制檔案(backup control file):控制檔案的備份是由命令alter database to ‘filename’或命令alter database backup control file to trace生成的。
    檢查點(checkpoint):一種資料庫事件,使資料庫將髒(已使用)資料塊從記憶體移出並寫入磁碟。
    資料庫(database):由構成Oracle資料庫的不同元件(表空間、重做日誌等)組成。資料庫不同於例項。資料庫用於儲存資料,使用RMAN可以備份和恢復資料庫。
    資料庫一致性(database consistency):這是指資料庫中的每個物件在某個相同的時間點是一致的其含義是資料庫資料檔案中的資料在某個相同的時間點保持一致,也意味著資料庫控制檔案與資料庫資料檔案指標保持同步。
    資料庫控制檔案(database control file):資料庫控制檔案儲存與資料庫有關的後設資料。包含關於資料庫資料檔案,歸檔重做日誌,RMAN備份等有關的資訊,以及其他資料庫內部資訊。
    資料庫資料檔案(database datafile):與表空間相關的物理實體。一個資料庫至少含有一個資料庫資料檔案(該檔案屬於system表空間)。大部分資料庫是由多個不同的資料庫資料檔案組成的。儘管一個表空間可以有許多關聯的資料庫資料檔案,但是一個給定的資料庫資料檔案只能有一個關聯的表空間。
    資料庫引數檔案(database parameter file):含有例項和資料庫配置資訊,資料庫引數檔案分為兩部分(各部分相互獨立):一部分是文字檔案init.ora;另一部分是spfile.ora檔案,該檔案允許透過alter system命令來維持資料庫引數的設定。
    閃回恢復區(flash recovery area,FRA):磁碟的可選配置區域,用於儲存各種與恢復相關的檔案。RMAN備份檔案、歸檔的重做日誌、聯機重做日誌,以及控制檔案都可以儲存在這個區域中。
    區組(granule):Oracle連續記憶體單位。所有的系統全域性區(system global area,SGA)其記憶體分配都近似為最接近的區組單位。區組大小由預計的整個SGA記憶體決定,可能為4MB或16MB。當Oracle使用較大的區組大小時,大於128MB的SGA就可能是斷點。分為給資料庫的區組數量在資料庫啟動時確定。
    例項(instance):一個例項是Oracle記憶體和程式的集合。若已分配SGA記憶體,且相應的Oracle程式均啟動和成功執行時,就可以說啟動了Oracle例項。需要注意的是,Oracle例項執行不表示資料庫自身被開啟。在給定時間,一個例項只能與一個資料庫關聯。
    聯機重做日誌(online redo log):發生重做時,重做會被實際儲存在資料庫的聯機重做日誌中。Oracle要求至少為一個資料庫的操作建立兩個聯機重做日誌。這些聯機重做日誌可以含有多個保護重做的映象副本。這稱為多路重做日誌。當一個聯機重做日誌寫滿重做內容時,Oracle會切換到下一個聯機重做日誌,這稱為日誌切換(log switch)操作。    
    每個聯機重做日誌檔案都有關聯的唯一日誌序列號。一個日誌序列號唯一地標識一個聯機重做日誌檔案,如果這個聯機重做日誌檔案已歸檔,那麼就標識相關聯的歸檔的重做日誌檔案。透過V$LOG檢視查詢可以查詢到聯機重做日誌的日誌序列號,在V$ARCHIVED_LOG檢視或V$LOG_HISTORY檢視中可以查詢給定的歸檔重做日誌的日誌序列號。    
    此外,一個聯機重做日誌(以及一個歸檔的重做日誌)包含該日誌檔案獨特的一組資料庫系統更改號(scn)。在恢復期間,Oracle按日誌序列號的順序來應用聯機重做日誌(歸檔的重做日誌)中的撤銷(undo)操作。
    程式(process):執行Oracle資料庫實際操作的程式。在Oracle database 11g中有5種必需的程式,也有其他一些程式。
    重做(redo):記錄對給定資料庫的所有修改。對於資料庫中的幾乎每一個修改來說,都會生成關聯的重做記錄。
    模式(schema):擁有Oracle中的多種邏輯物件(如表和索引),實際上與使用者的意義相同。
    系統全域性區(system global area,SGA):Oracle啟動時分配的共享記憶體區,所有Oracle程式都共享這部分記憶體。
    系統更改號(system change number,scn):一個表示某時間點上資料庫當前狀態的計數器。與VCR(錄影機)的計數器相同,隨著時間的推移,scn會相應地增加。每個scn代表一個資料庫生命週期中的一點。
    表空間(tablespace):一個物理邏輯實體。由於它儲存Oracle邏輯物件(如表和索引),所以是邏輯實體;由於它由一個或多個資料庫資料檔案組成,所以又是物理實體。一個資料庫必須至少包含一個表空間(即system表空間),不過大部分資料庫包含多個不同的表空間。
    跟蹤檔案(trace file):資料庫會在許多不同的情況下生成跟蹤檔案,這些情況包括程式錯誤。每個資料庫程式也會生成自己的跟蹤檔案。在試圖解決資料庫故障問題時,跟蹤檔案會起到重要的作用。
    

002 資料庫軟體的控制
    在執行各種恢復操作期間,需要對Oracle資料庫和它的相關例項的狀態進行控制。使用SQL*Plus Oracle實用程式可以啟動Oracle database 11g資料庫。此時,可以使用sysdba的登入ID來登入使用者系統,然後在SQL*Plus提示符下執行startup命令。
    用startup命令啟動Oracle資料庫時,執行的操作要經歷3個不同的階段:
    例項啟動(instance startup):啟動Oracle資料庫例項。
    資料庫載入(database mount):載入Oracle資料庫。
    資料庫開啟(database open):開啟Oracle資料庫以供使用者活動。
002-1
    startup命令有幾種不同的變體(對於瞭解多個不同的RMAN操作非常重要),這些變體包括:
    startup:使Oracle經歷3個啟動階段,並且開啟到使用者社群。
    startup restrict:使Oracle經歷3個啟動階段,並且以限定模式開啟資料庫。只有具有限定許可權的使用者才可以訪問資料庫。
    startup nomount:在成功開啟資料庫例項後停止啟動程式。通常在建立資料庫之前使用該命令來啟動資料庫例項。如果需要重新建立控制檔案,使用這條命令也會非常方便。需要注意的是,為了在給定資料庫中使用RMAN,必須能夠使用startup nomount命令成功地啟動例項。
    startup mount:在成功啟動資料庫例項並載入資料庫後,停止啟動程式如果需要恢復system表空間,這個命令非常有用。
    startup read only:使Oracle資料庫(或備用資料庫)以read only模式開啟。因此,不支援DML操作,但可以查詢資料庫。如果正在執行時間點恢復操作,並且希望確保在使用resetlogs命令提交新資料庫例項之前將資料局恢復到當前的時間點,這個命令非常有用
    startup force:與shutdown abort命令一起關閉資料庫。startup force命令後面可以再次加上資料庫的開啟模式。如:
    startup force restrict
    startup force mount
    startup force nomount
002-2資料庫關閉命令
    shutdown(還有shutdown normal):使Oracle等待直至所有使用者程式與資料庫斷開連線。所有程式斷開之後,資料庫將會完全關閉。使用這個命令選項可以避免例項恢復。執行shutdown命令後,任何新的使用者程式都不能連線到資料庫。
    shutdown immediate:清除所有存在的使用者會話,並且回滾所有未提交的事務。使用這個命令選項可以避免例項恢復。執行shutdown immediate命令後,任何新的使用者程式都不能連線到資料庫。
    shutdown abort:通常會使資料庫崩潰。使用這個命令選項要求是例項恢復(而不是介質恢復)。執行shutdown abort命令後,任何新的使用者程式都不能連線到資料庫。
    shutdown transactional:使Oracle等待所有使用者程式提交當前事務,然後斷開這些使用者程式並關閉資料庫。在等待完成這些事務的期間,任何新的使用者會話都不能連線到資料庫。

003 Oracle體系結構
003-1 Oracle程式
    執行startup nomount命令時,Oracle會試圖啟動Oracle例項。當所需的作業系統程式(程式)被啟動,且分配了一個稱為系統全域性區(SGA)的記憶體之後,Oracle例項就被啟動。
    五種必需的Oracle程式:如果成功啟動了一個Oracle database 11g例項,就至少啟動了5種不同的程式。當然,在特定的系統中(如基於Microsoft的各種作業系統),這5種不同的程式只是單個Oracle程式中的執行緒,不過其基本原理是相同的。下面是這些必須的程式:
    PMON:也稱為程式監控程式(process monitor process),是一個“Jamaican 程式”。
    SMON:也稱為系統監控程式(system monitor process),是另一個“Jamaican 程式”。
    DBWn:稱為資料庫寫入器程式(database writer process)。在Oracle database 11g中,最多可以用9個這樣的程式來配置一個例項(不過通常只需要一個這樣的程式)。DBWn負責將資訊從SGA的資料庫快取區寫到資料庫資料檔案中。
    LGWR:日誌寫入器程式(log writer process)負責將生成的重做資訊從日誌緩衝區寫到資料庫聯機重做日誌中。使用者會話提交時會通知LGWR寫入資訊,當重做日誌緩衝區快被寫滿時也需要通知LGWR程式。
    CKPT:在執行檢查點操作時,CKPT程式會向DBWn通知該檢查點。CKPT程式也用當前的檢查點資訊來更新資料庫資料檔案頭。
003-2 使用者程式和伺服器程式
    使用者程式連線到資料庫時會生成一個使用者程式(或者是一個在Windows NT上啟動的新執行緒),該程式將與另一個生成的伺服器程式連線。這些程式使用多種協議(如Bequeath協議或TCP/IP協議)相互通訊。


004 Oracle記憶體和RMAN
    與任何程式相同,RMAN也需要使用記憶體,這些記憶體用於RMAN操作,也用於資料庫互動。
    Oracle資料庫物理體系結構包括以下元件:
    資料庫資料檔案
    聯機重做日誌
    歸檔重做日誌
    資料庫控制檔案
    Oracle表空間
    閃回日誌(可選元件)
    上面的每種元件都被物理定位在與計算機連線的儲存裝置上。這些物件構成了Oracle資料庫的物理實體,為了恢復資料庫還可能需要從備份中還原和恢復一個或多個這樣的物件(除了閃回日誌)。
004-1 資料庫資料檔案
    資料庫資料檔案是資料庫的資料儲存介質,這些資料檔案與表空間相聯絡,後面將會看到這一點。在資料庫中儲存資訊時,資訊最終會儲存在這些物理檔案中。每個資料庫資料檔案都包含一個資料檔案頭,資料檔案頭中的資訊幫助跟蹤這個資料檔案的當前狀態資料檔案頭在檢查點操作期間被更新,並反映這個資料檔案的當前狀態。
    資料庫資料檔案可以具有許多指定的不同狀態。我們最關心的主要狀態是online和offline狀態,online是正常狀態,offline則是非正常狀態。資料庫資料檔案還可以是recover狀態,該狀態表示這個資料檔案存在問題並且需要被恢復。
    如果資料庫處於archivelog模式下,可以使資料檔案離線,這可能是特定的恢復操作所需要的。如果資料庫處於noarchivelog模式下,只能刪除資料庫資料庫檔案才能使這個資料檔案離線。因為離線刪除資料檔案會給資料庫造成影響(如資料丟失),所以需要謹慎處理。
  
004-2聯機重做日誌
    如果將Oracle scn比作VCR上的計數器,那麼重做日誌就好比錄影帶。聯機重做日誌負責記錄資料庫中發生的每個原子操作更改。考慮到效能和資料儲存因素,每個Oracle資料庫都必須至少有兩個不同的聯機重做日誌組,發部分資料庫通常都具備兩個以上的聯機重做日誌組。
    出於保護的目的,每個聯機重做日誌組都可以擁有多個位於不同磁碟驅動器上的日誌。Oracle將並行地寫入不同的日誌,從而使得寫入程式更有效。Oracle以輪詢方式每次寫入一個重做日誌組。當一個重做日誌組被寫滿時,LGWR程式會關閉這些重做日誌並開啟下一個聯機重做日誌進行處理。
    重做日誌中的記錄稱為更改向量(change vector)。每個更改向量以scn順序來代表一個原子資料庫更改,這樣可以在恢復(RMAN恢復或手動恢復)期間將所有更改記錄按順序應用於資料庫,從而實現恢復故障時間點(或者要求的其他較早時間)的資料庫。LGWR程式負責將更改向量(累積在一起就是重做)從重做日誌緩衝區中寫入到聯機重做日誌中。

004-3歸檔的重做日誌
    Oracle結束一個聯機重做日誌的寫入並開始寫入另一個聯機重做日誌時,會發生日誌切換(log switch)。如果資料庫處於archivelog模式下並且正在執行arch程式,日誌切換的結果是生成聯機重做日誌的一個副本。這個聯機重做日誌的副本稱為歸檔的重做日誌。Oracle可以將歸檔的重做日誌檔案最多複製到10個不同的目錄。在介質恢復期間,資料庫使用歸檔的重做日誌來執行恢復操作。

004-4資料庫控制檔案
    每個Oracle資料庫都有一個或多個資料庫控制檔案。控制檔案中包含了許多資料庫資訊,如當前scn、資料庫資料檔案的狀態以及資料庫狀態。另外,控制檔案也儲存多種RMAN操作的關鍵資訊,如每個資料庫資料檔案的備份狀態。如果丟失控制檔案,則需要遵循特定的過程來在控制檔案中重新建立RMAN類別。在控制檔案中還包含一類dba感興趣的關於檢查點scn(有關最近修改的給定資料檔案的scn)的資訊。Oracle將對該檢查點scn與儲存在資料檔案標頭檔案中的檢查點SCNs進行交叉檢查。如果它們完全匹配,則不需要進行資料庫恢復工作。反之則需要進行某種型別的恢復工作,例如當系統崩潰時進行的自動恢復。有時需要進行介質恢復,例如當資料庫檔案丟失時。

004-5 Oracle表空間
    Oracle表空間是Oracle的一種非實體部分。表空間是Oracle物理世界(表現形式為資料庫資料檔案)和邏輯世界(表現形式為Oracle表空間)之間的連結。我們通常將表空間當做物理-邏輯結構。Oracle在表空間中儲存物件,如表和索引。
    表空間由一個或多個Oracle資料庫資料檔案組成,因此一個表空間可用的總空間取決於所有資料庫檔案分配的總空間的大小。表空間可以是offline狀態或online狀態,還可以處於read write或read only模式下。如果表空間處於read only模式下,表空間的內容就不會更改。因為read only表空間的內容不會更改,所以dba通常在表空間被設為只讀後只備份一次read only表空間的資料庫資料檔案。當然,如果這個表空間不再處於read only模式下,就需要再次啟動表空間備份。

004-6 閃回日誌
    Oracle database 10g引入了將Oracle資料庫閃回到其他時間點的功能。通常要用閃回日誌來幫助實現該功能。閃回日誌儲存在FRA中。Oracle單獨負責管理閃回日誌,因此它將根據需要建立、刪除和調整閃回日誌的大小。同樣要注意,Oracle沒有歸檔閃回日誌,因此不需要進行恢復。RMAN支援閃回恢復。

004-7 閃回恢復區
    Oracle database 10g引入了FRA的概念,它允許使用者在磁碟上定義一塊中心區域以用來恢復相關檔案(例如RMAN備份和歸檔的重做日誌)。儘管FRA的確參與閃回資料庫(flashback database)操作,但請注意不要將閃回恢復區與Oracle的閃回資料庫特性混淆,FRA比閃回資料庫的功能要強大的多。下面的結構可儲存在FRA中:
    歸檔的重做日誌
    RMAN備份固定形式
    RMAN資料檔案副本
    閃回日誌
    資料庫控制檔案的副本
    每個重做日誌組的一個成員
    控制檔案自動備份和副本

004-8 Oracle自動儲存管理(ASM)
    Oracle ASM(automatic storage management)是Oracle用於管理資料庫檔案的整合系統。ASM支援多種不同的檔案系統型別,包括已使用的磁碟驅動器、原始磁碟驅動器和NetFiler裝置等。ASM的工作思路是透過讓Oracle負責基本的磁碟管理操作(例如負載平衡和資料保護)來簡化dba的工作。RMAN支援ASM基礎架構,透過該基礎架構可將資料庫FRA放置在ASM磁碟上,或者可以直接備份到ASM磁碟。
    雖然ASM有一定的作用,但我們認為在大多數Oracle安裝中不需要安裝ASM。如果由一個單一的、非RAC的、帶有兩個或3個資料庫的伺服器,則不需要ASM。

005 更多關於Oracle重做日誌的內容
    005-1重做日誌概述
    Oracle重做日誌包含兩類:
        聯機重做日誌
        歸檔重做日誌
    在還原和恢復Oracle資料庫時,重做日誌是最重要的元件之一。因為重做日誌儲存了資料庫發生的所有變化。資料庫操作期間,Oracle LGWR程式負責將資料操作情況寫入聯機重做日誌,建立您永遠也不希望使用的更改記錄。
    LGWR程式負責將由Oracle事務建立的稱為redo的資訊寫入聯機重做日誌檔案。redo是發生在資料庫中的事件以及事件發生順序的記錄。幾乎所有的DML,DDL,事務提交操作都會建立redo。在資料庫恢復期間,Oracle讀取redo並按照redo建立的順序恢復資料庫。一般該恢復過程在後臺進行,不需要DBA參與(例如崩潰恢復),但有時情況有所不同,例如在資料庫恢復和資料檔案恢復時,需要DBA參與其中。
    聯機重做日誌檔案大小固定。當LGWR程式達到給定的聯機重做日誌檔案末端時,它將會關閉該檔案,並尋找另外的聯機重做日誌檔案並寫入。該程式稱為日誌切換(log switch)。日誌切換是一個序列程式,從效能角度來看,該程式開銷昂貴。
    在日誌切換期間,LGWR尋找可寫入的聯機重做日誌檔案。如果找到可用的聯機重做日誌檔案,LGWR將開啟該檔案並開始寫入redo。如果LGWR不能找到可用檔案,則等待聯機重做日誌檔案,直到有可用的為止。在等待期間,LGWR將不厭其煩地向報警日誌和其他地方傳送“抱怨資訊”,此時對資料庫的操作將被掛起,也就是說資料庫將暫時停止工作,通常應該儘可能地避免這種情況發生。
    每個建立的聯機重做日誌檔案分配給一個聯機重做日誌組。在非叢集配置環境下,Oracle在同一時間僅向一個重做日誌組寫入日誌。如果執行在RAC(real application clusters)環境中,每個RAC例項將redo寫入它自己的重做日誌組中。
    聯機重做日誌組具有幾個不同的狀態:
    current:正在使用的聯機重做日誌
    active:處於該狀態的聯機重做日誌不在當前重做日誌檔案組中,它正在等待歸檔程式將重做複製到歸檔重做日誌中。
    inactive:已經被歸檔的不活躍的聯機重做日誌。
    unused:正在被Oracle資料庫使用的聯機重做日誌。表示該聯機重做日誌檔案組對應的檔案還從未被寫入過資料,通常剛剛建立和重建的聯機重做日誌檔案組會顯示成這一狀態。當日志切換到這一組時,就會改變狀態。

005-2 多路聯機重做日誌
    如果active聯機重做日誌丟失,將會造成巨大的損失。一旦發生該問題,資料庫將會崩潰,也將可能面臨資料的丟失,需要大量的時間進行恢復工作。因為Oracle資料庫恢復到失敗時間點的工作主要依靠聯機重做日誌的可用性。正如您所知,聯機重做日誌將使資料庫易於產生磁碟裝置的丟失,發出不正確的刪除命令,或其他的錯誤。為解決這一問題,可以為每個聯機重做日誌建立映象。若為一個聯機重做日誌建立一個以上的副本,該日誌所在的組稱為多路聯機重做日誌組。為給聯機重做日誌組提供多重保護,通常將多路日誌副本放在不同的物理裝置中。從高可用性角度考慮,建議將聯機重做日誌組中的成員分別存放到不同的磁碟驅動裝置上。
    由於多路聯機重做日誌組的多個成員可以並行寫入,因此在每個組中儘管有多個日誌成員組也不會帶來效能問題。

005-3 日誌序列號
    當寫入每個聯機重做日誌組時,該組將被分配一個序號。該序號稱為日誌序列號。新建立的資料庫其第一個日誌序列號總是以1開始。寫入聯機重做日誌組時,該序號在發生日誌切換操作後將按順序遞增。如上所述,下一個寫入的聯機重做日誌序列號為2,後面的以此類推。
    執行正常的資料庫操作時,Oracle將開啟一個可用的聯機重做日誌,將redo寫入其中,一旦填滿聯機重做日誌,則關閉它。一旦該聯機重做日誌被填滿,LGWR程式將切換到另一個聯機重做日誌組。此時,如果資料庫處於archivelog模式,LGWR將啟用ARCn程式,ARCn程式將以順序迴圈方式寫入聯機重做日誌。
    ARCn程式響應LGWR的呼叫,將在由Oracle資料庫引數LOG_ARCHIVE_DEST_n定義的地址和/或者定義的閃回恢復區上建立聯機重做日誌的副本。直到ARCn程式至少建立了一個歸檔重做日誌,Oracle才能重用有關的聯機重做日誌檔案可能需要建立多個歸檔重做日誌後,相關聯的聯機重做日誌才能夠被Oracle重用,這將由系統的配置所決定。在建立歸檔重做日誌時,它們將保留分配給父聯機重做日誌的日誌序列號。該序列號在資料庫中將保持唯一性,直到執行resetlogs操作開啟資料庫為止。一旦執行resetlogs操作,日誌序列號將重置為1.
    在執行恢復操作期間使用resetlogs命令啟動資料庫時還需注意一點,如果使用的是Oracle database 10g或者更高的版本,Oracle提供使用執行resetlogs命令時間點前的備份來恢復資料庫的功能。當執行resetlogs命令時,Oracle將會在聯機重做日誌重置時歸檔所有未歸檔的聯機重做日誌。該項功能提供使用執行resetlogs命令時間點前的備份恢復資料庫的功能。使用備份檔案和所有的歸檔重做日誌,可以實現跨越resetlogs命令的資料庫恢復,該功能使DBA在使用基於resetlogs的命令恢復資料庫後不用忙於立即進行備份(儘管該備份仍然是非常重要的)。該功能減少了平均恢復時間,使用者可以在恢復後開啟資料庫,而不需要首先去備份資料庫。

005-4聯機重做日誌管理
    alter database命令可用於增加或刪除聯機重做日誌。
    當希望調整日誌檔案組大小時,需要先刪除該日誌檔案組,然後以希望的大小重新建立該日誌組。

005-5 archivelog模式與noarchivelog模式
    Oracle資料庫可以在兩種模式下執行。預設情況下,資料庫在noarchivelog模式下建立,這種模式允許正常的資料庫操作,但是不提供時間點恢復操作或聯機備份的功能。如果要實現聯機備份(或熱備份),就需要以archivelog模式執行資料庫。在archivelog模式下,資料庫透過ARCn程式在一個或多個歸檔日誌目標目錄中生成所有聯機重做日誌副本。
    使用archivelog模式不僅僅是簡單地將資料庫置入archivelog模式,還需要對資料庫進行一些配置。使用者還必須配置ARCn程式,並且提供歸檔的重做日誌目標目錄。需要注意的是,一旦Oracle資料庫處於archivelog模式下,資料庫活動將在所有可用的聯機重做日誌被使用過之後掛起。資料庫在歸檔這些聯機重做日誌前保持掛起狀態。因此,對於處在archivelog模式下的資料庫,錯誤配置將導致它因不能歸檔當前聯機重做日誌而掛起所有的操作。這聽起來很嚴重,但實際上確實如此,歸結於以下的一些基本方面:
    適當地配置資料庫
    確保有足夠的可用空間
    確保操作與預期一致。例如:如果在archivelog模式下的資料庫中定義閃回恢復區,則要確保歸檔重做日誌已被成功寫入到該目錄中。

006 組合情況
006-1 資料庫的啟動和關閉
    1)例項啟動(未載入啟動)
        啟動資料庫時首先經歷的階段是例項啟動。在這個階段,Oracle分析資料庫引數檔案,並且透過設法獲得例項鎖來確定例項還未執行。隨後,Oracle啟動多種不同的資料庫程式,如DBWn和LGWR程式。Oracle還將分配SGA所需的記憶體。一旦啟動了例項,Oracle會向啟動例項的使用者報告後臺程式已經啟動了例項,以及為SGA分配了多少記憶體。
    如果Bob執行startup nomount命令,那麼Oracle會在啟動例項後停止資料庫啟動程式。在執行某些恢復操作(如控制檔案的重建)時,管理員可能會這樣啟動例項。
    2)資料庫載入(載入啟動)
        啟動程式中的第二個階段是資料庫載入。在載入階段,Oracle開啟資料庫控制檔案。成功開啟後,Oracle從這個控制檔案中析取資料庫檔名,為開啟這些資料檔案做好準備。需要注意的是,這個時候Oracle不會檢查這些資料檔案是否存在,而只是從控制檔案中標識資料檔案的位置。完成這個步驟後,Oracle向使用者報告已經載入了資料庫。
    如果Bob執行的是startup mount命令,此時Oracle會停止開啟資料庫並等待下一個指令。當Oracle例項已啟動並且資料庫已經載入但未開啟時,可以執行某些恢復操作,這些操作包括將資料庫資料檔案和恢復系統表空間資料檔案的位置重新命名。
    3)資料庫開啟
        Bob執行的是startup命令,Oracle將繼續啟動程式並設法開啟資料庫。在資料庫開啟階段,Oracle驗證資料庫資料檔案是否存在並開啟這些檔案。Oracle開啟資料檔案時會檢查資料檔案頭,並且比較這些檔案頭中的scn資訊和控制檔案中儲存的scn。接下來討論scn。
    scn是跟蹤資料庫狀態的Oracle方法資料庫發生更改時,就會生成與更改關聯scn。在資料庫資料檔案中寫入更改時(發生於檢查點操作期間),資料檔案頭會更新當前scn。當前scn也會被記錄在資料庫控制檔案中。
    Oracle設法開啟資料庫時會檢查每個資料檔案和資料庫控制檔案中的scn。如果scn相同並且位對映標記設定正確,就認為這個資料庫是一致的,即可開啟和使用資料庫。
    注意:scn可以看做是VCR上的計數器。隨著時間的推移,VCR計數器會不斷增加,並指向磁帶所在的當前時間點。因此,如果要觀看磁帶上的節目,則可以將磁帶倒退(或快進)到相應的計數器位置(即該節目的開始位置)。scn的工作原理與VCR計數器相同。Oracle需要恢復資料庫時會“倒退”到相應的scn,然後重放這個scn後的所有事物,直至資料庫恢復。
    如果scn不相同,則Oracle會自動執行災難或例項恢復。如果聯機重做日誌檔案中存在生成一致的映像所需要的重做,就會發生災難或例項恢復。如果由於資料檔案損壞或者由於恢復需要的重做不在聯機重做日誌中而不能執行災難或例項恢復,Oracle會要求DBA執行介質恢復(media recovery)。介質恢復需要從一個資料庫備份中恢復一個或多個資料庫資料檔案,與例項恢復不同的是,介質恢復是一個手動執行的過程。RMAN能夠用於介質恢復。一旦資料庫開啟程式完全成功之後(沒有恢復、災難恢復或介質恢復),資料庫就可以用於業務。
 4) 為了關閉資料庫,Bob可以執行shutdown命令。這條命令將關閉和解除安裝資料庫,然後幾乎完全按照與前面介紹的啟動程式相反的順序來關閉例項。
    需要特別注意的是 :使用shutdown abort命令基本上相當於模擬的資料庫災難,這條命令很常用,並且極少出現問題。但Oracle通常建議如果有可能,應在資料庫處於一致狀態的情況下關閉資料庫。
    如果必須使用shutdown abort命令來關閉資料庫,我們就應當使用startup命令(或者可能是startup restrict命令)重新開啟這個資料庫。接下來,在執行任何離線備份操作前應當使用shutdown immediate命令來關閉資料庫。需要注意的是,由於在關閉程式期間回滾事務需要一定的時間,所以即使是用上述方法也可能導致延遲關閉資料庫。
    注意:只要備份/恢復策略是正確的,資料庫在離線備份時是處於一致狀態(如正常的shutdown命令)還是非一致狀態(如shutdown abort命令)並沒有多大關係。Oracle建議在資料庫處於一致狀態時執行冷備份,我們也建議執行這樣的操作(這是因為RMAN不會備份聯機重做日誌)。最後需要注意的是聯機備份根本不會使用shutdown命令。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-1984121/,如需轉載,請註明出處,否則將追究法律責任。

相關文章