ITPub博客

首页 > 数据库 > Oracle > 转载 oracle 备份

转载 oracle 备份

Oracle 作者:lynch0227 时间:2014-02-26 20:19:46 0 删除 编辑
备份策略与大企业小企业关系不大,主要看你的应用。

如果要保证数据的实时准确,就一定要打开归档模式,用热备

数据库备份逻辑备份与物理备份,冷备份热备份
2010-6-5 7:35:00对于oracle数据库只有物理备份和逻辑备份

物理备份:是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,通常是从磁盘到磁带。

逻辑备份:是利用SQL语言从数据库中抽取数据并存于二进制文件的过程。

第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库,具体包括冷备份热备份冷备份热备份是物理备份(也称低级备份),它涉及到组成数据库的文件,但不考虑逻辑内容。

第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备,包括导出/导入(EXPORT/IMPORT)。这种方法包括读取一系列的数据库日志,并写入文件中,这些日志的读取与其所处位置无关。

(一)、导出/导入(Export/Import)

利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去。

1、 简单导出数据(Export)和导入数据(Import)

Oracle支持三种类型的输出:

(1)表方式(T方式),将指定表的数据导出。

(2)用户方式(U方式),将指定用户的所有对象及数据导出。

(3)全库方式(Full方式),将数据库中的所有对象导出。

数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。

2、 增量导出/导入

增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。

增量导出包括三个类型:

(1)“完全”增量导出(Complete)

即备份整个数据库,比如:

$exp system/manager inctype=complete file=990702.dmp

(2) “增量型”增量导出

备份上一次备份后改变的数据。比如:

$exp system/manager inctype=incremental file=990702.dmp

(3) “累计型”增量导出(Cumulative)

累计型导出方式只是导出自上次“完全” 导出之后数据库中变化了的信息。比如:

$exp system/manager inctype=cumulative file=990702.dmp

数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效地完成。

比如数据库的备份任务可作如下安排:

星期一:完全导出(A)

星期二:增量导出(B)

星期三:增量导出(C)

星期四:增量导出(D)

星期五:累计导出(E)

星期六:增量导出(F)

星期日:增量导出(G)

如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:

第一步:用命令CREATE DATABASE重新生成数据库结构

第二步:创建一个足够大的附加回段。

第三步:完全增量导入A:

$imp system./manager inctype= RECTORE FULL=Y FILE=A

第四步:累计增量导入E:

$imp system/manager inctype= RECTORE FULL=Y FILE =E

第五步:最近增量导入F:

$imp system/manager inctype=RESTORE FULL=Y FILE=F

(二)、 冷备份

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。冷备份的优点是:

1.是非常快速的备份方法(只需拷贝文件)

2.容易归档(简单拷贝即可)

3.容易恢复到某个时间点上(只需将文件再拷贝回去)

4.能与归档方法相结合,作数据库“最新状态”的恢复。

5.低度维护,高度安全。

但冷备份也有如下不足:

1.单独使用时,只能提供到“某一时间点上”的恢复。

2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。

4.不能按表或按用户恢复。

如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:

1.所有数据文件

2.所有控制文件

3.所有联机REDO LOG文件

4.Init.ora文件(可选)。

值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的

下面是做冷备份的完整例子:

(1) 关闭数据库$sqldba lmode=y

SQLDBA >connect internal;

SQLDBA >shutdown normal;

