ORACLE資料庫線上備份原理[轉載兒子屬羊]
1 ORACLE 工作機制
在討論ORACLE線上備份之前,我們先作一些準備工作。
1.1 基本概念
由於我們討論的ORACLE線上備份涉及到以下ORACLE的幾個基本而且非常重要的概念。為了說明方便,下面我們對這幾個重要的概念作一些說明。
1) 資料庫的表
表是資料庫中最基本而且是最重要的概念,表是資料庫用來存放資料的地方。應用業務中的資料就是儲存在資料庫的表中。
2) 資料查詢語句
資料查詢語句主要是對資料庫中的資料進行查詢於瀏覽。也就是對資料庫中的表的記錄進行查詢。在ORACLE資料庫中,資料查詢的命令是:
SELECT
3) DML語句
在ORACLE資料庫中,DML(DATA MANIPULATION LANGUAGE)語句,也就是資料操縱語言,指那些對ORACLE資料庫中資料進行修改的語句。這種修改僅限於資料庫中的資料,也就是表中的記錄。而不是資料庫中的物件。從後面可以看書,理解這一點非常重要。DML語句有以下幾類:
A) 資料的增加
往資料庫中增加資料是DML語句一個功能,在資料庫中資料的增加表現為資料庫中表的記錄的增加。ORACLE資料庫中增加記錄的命令是:
INSERT
B) 資料的修改
資料庫中的資料並不是一成不變的,有時由於應用或是業務要求的變化,可能需要修改資料庫中的資料。資料庫中資料的修改表現出來是對資料庫的表中的記錄進行修改。DML語句可以用來對資料庫中的資料進行修改。ORACLE資料庫中修改表中的記錄的語句是:
UPDATE
C) 資料的刪除
資料庫中的資料不再需要時,要將其從資料庫中刪除。也就是把記錄從資料庫的表中刪除。ORACLE資料庫刪除記錄的命令是:
DELETE
4) DDL語句
在ORACLE資料庫中,物件的建立是由DDL語句完成。DDL (DATA DEFINITION LANGUAGE)語句一經發布,則資料庫中將增加一個物件,如表,使用者等等。
1.2 ORACLE對DML語句的處理
有了以上的一些基本概念,我們可以討論ORACLE線上備份了。在此之前,我們首先來看ORACLE對DML(DELETE、UPDATE、INSERT)語句的處理過程:(該系統的拓撲結構為CLIENT/SERVER模式)
從上圖可以看出,ORACLE資料庫對DML語句的出來過程如下:
1) 使用者(CLIENT)將DML語句傳遞給伺服器(SERVER)。(如圖,該DML語句是UPDATE)
2) SERVER程式將需要的資料塊從資料檔案讀到記憶體區(SGA區)的DATA BUFFER CACHE中,同時在該區中對資料進行修改。
3) 將整個修改過程由記憶體中的DATA BUFFER CACHE 區COPY到記憶體區的REDO LOG BUFFER。這次COPY不但儲存了資料庫修改後的值,而且儲存資料庫修改前的值。
4) DML語句對資料庫的都會有ORACLE的SERVER程式記錄到ORACLE的記憶體結構REDO LOG BUFFER中。因此,我們只要把所有REDO LOG BUFFER 中的資訊記錄下來,那麼我們就記錄了所有DML語句對資料庫的修改。這個紀錄過程由ORACLE的另一個後臺程式來完成。如下圖:
如圖所示:把REDO LOG BUFFER儲存下來到後臺程式是LGWR,LGWR把REDO LOG BUFFER的內容儲存到稱為REDO LOG FILES中。 REDO LOG FILES 是一組作業系統檔案。如圖:
該資料庫中有三組REDO LOG FILES,每組中有兩個成員,這兩個成員是相互映象的。ORACLE 資料庫的後臺程式寫滿第一組之後,接著寫第二組,寫滿第二組之後寫向第三組。寫滿地三組之後ORACLE地處處理依據ORACLE執行方式不同而不同。
1.ORACLE執行方式為非歸檔方式
在這種情況下,ORACLE資料庫不會在任何處理接著寫向第一組,將第一組原有的資料覆蓋掉。因此REDO LOG FILES原有的資料不可用,故資料庫在這種情況下不可恢復。
資料庫每次寫向一組新的REDO LOG FILE 時都會為該組分配一個序號。這個序號是遞增,而且唯一的。並且可以按指定的方式REDO LOG FILE的檔名相關。這樣如果REDO LOG FILE 在相同的目錄下也不會同名。
2.ORACLE 執行方式為歸檔方式
在這種情況下,ORACLE資料庫接著寫向第一組之前,將第一組做一個備份。這個備份就是我們用來做恢復的依據。如圖:
歸檔的REDO LOG FILES (ARCHIVED LOG FILE)是對原REDO LOG FILE 的物理拷貝。這個拷貝是可由資料庫的後臺程式ARCH自動完成的。(由於每一個REDO LOG FILE的名字中有一個唯一的序號,因此ARCHIVED LOG FILE的名字也有一個唯一序號。這個序號決定了做恢復時的使用ARCHIVED LOG FILE 順序。)
從上可知:
1.DML語句對資料庫的修改記錄在REDO LOG BUFFER 中
2.REDO LOG BUFFER中資訊記錄在REDO LOG FILE中
3.REDO LOG FILE 中的資訊記錄在ARCHIVED LOG FILES 中
因此,把所有的ARCHIVED LOG FILES 儲存下來就儲存所有對資料庫的修改。
用歸檔來考慮備份與恢復時,必須指出:
1. 如果發出的SQL語句指定了NOLOGGING等將對資料庫修改不記入REDOLOGFILE時,這些資訊是不能恢復的。此時須藉助於其它型別的備份
歸檔只記錄了對資料庫的DML語句修改,因此在做恢復時,必須有一個全備份做基礎。歸檔作用在這個全備份上,重演以前對資料庫的DML的修改來達到恢復的目的
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8334342/viewspace-364762/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫的備份方法-冷備份(轉)Oracle資料庫
- ORACLE 資料庫備份技術(轉)Oracle資料庫
- ORACLE資料庫的邏輯備份(轉)Oracle資料庫
- Oracle資料庫的備份與恢復(轉)Oracle資料庫
- Oracle 資料庫的備份與恢復(轉)Oracle資料庫
- oracle資料庫備份之exp增量備份Oracle資料庫
- oracle 備份資料庫,匯出資料庫Oracle資料庫
- 「Oracle」Oracle 資料庫備份還原Oracle資料庫
- Oracle學習系列—資料庫備份—熱備份Oracle資料庫
- Aix下使用rman備份Oracle RAC資料庫(轉)AIOracle資料庫
- 自動備份Oracle資料庫Oracle資料庫
- 資料庫邏輯備份(轉)資料庫
- 用ASP備份資料庫 (轉)資料庫
- Oracle自動備份資料(轉)Oracle
- Oracle資料庫冷備份與熱備份操作梳理Oracle資料庫
- 【原】Oracle學習系列—資料庫備份—RMAN備份Oracle資料庫
- oracle資料庫備份與恢復 a piece of cake (4)(轉)Oracle資料庫
- Oracle資料庫的備份及恢復策略研究(轉)Oracle資料庫
- [轉載] Oracle備份策略(精華)Oracle
- 初探MySQL資料備份及備份原理MySql
- 每天自動備份Oracle資料庫Oracle資料庫
- oracle資料庫備份刪除操作Oracle資料庫
- Oracle資料庫三種備份方案Oracle資料庫
- 【原】Oracle學習系列—資料庫備份—離線備份Oracle資料庫
- (轉)使用Xtrabackup備份MySQL資料庫MySql資料庫
- 轉載:legato7.2 + WINDOWS 2003 + ORACLE資料庫RMAN備份配置案例WindowsOracle資料庫
- Oracle資料庫備份與恢復的三種方法(轉)Oracle資料庫
- 資料庫備份資料庫
- Cacti資料備份與遷移 (轉載)
- oracle資料備份Oracle
- 使用innobackupex線上增量備份和再增量備份及恢復mysql資料庫MySql資料庫
- oracle聯機熱備份的原理(轉)Oracle
- oracle uncatalog資料庫備份檔案Oracle資料庫
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- Oracle多例項資料庫備份指令碼Oracle資料庫指令碼
- oracle資料庫的備份與恢復Oracle資料庫
- 轉載oracle資料庫鎖Oracle資料庫
- 《mysql資料庫備份小指令碼》(轉)MySql資料庫指令碼