国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle數據庫在線備份原理

2024-08-29 13:33:41
字體:
來源:轉載
供稿:網友
1前言
    本文從Oracle數據庫的基本原理出發,深入的討論了ORACLE數據庫在線備份的基本原理以及利用這些原理為ORACLE數據庫的遠程復制提供了一種方法,也就是ORACLE遠程備份的實現。本文提供的遠程備份實現的過程是從實踐中產生的。 該過程只要稍加修改就可以運用到相應的實際工作中。因此具有實踐的指導意義。以下涉及到的數據庫的內容僅限于ORACLE公司數據庫的范圍。
      要害詞:ORACLE數據庫 DML語句 DDL語句 在線備份 遠程備份
2 ORACLE 工作機制
在討論ORACLE在線備份之前,我們先作一些預備工作。
2.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)語句一經發布,則數據庫中將增加一個對象,如表,用戶等等。2.2ORACLE對DML語句的處理
      有了以上的一些基本概念,我們可以討論ORACLE在線備份了。在此之前,我們首先來看ORACLE對DML(DELETE、UPDATE、INSERT)語句的處理過程:(該系統的拓撲結構為CLIENT/SERVER模式)

Oracle數據庫在線備份原理(圖一)  
從上圖可以看出,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的另一個后臺進程來完成。如下圖:
Oracle數據庫在線備份原理(圖二)
    如圖所示:把REDO LOG BUFFER保存下來到后臺進程是LGWR,LGWR把REDO LOG BUFFER的內容保存到稱為REDO LOG FILES中。 REDO LOG FILES 是一組操作系統文件。
如圖:
Oracle數據庫在線備份原理(圖三)

    該數據庫中有三組REDO LOG FILES,每組中有兩個成員,這兩個成員是相互鏡像的。ORACLE 數據庫的后臺進程寫滿第一組之后,接著寫第二組,寫滿第二組之后寫向第三組。寫滿地三組之后ORACLE地處處理依據ORACLE運行方式不同而不同。

1.   ORACLE運行方式為非歸檔方式

    在這種情況下,ORACLE數據庫不會在任何處理接著寫向第一組,將第一組原有的數據覆蓋掉。因此REDO LOG FILES原有的數據不可用,故數據庫在這種情況下不可恢復。

Oracle數據庫在線備份原理(圖四)
   數據庫每次寫向一組新的REDO LOG FILE 時都會為該組分配一個序號。這個序號是遞增,而且唯一的。并且可以按指定的方式REDO LOG FILE的文件名相關。這樣假如REDO LOG FILE 在相同的目錄下也不會同名。
2.   ORACLE 運行方式為歸檔方式
    在這種情況下,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的修改來達到恢復的目的

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天气| 沾益县| 莱州市| 夹江县| 灵川县| 清河县| 肥乡县| 沙雅县| 临清市| 北辰区| 张家港市| 合川市| 宁化县| 福清市| 榆树市| 乌兰察布市| 南郑县| 子长县| 灌南县| 怀柔区| 漳浦县| 大洼县| 饶河县| 连平县| 唐河县| 贡嘎县| 聂拉木县| 全州县| 永胜县| 黄龙县| 昌都县| 正阳县| 延庆县| 兴文县| 上犹县| 嵊泗县| 游戏| 左贡县| 龙游县| 台前县| 罗山县|