(2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件

SQLDBA >! cp < file > < backup directory >

(3) 重启Oracle数据库

$sqldba lmode=y

SQLDBA >connect internal;

SQLDBA >startup;

(三)、 热备份

热备份是在数据库运行的情况下,采用archivelog mode方式备份数据的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。

热备份的要求是:

1. 热备份工作必需要求数据库在Archivelog 方式下操作,在SQLDBA状态下用alter database archivelog|noarchivelog命令可改变备份的模式。

2. 热备份只能在数据库不使用或使用率低的情况下进行。

3. 热备份需要大量的档案空间。

一般情况,Oracle 以循环的方式写入Online redo log 文件,当填满第一个redo log文件后写第二个,直至最后一个,最后一个被填满后,后台进程LGWR就覆盖第一个,在Archivelog方式下,后台进程ARCH在每一个redo log 文件被覆盖前,给它作一个拷贝,一般,这些文档的redo log 文件被写入磁盘或磁带中。如果磁盘空间够用,建议使用磁盘,这样可大大减少完成备份所需的时间。

在作热备份之前,要将config.ora文件中的log_archive_start 设为true 将log_archive_dest一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:

1.数据文件一个表空间一个表空间地备份。

(1)设置表空间为备份状态

(2)备份表空间的数据文件

(3)恢复表空间为正常状态

2.备份归档log文件

(1)临时停止归档进程

(2)log下那些在archive redo log目标目录中的文件

(3)重新启动archive进程

(4)备份归档的redo log 文件

3.用alter database backup controlfile命令来备份拷贝文件

热备份的优点是:

1.可在表空间或数据文件级备份,备份时间短。

2.备份时数据库仍可使用。

3.可达到秒级恢复(恢复到某一时间点上)。

4.可对几乎所有数据库实体作恢复。

5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。

热备份的不足是:

1.不能出错,否则后果严重。

2.若热备份不成功,所得结果不可用于时间点的恢复。

3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。

========================================================================================

重做日志有两种类型,一种是归档模式,一种是非归档模式
书上是这么说的,归档模式就是保存所有的事务日志,相反非归档就是不保存旧事务日志
我理解归档模式是这么工作的:当有对数据库有dml和其它的事务处理的时候,日志写进程LGWR会把你的语句写入到日志文件LOG-A中,然后数据库会把你需要该的数据调到内存中,等修改完成后(修改的事务也会被记录到LOG-A中),不知道在什么情况下,会把脏数据写回磁盘。等LOG-A被写满后,发生日志且换,此时CKPT会被触发,CKPT告知控制文件有日志且换发生,等CKPT工作完后,数据库又开始工作了,新产生的日志会被写到LOG-B中,等LOG-B也被写满了,又要发生且换了,此时归档进程会被唤起,LOG-A中的数据要被copy到一个文件里面(我是这么想的,我不知道这个文件叫什么名字),然后数据库的事务日志又源源不断的写到LOG-A中,按照这种工作方式,你的数据库即使出现问题也会被回复到down机前的最后一刻的状态。
非归档是不保存就日志的,就是LOG-A满后且换到LOG-B(不知道此时脏数据会不会被写回磁盘?),LOG-B满后再且换回LOG-A此时,LOG-A中的旧数据会被覆盖。书上术这种模式下的数据恢复是有限的,因为如果在一个记录正好被填满并进行交换时断电,以前的信息会丢失。我有点不理解,如果正常情况下日志且换,脏数据会回写,也就是LOG-A且换到LOG-B的时候,LOG-A中事务信息所涉及的到数据会被写盘,写完后那么LOG-A中的事务信息就没有用了,且换到LOG-B后,在写满LOG-B即将发生且换的时候断电,只要把LOG-B中的事务信息读出来,不就全恢复了么????怎么还会丢失呢???
我知道我写的东西里面有很多问题和很多错误,我希望大家都来积极探讨,因为这是数据库里面的一个很重要的知识点,准确的理解了这些,再做数据恢复的时候就容易的多了。。

=========================================================================================

归档模式,所有redolog会做归档,配合数据库备份可以将数据库恢复到备份后的任意时间点;
非归档模式,不备份日志

即使在非归档模式下,当重做日志未被覆盖时,就是说有两个日志组,A与B,如果在写A时做的冷备份,启动后,在第一次切换到B,写B的过程中数据库崩溃,这里数据是可以恢复的。(但不知道recover会不会去读这个日志,应该可以将数据库切换为归档模式后,强制recover去读未归档的日志A)

在非归档模式下。日志写与读就是你说的轮转方式。

有一个地方不太对,不是发生写数据库动作的时候lgwr会去写log_buffer中的日志信息给当前日志,而是当有一定的条件时lgwr才会去写。而log_buffer中的信息是从哪来的呢?是由server进程写进来的。(此处的server进程区别于后台进程(即最常见的五大进程),而对应于user进程)。

体系结构多读,多想。有好处。good luck。

===========================================================================================

归档模式,可以在线或者离线备份数据库,可以是全备份或者是部分备份(单个表空间,数据文件)
非归档模式只能离线备份,而且必须备份所有的数据文件,控制文件,日志文件!

===========================================================================================

物理:
alter database beign backup (10g)
host copy文件
alter database end backup

逻辑:imp/exp impdp/expdp
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13129975/viewspace-1115462/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-04-02

最新文章