Oracle数据库在线备份原理-阿里云开发者社区

开发者社区> 技术小牛人> 正文

Oracle数据库在线备份原理

简介:
+关注继续查看

前言
    本文从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模式)

20070428110841713.jpg
从上图可以看出,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的另一个后台进程来完成。如下图: 
20070428110842349.jpg
    如图所示:把REDO LOG BUFFER保存下来到后台进程是LGWR,LGWR把REDO LOG BUFFER的内容保存到称为REDO LOG FILES中。 REDO LOG FILES 是一组操作系统文件。如图: 
20070428110842865.jpg

    该数据库中有三组REDO LOG FILES,每组中有两个成员,这两个成员是相互镜像的。ORACLE 数据库的后台进程写满第一组之后,接着写第二组,写满第二组之后写向第三组。写满地三组之后ORACLE地处处理依据ORACLE运行方式不同而不同。

1.   ORACLE运行方式为非归档方式

    在这种情况下,ORACLE数据库不会在任何处理接着写向第一组,将第一组原有的数据覆盖掉。因此REDO LOG FILES原有的数据不可用,故数据库在这种情况下不可恢复。

20070428110842115.jpg
   数据库每次写向一组新的REDO LOG FILE 时都会为该组分配一个序号。这个序号是递增,而且唯一的。并且可以按指定的方式REDO LOG FILE的文件名相关。这样如果REDO LOG FILE 在相同的目录下也不会同名。 
2.   ORACLE 运行方式为归档方式
    在这种情况下,ORACLE数据库接着写向第一组之前,将第一组做一个备份。这个备份就是我们用来做恢复的依据。如图:


20070428110842782.jpg
    归档的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的修改来达到恢复的目的

转自http://bbs.51cto.com/thread-716580-1.html

本文转自  沐木小布丁  51CTO博客,原文链接:http://blog.51cto.com/sxhxt/1135887

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sql server 备份与恢复系列四 大容量模式下的备份与还原
原文:sql server 备份与恢复系列四 大容量模式下的备份与还原 一. 概述   在sql server 备份与恢复系列的第一篇里,有讲到大容量模式下备份与还原的相关知识。这篇重点来演示在大容量模式下常用的备份与还原模式“完整备份+差异备份+日志备份”。
725 0
博客链接—Oracle备份与恢复
001 Oracle数据库的可恢复性设置:http://blog.itpub.net/29067253/viewspace-1986010/ 002 Oracle备份与恢复入门:http://blog.
685 0
再不懂时序就 OUT 啦!,DBengine 排名第一时序数据库,阿里云数据库 InfluxDB 正式商业化!
阿里云数据库 InfluxDB® 版已于近日正式启动商业化 。 InfluxDB 是 DBengine 网站时序数据库类目排名第一的数据库产品,广泛应用于互联网基础资源监控,容器监控,业务运营监控分析,物联网设备远程实时监控,工业安全生产监控,生产质量评估和故障回溯。
3008 0
sql server 备份与恢复系列三 简单恢复模式下的备份与还原
原文:sql server 备份与恢复系列三 简单恢复模式下的备份与还原 一.概述   前面讲了备份的一些理论知识,这篇开始讲在简单恢复模式下的备份与还原。在简单模式下是不能做日志备份的,发生灾难后,数据库最后一次备份之后做的数据修改将是全部丢失的,所以在生产环境下,数据又很重要,一般不建议使用这种模式。
785 0
Oracle数据库的可恢复性设置
整理自《Oracle 11g OCP/OCA 认证指南》 001     为了保证数据库的最大可恢复性,必须多路复用控制文件;必须多路复用联机重做日志;必须以归档日志模式运行数据库,并多路复用归档日志文件;最后必须作常规备份。
849 0
PostgreSQL 最佳实践 - 在线逻辑备份与恢复介绍
背景 PostgreSQL 逻辑备份, 指在线备份数据库数据, DDL以SQL语句形式输出, 数据则可以以SQL语句或者固定分隔符(row格式)的形式输出. 备份时不影响其他用户对备份对象的DML操作. 本文主要介绍一下PostgreSQL提供的逻辑备份工具pg_dump, p
3567 0
理财之星数据库修复
理财之星系列中的进锁存,数据库损坏,分析之,access的mdb数据库,打开,另存为97格式,用坏表导出内容到新转的表,其中注册序列号在reg表中,导完后,运行需要重新注册,根据提示注册,然后装运行环境crystal report,也就是水晶报表了...
577 0
3320
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载