Oracle恢复

2024-10-03

Oracle恢复(精选8篇)

Oracle恢复 篇1

一旦造成数据丢失, 将会付出巨大的工作量去弥补数据, 也可能因此造成不可挽回的损失。因此对从事数据库管理的DBA来说, 做好数据的备份与恢复是一项很重要的工作, 本文主要针对Oracle数据库的恢复相关的技术进行探讨。

1 Oracle数据库的物理结构

Oracle数据库主要由参数文件、数据文件、重做日志文件和控制文件等组成。数据文件、重做日志文件和控制文件是最核心的文件, 其中数据文件保证了数据库数据的持久存在, 保存了所有生成的数据;重做日志文件保证了数据库的可恢复性, 保存数据文件、控制文件等各类文件一段时间以来的修改记录;控制文件的作用主要是确定数据文件和重做日志文件的路径、数据库字符集、数据库当前状态、检查点信息、保存其它文件头部的部分信息以便交叉校验及提供备份信息资料库等。这三类文件是打开数据库所必需的, 缺一不可, 其中重做日志在备份恢复是最重要的。

2 重做日志的作用与原理

重做日志可分为在线重做日志和归档重做日志, 在线重做日志是重做记录在磁盘上的临时保存地点, 它是数据库完全恢复的关键;归档重做日志文件是对过去时间在线重做日志的永久保存。理论上只要数据库的重做日志完整, 数据库就能被完全恢复。

重做日志文件保存的数据称为重做记录, 是它使数据库具备了恢复的能力。对数据库做出的任何形式的更改, 都会在真正执行更改操作之前产生一条重做记录, 该记录包含一个或多个操作, 记载了数据库如何从一个状态改变到另一个状态的具体步骤, 其中包含对多个数据块的修改, 也可能包含对控制文件和其他文件的修改。

一个数据库的状态变更对应一条重做记录, 重做记录则包含一个或多个变更矢量, 变更矢量记载了对一个数据块的原子操作。

以一个update语句为例看一下重做记录的各个变更矢量, 正常情况update命令会产生一条包含4个变更矢量的重做记录。首先是对撤销数据修改的两个变更矢量, 然后是具体的update操作的数据块的变更矢量, 最后一个矢量是一个标记, 不修改任何对象。因此这条重做记录包含了重做记录头部和4条变更矢量。

通过重做记录可以看出数据文件的更新落后于在线日志文件的内容, 这个也是在数据完全恢复时为什么总是需要在线重做日志的原因, 只有应用在线重做日志才能保证数据不丢失。如果在线日志文件全部损坏的话, 那就只能不完全恢复了。

3 数据恢复的原理

Oracle数据库恢复一般分为两类, 实例恢复和介质恢复。实例恢复主要是在数据库启动过程中发现数据库文件不同步, 自动利用在线日志中的重做记录自动对文件进行恢复的过程。介质恢复主要是在文件物理损坏的情况下, 将数据库还原和恢复, 最后使数据库正常运行的过程。因此实例恢复的前提是数据文件、控制文件和在线日志文件必须没有损坏, 其局限性也明显, 介质恢复才是日常数据恢复的一种常见情况。不论哪类的恢复都需要重做日志的支持。

实例恢复一般指实例崩溃 (断电) 或使用命令强制关闭数据库时的一类恢复, 那时有一定的脏数据块还在缓存里, 事务可能有的已经提交有的尚未提交, 更严重的是, 有的事务未提交, 但它们的数据块已经被写回到数据文件中, 这样数据库事务的持久性和原子性都遭到破坏, 因此实例恢复的第一步就是自动前滚, 只要将数据文件头部的检查点SCN (系统变更号) 和当前在线日志文件中最新的重做记录SCN比较, 判断数据文件是否同步, 如果数据文件头部SCN小于重做记录SCN, 则开始前滚, 前滚操作主要是从某一个检查点开始, 逐条读取在线重做日志里记录的重做记录, 更新相应的数据块, 直至用完在线日志的最后一条重做记录。前滚只是解决了数据的持久性, 对未提交的变更和提交的变更都依据在线重做日志恢复出来了, 但是破坏了原子性, 因此实例恢复的第二步需要对未提交的事务进行回滚, 这个是自动进行的。

介质恢复主要因为数据文件遭到了某种程度的破坏, 因此第一步需要先将之前的备份复制到原来的位置, 虽然备份的文件完整性没问题, 但是头部的检查点SCN与在线日志的SCN不连续, 无法进行实例恢复, 因此需要进行手工恢复, 利用recover命令读取归档日志和在线日志中的重做记录, 将变更重做, 把数据文件中丢失的变更找回, 使复制过来的数据文件和日志中的记录变更一致, 最后进行自动回滚。

4 结语

通过本文的介绍, 可以看出重做日志文件在数据恢复中占有非常重要的地位。在实践中, 数据库出现故障后的数据恢复是一项复杂的技术问题。当然不管是实例恢复还是介质恢复, 都离不开备份, 面对各式各样的数据库恢复故障, 只有理解了数据恢复的原理, 才能分析出故障的原因并结合备份数据, 制定合适的恢复策略, 保证数据库应用的正常恢复。

参考文献

[1]徐吉, 龚正良, 万锋, 杨泽平.Oracle数据库数据恢复方法的研究[J].计算机工程, 2005, (13) :75-76.

[2]包光磊.Oracle 11g数据库恢复技术[M].北京:电子工业出版社, 2012:10-16.

[3]余以胜.ORACLE数据库备份解决方案的研究[J].计算机与数字工程, 2006, (1) :119.

[4]冯遵委, 刘伟成, 赵鼎鼎, 史百战.Oracle数据库备份和恢复的研究与应用[J].计算机时代, 2006, (7) :58.

[5]李海波.Oracle数据库的安全及备份恢复[J].电脑知识与技术, 2004, (11) :14.

Oracle恢复 篇2

目前, 数据已成为信息系统的基础核心和重要资源, 同时也是各单位的宝贵财富, 数据 的丢失将导致直接经济损失和用户数据的丢失, 严重影响对社会提供正常的服务。另一方面, 随着信息技术的迅猛发展和广泛应用, 业务数据还将会随业务的开展而快速增加。但由于系 统故障,数据库有时可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如做了备份, 恢复数据就显得很容易。由此可见, 做好数据库的备份至关重要。因此,建立一个满足当前 和将来的数据备份需求的备份系统是必不可少的。传统的数据备份方式主要采用主机内置或 外置的磁带机对数据进行冷备份, 这种方式在数据量不大、操作系统种类单

一、服务器数量 有限的情况下, 不失为一种既经济又简明的备份手段。但随着计算机规模的扩大, 数据量几 何级的增长以及分布式网络环境的兴起, 将越来越多的业务分布在不同的机器、不同的操作平台上,这种单机的人工冷备份方式越来越不适应当今分布式网络环境。

因此迫切需要建立一个集中的、自动在线的企业级备份系统。备份的内容应当包括基于 业务的业务数据,又包括 IT 系统中重要的日志文件、参数文件、配置文件、控制文件等。本文以 ORACLE 数据库为例,结合金华电信的几个相关业务系统目前正在实施的备份方案, 介绍 ORACLE 数据库的备份与恢复。ORACLE数据备份与数据恢复方案 2.1 导出和导入(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=040731.dmp。

(2“ 增 量 型 ” 增 量 导 出 备 份 上 一 次 备 份 后 改 变 的 数 据 , 比 如 :exp system/manager inctype=incremental file=040731.dmp。

(3“ 累积型 ” 增量导出累计型导出方式是导出自上次 “ 完全 ” 导出之后数据库中变化了的 信息。比如:exp system/manager inctype=cumulative file=040731.dmp。

数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。比如数据库的被封任务可以做如下安排:

星期一:完全备份(A 星期二:增量导出(B 星期三:增量导出(C 星期四:增量导出(D 星期五:累计导出(E 星期六:增量导出(F 星期日:增量导出(G。

如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:第一步:用命令 CREATE DATABASE 重新生成数据库结构;第二步:创建一个足够大的附加回滚;第三步:完全增量导入 A :imp system/manager inctype=RESTORE FULL=y FILE=A 第四步:累计增量导入 E :imp system/manager inctype=RESTORE FULL=Y FILE=E 第五步:最近增量导入 F :imp system/manager inctype=RESTORE FULL=Y FILE=F 2.2 冷备份

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

1、是非常快速的备份方法(只需拷文件;

2、容易归档(简单拷贝即可;

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

4、能与归档方法相结合,做数据库 “ 最佳状态 ” 的恢复;

5、低度维护,高度安全。但冷备份也有如下不足:

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

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

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

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

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

1、所有数据文件。

2、所有控制文件。

3、所有联机 REDO LOG文件。

4、Init.ora 文件(可选。

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

下面是作冷备份的完整例子:(1 关闭数据库;sqlplus /nolog sql>connect /as sysdba sql>shutdown normal;(2 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件 sql>cp。

(3 重启 Oracle 数据库 sql>startup。2.3 热备份

热备份是在数据库运行的情况下,采用 archivelog mode方式备份数据库的方法。所以, 如果你有昨天夜里的一个冷备份而且又有今天的热备份文件, 在发生问题时, 就可以利用这 些资料恢复更多的信息。热备份要求数据库在 Archivelog 方式下操作, 并需要大量的档案空 间。一旦数据库运行在 archivelog 状态下,就可以做备份了。热备份的命令文件由三部分组 成: 1.数据文件一个表空间一个表空间的备份:(1设置表空间为备份状态;(2备份表空间的数据文件;(3回复表空间为正常状态。2.备份归档 log 文件:(1临时停止归档进程;(2log下那些在 archive rede log目标目录中的文件;(3重新启动 archive 进程;(4备份归档的 redo log文件。

3.用 alter database bachup controlfile命令来备份控制文件: 热备份的优点是: 1.可在表空间或数据库文件级备份,备份的时间短。2.备份时数据库仍可使用。

3.可达到秒级恢复(恢复到某一时间点上。4.可对几乎所有数据库实体做恢复。

5.恢复是快速的,在大多数情况下爱数据库仍工作时恢复。热备份的不足是: 1.不能出错,否则后果严重;2.若热备份不成功,所得结果不可用于时间点的恢复;3.因难于维护,所以要特别仔细小心,不允许 “ 以失败告终 ”。3 系统数据库备份策略

数据库运行在归档模式下, 利用 Veritas 软件模块调用数据库的备份接口进行在线的热 备份, 可以在备份时,对备份数据保存在不同的存储对象中, 以满足客户容灾的要求, 可以 利用 Veritas 的多线程的数据迁移、利用多个磁带驱动器同时读写提高其数据备份的效率。针对数据库的总数据量和增量数据量大小, 我们可以利用数据库的多级的增量备份机制, 结 合 Veritas 强大的备份数据追踪寻址能力和介质管理功能,制定灵活的备份策略,实现全 自动的备份数据的全生命周期管理。

4备份系统数据库恢复策略

通过本地的 Veritas Server结合 Veritas for Databases利用备份数据进行数据恢 复。恢复时, Veritas 可以实现多线程的数据恢复,利用 Veritas 独特的磁带分类集中存 放技术,减少磁带的就位时间,提高数据恢复的效率。

先用最近一次的全备份恢复+恢复最近一次的增量备份+增量备份到断点的 ARCHIVE LOG 来恢复(要求数据库在 ARCHIVE LOG 模式下工作)。这种恢复方式比全部用 ARCHIVE LOG 恢复要快。如果两份冗余的最近一次增量备份都不可用,可以追溯再上次的增量备份来恢复,然后 用增量备份到断点的 ARCHIVE LOG 恢复。如果最近一次的全备份恢复都不可用,则利用上个周期的全备份+上个周期的最后一次 增量备份+本周期的最近一次增量备份+增量备份到断点的 ARCHIVE LOG 来恢复。如果增量备份都不可用,那么用全备份+ARCHIVE LOG 来恢复。5 数据库恢复可以分为以下两类: 5.1 实例故障的一致性恢复 当实例意外

地(如掉电、后台进程故障等)或预料地(发出 SHUTDOUM ABORT 语句)中 止时出现实例故障,此时需要实例恢复。实例恢复将数据库恢复到故障之前的事务一致状态。如果在在线后备发现实例故障,则需介质恢复。在其它情况 Oracle 在下次数据库起动时(对 新实例装配和打开),自动地执行实例恢复。如果需要,从装配状态变为打开状态,自动地 激发实例恢复,由下列处理:

(1)

为了解恢复数据文件中没有记录的数据,进行向前滚。该数据记录在在线日志,包括对回滚段的内容恢复。所指定的操作。

(2)回滚未提交的事务,按步 1 重新生成回滚段

(4)

(3)释放在故障时正在处理事务所持有的资源。

解决在故障时正经历一阶段提交的任何悬而未决的分布事务。5.2 介质故障或文件错误的不一致恢复 介质故障是当一个文件、一个文件的部分或磁盘不能读或不能写时出现的故障。文件错 误一般指意外的错误导致文件被删除或意外事故导致文件的不一致。这种状态下的数据库都 是不一致的,需要 DBA 手工来进行数据库的恢复,这种恢复有两种形式,决定于数据库运行 的归档方式和备份方式。(1)完全介质恢复可恢复全部丢失的修改。一般情况下需要有数据库的备份且数据库 运行在归档状态下并且有可用归档日志时才可能。对于不同类型的错误,有不同类型的完全 恢复可使用,其决定于毁坏文件和数据库的可用性。(2)不完全介质恢复是在完全介质恢复不可能或不要求时进行的介质恢复。重构受损 的数据库,使其恢复介质故障前或用户出错之前的一个事务一致性状态。不完全介质恢复有 不同类型的使用,决定于需要不完全介质恢复的情况,有下列类型:基于撤消、基于时间和 基于修改的不完全恢复。

基于撤消(CANCEL恢复:在某种情况,不完全介质恢复必须被控制,DBA 可撤消在指定 点的操作。基于撤消的恢复地在一个或多个日志组(在线的或归档的)已被介质故障所破坏,不能用于恢复过程时使用,所以介质恢复必须控制,以致在使用最近的、未损的日志组于数 据文件后中止恢复操作。

基于时间(TIME和基于修改(SCN的恢复:如果 DBA 希望恢复到过去的某个指定点,是 一种理想的不完全介质恢复,一般发生在恢复到某个特定操作之前,恢复到如意外删除某个 数据表之前。

NUB恢复ORACLE数据库 篇3

NUB(Veritas Net Backup)是公认的企业级备份和恢复软件的领导者,越来越多的企业采用NBU备份ORACLE数据库。NBU备份的ORACLE数据,依据不同的情况及用户期望的目标,可以有不同的恢复方式。本文所陈述的是在一种极端情况下的数据库恢复,即原来运行的数据库软硬件平台已不复存在,仅留下备份数据,需要将ORACLE数据库恢复到一个新建的数据库平台上。理解了这种恢复方式,则其他恢复方式都可以看做这种恢复方式的简化操作。

2 运行环境

2.1 原始数据库的运行环境

原始数据库运行于Linux平台,采用2台服务器组成RAC集群,数据库的数据文件存储在ASM的+YTNC存储组中,数据库实例分别是ytcdb1和ytcdb2。Hosts文件内容如下:

其中netbackup为NBU备份服务器主机及备份介质服务器。

2.2 新建数据库运行环境

新建数据库运行环境运行于Linux平台,采用2台服务器组成RAC集群,数据库的数据文件存储在ASM的+DBDIR存储组中,安装数据库时仅安装程序,不创建数据库。CRS程序安装目录为/oracle/crs,数据库程序安装目录为/oracle/ora。

Hosts文件内容如下:

新环境包含ytcdb03、ytcdb04的CRS集群及ASM实例,不包括任何数据库。

3 安装NBU客户端

CRS环境下的数据库恢复,仅需在其中一个集群成员上完成,本文选择在ytcdb03上实施数据库恢复。在ytcdb03上安装NBU客户端,确保ytcdb03能够与netbackup建立通讯。NBU程序安装于/usr/openv/netbackup/bin。

4 查看备份数据

以上为2016年9月2日22时59分开始做的一个数据库全备份,其中/c-588629775-20160903-05中含有这个备份数据的最新的参数文件及控制文件,本文将从这个全备份中恢复数据。

5 恢复参数文件spfile

我们所需要的参数文件位于备份集c-588629775-20160903-05中,其原始存储位置位于ASM的+YTNC存储组中,在恢复的时候要重定位到ASM的+DBDIR存储组中。以下为恢复参数文件的RMAN程序:

6 编辑参数文件

由于参数文件中控制文件的位置、归档日志位置、闪回区位置等都是指向原始运行平台的位置,所以,参数文件恢复之后,要对参数文件进行修改,主要是修改控制文件、归档日志、闪回区位等在新环境下的位置。

6.1 设置oracle环境变量

6.2 启动数据库到nomount状态

6.3 利用spfile生成可编辑的pfile文件

6.4 编辑pfile文件

将以上涉及存储位置的行对应修改为:

6.5 用新的pfile文件启动数据库

6.6 创建新的spfile文件

7 恢复控制文件

参数文件准备好以后,就可以恢复控制文件了。控制文件的存储位置是有参数文件确定的,在恢复时不需要指定存储位置。控制文件恢复的RMAN程序如下:

8 恢复数据文件

8.1 将数据库启动到mount状态

在恢复数据文件之前,我们要将数据库启动到mount状态。由于在恢复控制文件之前已将数据库启动到nomount状态,因此可以用如下SQL命令将数据库置于mount状态。

8.2 查看原始数据文件

到目前为止,控制文件中仍然保存着原始数据库的数据文件名称及存储位置,我们先要确定原始数据库有哪些数据文件及存储在什么位置,可以通过查询v$datafile获得原始数据库文件名及存储位置。

8.3 恢复数据文件

恢复数据文件最主要的是重定向数据文件的存储位置,将数据文件恢复到新环境下的ASM存储组中。恢复数据文件的RAM程序如下:

8.4 修改redolog文件位置

原始redolog文件的名称及存储位置可以通过查询图v$Logfile获得:

利用SQL命令修改redolog文件的存储位置:

8.5 修改tempfile文件位置

原始tempfile文件的名称及存储位置可以通过查询图v$tempfile获得:

利用SQL命令修改tempfile文件的存储位置:

9 恢复数据库

恢复数据库仍然必须使用RMAN程序,并且同样要连接到NBU的磁带库,因为恢复数据库时要查找所需的归档日志。恢复数据库的RMAN程序如下:

注意程序执行完毕时的错误提示:

由于NBU采用在线备份(热备份),在备份时数据库仍然在运行,在线归档日志在不断变化,NBU并不备份在线归档日志。把数据库恢复到一个新的数据库平台上,由于没有在线归档日志,实际上是一种不完全恢复,因此,在数据库恢复时会报需要在线归档日志的错误,只能忽略。

1 0 打开数据库

由于数据库恢复过程中无法应用在线归档日志。因此,在打开数据库时,需要使用RESETLOG参数,强制数据库放弃原来的在线归档日志,使用新的在线归档日志。

1 1 在集群中添加数据库

数据库成功恢复并打开之后,需要将数据库添加到CRS集群中,添加数据库的关键是spfile文件的位置及数据库程序的安装位置。

以oracle登录:

其中:oracle数据库安装目录为/oracle/ora,数据库名称为ytcdb。

查看数据库添加结果:

1 2 在集群中添加数据库实例

以oracle登录:

查看数据库实例添加结果:

1 3 重启数据库集群

1 3.1 分别在ytcdb03和ytcdb04重启CRS。

1 3.2 查看CRS集群状态

1 4 结语

NBU恢复oracle数据库依据不同的目的及环境状况可以有不同的恢复方式,本文论述的是原始数据库运行环境被彻底破坏,需要将数据库恢复到一个新的运行环境时的恢复方法,可以说基本囊括了常见的数据库恢复方法。针对不同的数据库故障,参照本文,适当省略不必要的步骤,可以轻松完成各种故障现象下的oracle数据库恢复。

参考文献

Oracle恢复 篇4

1.1 实例恢复

当实例意外地(如断电、内存故障、后台进程故障等)或预料地(发出shutdown abort语句)中止时出现实例故障,此时需要实例恢复。实例恢复就是通过回滚未提交的事务,对已提交事务但修改还未运用到数据文件的事务进行重做,从而将数据库恢复到故障之前的事务一致状态。实例故障不会破坏数据库文件和日志文件,其恢复过程由Oracle数据库下次启动时自动完成。

1.2 介质恢复

介质故障指存放数据库的存储介质出现故障,如磁盘损坏、自然灾害、恶意破坏等,导致数据库物理文件被破坏或丢失。通常意义上的介质恢复包括数据库还原(Restore)和数据库恢复(Recover)两个阶段。还原一个数据库是指使用物理备份重建数据库,即将备份传送到数据文件原来所在位置;恢复数据库是指将归档日志文件中所记录的数据变化应用到还原后的数据库上,使之恢复到当前时间点状态。

根据数据库的恢复程度,介质恢复分为下面两种类型。

(1)完全恢复

完全恢复可以将数据库恢复到最后正常运行的时间点,而且不会丢失数据。一般情况下完全恢复需要有数据库的全库备份且数据库运行在归档模式下并且有可用归档日志时才可能实现。

(2)不完全恢复

不完全恢复可以将数据库恢复到出现异常前的某个时间点,但这种恢复方式会导致恢复的时间点之后提交事务的数据丢失。不完全恢复有基于撤消(CANCEL)的恢复、基于时间(TIME)的恢复和基于修改(SCN)的恢复3种类型。用户在完全恢复不可能或绝对需要时才执行不完全恢复。

1.3 逻辑备份的恢复(Import)

Import和Export是数据逻辑导入导出的两个相配套的实用程序。Export把数据库中的数据导出到操作系统文件中,而Import实用程序则把Export导出的数据恢复到数据库中。对于人为操作性失误可以采用Import导入最新的逻辑备份来恢复。

2 常规数据库恢复方案

小型Oracle数据库可以利用操作系统命令和数据库命令相结合来手工完成数据库恢复。

2.1 非归档模式下数据库的恢复

非归档模式下的恢复方案可选性很小,一般情况下采用数据库冷备份的完全恢复。这种恢复仅仅需要拷贝原来的备份就可以restore,不需要recover,就好比把数据库又放到了一个以前的“点”上,但是在备份点之后与崩溃之前的数据将会丢失。恢复的主要步骤包括:(1)关闭数据库;(2)将备份的所有文件拷贝回来;(3)重启数据库;(4)完成介质恢复。

非归档模式下如果采用逻辑备份方式,不必关闭数据库,可以对数据库直接进行对象或数据级的恢复。以整库逻辑备份与恢复为例,命令行的语法是:

2.2 归档模式下数据库的恢复

归档模式下既可进行热备份与恢复也可进行冷备份与恢复。损坏或丢失一个数据文件的情况下,如果存在相应的备份与该备份以来的归档日志,恢复还是比较简单的。假设有一个表test,数据文件d:oracleoradatatestusers01.dbf的file#为n,如果该数据文件丢失,则恢复的方法如下:

如果丢失或损坏多个数据文件,则可进行整个数据库的恢复。其过程与上面类似,只不过拷贝备份回到原地点后,要执行recover database命令恢复数据库。恢复过程在mount下进行,如果恢复成功,再打开数据库,down机时间可能稍长一些。

在实际应用中发生故障的数据文件也分好多种,用户要注意区分下列情形:数据文件是否是系统表空间数据文件;数据文件中是否包含回滚段;发现数据文件丢失或损坏时数据库是打开还是关闭状态;数据文件中有没有活动事务。在恢复这些数据文件时要考虑诸多因素,处理细节上也不尽相同。如果损坏的是临时表空间数据文件,删除后重建即可。

2.3 不完全恢复

不完全恢复有3种方式,这里以基于时间的恢复为例说明。如用户由于误操作删除了一个数据表,利用基于时间的恢复方法可以将数据库恢复到表删除时间之前。实现步骤如下:

说明:不完全恢复需要拷贝所有的数据文件,如果有一个数据文件的SCN大于不完全恢复点,那么这个恢复都将是失败的。不完全恢复之后,建议马上再做一次全备份,因为resetlogs选项会重新创建redo log文件,这将使之前做的所有备份变为不可用。另外,如果不知道删除之前的实际时间,可采用大致时间,或采用分析日志文件(logmnr)取得精确的需要恢复的时间。

3 非常规数据库恢复方案

3.1 没有备份的恢复

如果丢失数据文件后,发现没有故障前的数据文件的备份,可通过重建数据文件来恢复,前提是数据库设置为归档模式并且归档日志文件保存完整。例如,因误操作数据库中某一数据文件被损坏,其恢复步骤与归档模式下数据文件的恢复相似,不同点是将损坏文件脱机后要执行alter database create datafile重建一个空的数据文件,然后执行set autorecovery on启用日志自动恢复,再执行recover datafile恢复该数据文件,最后打开数据库,将恢复后的数据文件联机。

3.2 损坏联机日志的恢复

如果损坏的是当前的联机日志文件并且数据库又没有镜像,那么可按下述步骤恢复:

(1)将数据库shutdown abort。

(2)从最近的一次全备份中恢复所有的数据文件。

(3)将数据库启动到mount状态。

(4)使用recover database until cancel命令来恢复数据库。

(5)用alter database open resetlogs打开数据库,如果没有问题则恢复成功。

此法为数据库的不完全恢复,所有包含在损坏的redo log中的信息将会丢失。建议联机日志恢复成功之后,再做一次数据库的全备份。应尽量使每个日志组具有多个日志成员,并且放置在不同的驱动器上,以防止发生介质故障。

3.3 损坏控制文件的恢复

控制文件中记录着整个数据库的结构、每个数据文件的状况、系统SCN、检查点计数器等重要信息。若控制文件损坏,最典型的就是启动数据库出错。在创建数据库时系统会让用户指定3个位置来存放控制文件,它们之间互为镜像,当其中任何一个发生故障,只要拷贝一个好的控制文件替换坏的控制文件或修改Init.ora中的控制文件参数,取消这个坏的控制文件就可以了。

如果控制文件全部损坏,可以在Nomount模式下执行create controlfile来重新生成控制文件,此时注意要完整列出所有的数据文件与联机日志文件的文件名及路径等信息。如果之前运行alter database backup controlfile to trace对控制文件作过备份,恢复时可使用生成的脚本来重建或用备份文件覆盖。建议镜像控制文件在不同的磁盘上,并长期保留一份控制文件的文本备份。

3.4 损坏归档文件的恢复

如果丢失或损坏的是归档文件,首先shutdown数据库立即作一个冷备份,然后修改ini文件中的归档日志文件目的路径,重新启动数据库。以后再发生故障只需从最新的备份中将相关文件恢复。在Oracle8i之后的版本中允许保留多份归档文件到不同位置,甚至到远端服务器,从而保证归档文件的可靠性。

4 其他数据库恢复技术

前面所述的通过操作系统命令和数据库命令相结合来完成数据库恢复的方法属于手工实现数据恢复,该实现过程要谨慎,具有一定的操作复杂性和风险。

RMAN(Recovery Manager)是Oracle公司自Oracle8i版本之后提供的一种专门备份与恢复工具。它具有很多优势,能够实现块级增量备份和受损数据块的单独恢复,并且支持多通道并行读写。应用操作系统的任务计划或Oracle的DBMS_JOB包自动执行RMAN备份脚本,可实现数据库的自动在线物理备份。RMAN提高了备份与恢复操作的效率和可靠性,如果运行环境比较复杂,建议使用RMAN执行备份和恢复作业。用户还可以选择使用基于RMAN技术实现的NetWorker或NetBackup等第三方备份软件。

如果数据库只有极少的关机时间,那么也可从硬件角度来考虑备份与恢复的问题,例如使用硬盘镜像或基于文件同步/异步的双机备份系统。Oracle8i版本中提供的Standby Database技术和Oracle9i版本中提供的Data Guard技术都属于这种数据库容灾方案。

摘要:对于大型数据库应用系统一个很关键问题,是如何保证在灾难或严重错误发生的情况下将数据正确恢复。对当前流行的Oracle数据库的数据恢复功能进行了详细的描述并分析了各种技术和Oracle数据库的特点,重点介绍了可能遇到的各种故障和相应的恢复策略。

关键词:Oracle,数据库恢复,分类,方法

参考文献

[1]谈竹奎,况志军.Oracle9i数据库管理员高级技术指南[M].北京:中国铁道出版社,2003.

[2]何月顺,汤彬.Oracle数据库的灾难恢复[J].计算机系统应用,2002,(9).

[3]欧阳谊,王俊.增强Oracle9i数据库可用性的备份与恢复方法[J].办公自动化,2009,(3).

[4]黄敏.建立Oracle数据库的有效备份与恢复机制[J].中国金融电脑,2002,(12).

Oracle恢复 篇5

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

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

(一) 简单导出数据 (Export) 和导入数据 (Im-port)

Oracle支持三种类型的输出:

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

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

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

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

(二) 增量导出/导入

增量导出是一种常用的数据备份方法, 它只能对整个数据库来实施, 并且必须作为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:

$impsystem./managerinctype=RECTORE FULL=Y FILE=A

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

$impsystem/managerinctype=RECTORE FULL=Y FILE=E

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

$impsystem/managerinctype=RESTORE FULL=Y FILE=F

二、冷备份

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

(一) 冷备份的优点

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

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

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

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

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

(二) 冷备份的不足

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

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

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

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

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

(1) 所有数据文件;

(2) 所有控制文件;

(3) 所有联机REDO LOG文件;

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

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

5. 下面是做冷备份的完整例子。

(1) 关闭数据库:

$sqldba lmode=y

SQLDBA>connect internal;

SQLDBA>shutdown normal;

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

SQLDBA>!cp

(3) 重启Oracle数据库:

$sqldba lmode=y

SQLDBA>connect internal;

SQLDBA>startup;

三、热备份

热备份是在数据库运行的情况下, 采用archivelog mode方式备份数据的方法。所以, 如果你有昨天夜里的一个冷备份而且又有今天的热备份文件, 在发生问题时, 就可以利用这些资料恢复更多的信息。热备份要求数据库在Archivelog方式下操作, 并需要大量的档案空间。一旦数据库运行在archivelog状态下, 就可以做备份了。热备份的命令文件由三部分组成:

(一) 数据文件一个表空间一个表空间地备份

1. 设置表空间为备份状态;

2. 备份表空间的数据文件;

3. 恢复表空间为正常状态。

(二) 备份归档log文件

1. 临时停止归档进程;

2. log下那些在archive redo log目标目录中的文件;

3. 重新启动archive进程;

4. 备份归档的redo log文件。

(三)

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

(四) 热备份的优缺点

1. 热备份的优点

(1) 可在表空间或数据文件级备份, 备份时间短;

(2) 备份时数据库仍可使用;

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

(4) 可对几乎所有数据库实体作恢复;

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

2. 热备份的不足

(1) 不能出错, 否则后果严重;

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

Oracle恢复 篇6

Oracle数据库作为主流数据库之一, 是一个能支持各种操作系统和硬件平台功能极其强大和灵活的关系型数据库系统。Oracle数据备份是维护数据库系统安全的重点工作, 广泛应用在世界各地。一般在正常情况下, Oracle数据库能够使数据的安全和系统保证稳定, 为用户提供正常便利的服务, 但是会在一定程度上影响到数据库中数据的正确性和安全性, 受到计算机系统存在的安全问题的影响, 会导致数据库的破坏和其中数据的丢失等后果发生, 严重的甚至会导致系统瘫痪。因此, 制定完善的数据库安全策略, 以避免因数据丢失造成的严重损失就显得尤为重要。Oracle数据库的备份与恢复是最基本的措施, 也是最有效的数据库保护措施之一。

1 产生Oracle数据库故障的原因

数据库处于危险时会造成许多无法估量的损失。因此, 我们首先需要明确是由什么导致数据故障产生的, 从而对症下药, 找到合理的解决方法。就目前的研究现状而言, 数据产生故障的原因有: (1) 由逻辑错误引发的语句故障; (2) 因用户进程非常态运行造成的进程故障; (3) 由用户非正常操作导致的用户故障; (4) 主要是后台进程造成的实例故障;五, 由数据库文件发生物理损坏导致的介质故障。其中实例故障是数据库中较为常见的故障类型之一。

2 备份恢复

2.1 备份恢复的概念

Oracle数据库备份主要是针对数据库内所有数据和控制文件进行的备份工作。此项工作是保证数据库安全运行的重要环节之一, 同时, 是数据库管理人员的主要工作职责。Oracle数据库包括多种备份恢复方式, 主要由逻辑备份恢复与物理备份恢复两种类型组成。逻辑备份和恢复从指定的备份集将数据导入到数据库或是用Oracle提供的导入导出工具将数据库中的逻辑数据导出到指定的备份集。逻辑备份产生的备份集较小, 可以节省存储空间的占用。但是, 逻辑备份和恢复在恢复时容易出现数据库不一致的问题, 因此一般只适用于像测试数据库等备份工作。物理备份与恢复则是以物理数据块为单位, 这种备份产生的备份集相对较大, 可以完全避免出现数据库一致性现象, 所以这种方式一般适用于像生产数据库等重要的数据库备份。

2.2 数据备份与恢复应遵循的原则

数据备份与恢复应遵循的原则有很多, 其中最重要的是要确保方案可靠, 能确保数据安全;其次, 要在经济情况允许和技术支持的前提下, 量力而行, 达到经济实用, 物美价廉的效果;最后, 方案实施和运行时要保证系统的正常运行, 尽量避免手工干预, 采取自动执行的方法。

2.3 oracle数据库的有效备份与恢复策略

2.3.1 备份策略

(1) 联机备份、脱机备份和逻辑备份 (导入和导出) 相结合。Oracle数据库备份策略以联机备份为主, 脱机备份和逻辑备份为辅。当物理备份 (联机备份与脱机备份) 损坏时, 用户可以通过重新创建数据库的方法, 用逻辑备份来恢复数据库。

(2) 在备份工作完成之后, 用户需要检查备份是否成功、有效。

(3) 每周尽可能进行至少一次数据库的脱机备份工作, 提高工作效率。作为辅助成分的脱机备份, 这种备份工作强调的是备份数据, 而非复制物理文件。而不定时且定期的脱机备份, 不但可以节省备份用, 达到高效备份策略的目标, 而且, 数据库在特殊模式下可以在特定的情况下进行联机备份。这种备份模式有利于数据库恢复策略灵活性的提高和减少故障时导致的数据丢失问题。因此, 用户可以在每天数据库访问量较少的时候进行联机备份, 保证数据的正常、有效运行。

(4) 尽可能保存两份或者多份的数据备份。其中, 值得注意的是, 在时间非紧迫状态下, 应避免使用磁盘进行备份。但这种方法有一定弊端, 即不能代替对数据库文件的物理备份, 也不能提供完全恢复。

(5) 将数据库的工作模式设置成归档模式并不定期地进行逻辑备份。具体问题具体分析, 根据数据的实际使用情况, 有针对性地实施部分备份或者全备份。

(6) 介质应存放在与计算机设备不同的地点, 使备份与计算机设备免于一同损坏。而且, 备份介质最好使用大容量的磁带或磁带库。同时, 养成良好的习惯, 及时、准确地根据备份的内容、日期将介质统一编号, 避免因备份和恢复时弄错介质使原有的备份丢失。

2.3.2 恢复策略

恢复策略包括备份恢复策略和向前滚动方案两种。其中, 数据已经过备份是备份恢复策略有效实施的前提。备份恢复方案是脱离Oracle的管理时, 并对数据库中某一块数据生成备份数据文件, 然后自动存储于磁盘当中的方案。这样数据发生问题时, 便可利用预先备份好的数据恢复到数据库中, 重新实现备份。而向前滚动方案, 能够使经过备份后的数据不丢失, 并可以借助某个正常状态进性记忆形成日志文件。这种方法是为使数据库恢复到正常状态而借助存档的重做记录文件功能实现的, 但成本较高。以下几点是根据不同数据故障实施的措施, 为用户提供参考:

(1) 如果忘记备份数据仅有归档日志的情况下, 用户可以采取通过重建数据文件来恢复。但值得注意的是要确保将数据库设置为归档模式并且归档日志文件保存完整。

(2) 数据库崩溃。数据的备份有逻辑备份和物理备份之分, 或分为完全备份和不完全备份两种。数据库崩溃可能是由磁盘和磁盘阵列的介质不可靠导致的, 也可能是受到病毒等因素的影响, 这些因素会导致整个操作系统的崩溃, 使得Oracle数据库也随之崩溃, 造成不必要的损失。而在这种情况下用户只能利用完全备份来进行数据恢复工作。具体步骤:首先用户应该对文件系统进行重建, 进而去掉失掉的坏块, 对完好的磁盘和磁盘阵列再一次进行初始化操作, 使磁盘为数据的恢复提供容量, 确保磁盘和磁盘阵列的可靠性和消灭病毒, 不给数据库崩溃留机会。然后利用完全备份完整的恢复数据库系统, 最后启动数据库。其中, 数据库恢复分成实例恢复与介质恢复两种。实例和崩溃恢复的主要目的是还原失败实例中缓存上记录的事务信息, 并且关闭仍然打开的重做线程。这种恢复仅使用在线重做日志和当前处于在线的数据文件, 而且自动接受重做信息, 不需要用户干预, 也就是说Oracle内部机制在发生实例和崩溃错误后, 在数据库下次启动过程中自动进行数据恢复。

3 结束语

数据系统突发事故给用户带来的巨大损失, 使我们应该要意识到数据库备份和恢复的重要性。同时需要对不同的数据故障了然于心, 可以根据实际的情况制定出相关的备份策略, 做出及时、有效的恢复策略。当然最重要的是养成良好的习惯, 勤做备份, 且经常检测备份的有效性, 防患于未然, 这样就能在工作当中最大限度地避免数据库损坏带来的麻烦, 轻松应对各种情况了。

参考文献

[1]李春林, 张文体, 周根鸿.一种简便易行的Orae1e数据备份恢复策略[J].医学信息, 2007.[1]李春林, 张文体, 周根鸿.一种简便易行的Orae1e数据备份恢复策略[J].医学信息, 2007.

[2]王健.Oracle数据库的备份与恢复策略研究[J].计算机安全, 2007.[2]王健.Oracle数据库的备份与恢复策略研究[J].计算机安全, 2007.

[3]李海波.Oracle数据库的安全及备份恢复[J].电脑知识与技术, 2004, (11) :13-15.[3]李海波.Oracle数据库的安全及备份恢复[J].电脑知识与技术, 2004, (11) :13-15.

[4]刘志敏.Oracle数据库应用管理解决方案[M].北京:电子工业出版社出版, 2002.[4]刘志敏.Oracle数据库应用管理解决方案[M].北京:电子工业出版社出版, 2002.

[5]黄奕华.Oracle数据库的备份及恢复技术的研究与应用[A].办公自动化学术研讨会论文集[C].2007 (11) .[5]黄奕华.Oracle数据库的备份及恢复技术的研究与应用[A].办公自动化学术研讨会论文集[C].2007 (11) .

[6]李桂祥.基于文件同步的ORACLE数据库备份与恢复方法[J].重庆医学, 2009 (33) .[6]李桂祥.基于文件同步的ORACLE数据库备份与恢复方法[J].重庆医学, 2009 (33) .

Oracle恢复 篇7

Oracle数据库在正常情况下能够保证数据的安全和系统的稳定,为用户提供日常服务,但由于在使用过程中计算机硬件故障、系统软件和应用程序的错误、操作员的失误等都可能影响数据库中数据的正确性和安全性,重则使数据库中的数据部分或全部丢失,甚至导致系统瘫痪。这就要求数据库管理员必须采用适当的技术手段和方法,延长数据库平均故障的发生时间,并当数据库中的数据遭到破坏时能够尽快从数据备份中恢复数据,从而将损失减少到最小,保障企业的效益。Oracle为用户提供了完善的备份与恢复功能,保证系统的安全性。本文将在介绍Oracle备份与恢复技术基础上,阐述Oracle数据库备份与恢复的策略。

1 Oralce数据库的备份方案

Oracle数据库提供了两类备份,物理备份和逻辑备份(导入/导出)。物理备份是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,它只涉及到组成数据库的文件,而不考虑其逻辑内容。而逻辑备份是利用SQL语言从数据库中抽取数据连同逻辑结构写入二进制文件中的过程,逻辑备份是物理备份的补充。

物理备份又根据数据库的工作模式分为非归档模式(nonarchive log)和归档模式(archive log)。非归档模式又被称为脱机备份或冷备份,而相应的归档模式被称为联机备份或热备份。它们的关系如图1所示。

这三种备份方案各有特点,采用何种备份方案,既要根据应用系统的规模、用户多少、数据量的大小等具体情况,还要考虑实现技术的复杂性、数据库管理员的技术熟练度等多种因素。

1.1 脱机备份(非归档模式)

数据库脱机备份,即在数据库已经正常关闭的情况下进行备份,数据库处于Offline状态。其特点是简单、可行、可靠。脱机备份要备份所有的数据文件(.DBF文件)、所有控制文件(.CTL文件)、所有联机日志文件(REDO*.*文件)、以及初始化参数文件INIT.O-RA(可选)。当数据库处于打开状态时,执行数据库文件系统备份是无效的。

由于在进行数据库备份期间数据库是关闭的,导致应用系统无法使用,尤其在数据库比较大、文件的读、写速度较慢,系统要求工作在7×24模式下采用此方案不合适。但对于小型的应用,单位没有专职的数据库管理员,应用系统不要求7×24不间断工作,采用此方式备份则切实可行。

1.2 联机备份(归档模式)

联机备份是指在数据库打开运行的情况下进行备份,一般需要通过使用Alter命令改变表空间的状态来开始进行备份,备份完成后,恢复原来的状态。联机备份方式可以用在数据库不能中断,需要全天运行的条件下。联机备份要求数据库必须在归档方式下操作,由于联机备份需要消耗较多的系统资源,如大量的存储空间,因此联机备份应安排在数据库不使用或使用率较低的情况下进行为宜。

联机备份方法可以使用SQL*Plus程序和Oracle Enterprise Manager(OEM)中的备份向导两种方式进行联机备份。使用SQL*Plus语句的备份过程如下:

1)查看数据库是否已经启动归档日志:

archive log list;

如果归档日志模式没有启动,则打开数据库的归档日志模式,先使用shutdown immediate命令关闭数据库,然后使用如下命令启动数据库:

startup mount;

2)修改数据库的归档日志模式:

alter database archivelog;

3)完成联机备份。

一旦数据库运行在archivelog状态下,就可以做备份了。sqlplus上执行的联机备份命令包括对三部分文件的备份:

第一步,数据文件的备份。

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

alter tablespace example begin backup;

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

用操作系统的复制拷贝数据文件。

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

alter tablespace example end backup

第二步,归档日志文件备份:

alter system switch logfile;--强迫日志切换,以便所有的日志都被归档

archive log list;--获取当前的日志顺序号

从最早的概要日志序列到当前日志序列的联机redo日志都应该拷贝出来。

第三步,控制文件的备份:

alter database backup controlfile to trace;--获得控制文件的备份

然后到%oracle_base%admin%oracle_sid%udump目录中寻找最新的跟踪文件,其中有重建控制文件的全部命令。

1.3 逻辑备份

Oracle数据库的逻辑备份与恢复又称导出/导入,通过导出可以将数据移出数据库,这些数据的读取与其物理位置无关,“导出”文件为二进制系统文件。与物理备份相比,虽然逻辑备份不够全面,但是逻辑备份可基于整个数据库、用户模式或表模式将数据导出,较为灵活。对于一些重要的数据可以采取该种方式作为辅助备份。此外,采用逻辑方式导出导入数据的方法可较好地实现在不同操作系统平台、不同数据库版本之间进行数据库迁移,这对于物理备份是一个很好的补充备份形式。

1.3.1 使用EXPORT导出操作

Oracle传统上逻辑备份可以通过EXPORT程序在命令行下完成备份工作或通过Oracle Management Server(OMS)中的导出工具来完成。下面介绍命令行下进行的导出操作,而OMS的导出可以根据其导出向导进行操作。

从命令行调用Export程序完成导出操作,导出的具体任务由命令的参数和参数值决定。导出命令基本格式如下:

EXP USERID=username/password PARAMETER=(value1,value2,…value N)

其中PARAMETER可以是导出命令的一些参数名称,value表示该参数的取值。

导出有三种类型:表模式导出、用户模式导出和完全数据库导出。

1)表模式导出

表模式导出是对数据库中特定用户所有的一张或者几张表的结构以及数据进行导出,将这些数据和定义存储在一个导出文件中。相关命令:

exp username/password tables=employees file=test.dmp

如果需要导出多个表,并将工具的反馈信息输出到日志文件,可以通过以下形式进行导出:

exp username/password tables=(employees,jobs)file=test.dmp log=test.log

2)用户模式导出

用户模式导出是对数据库中一个或者几个用户对应的模式中的对象和数据进行导出,使用用户模式的关键字为owner=,具体命令为:

exp username/password owner=username file=test.dmp

owner指定的用户其对应模式中的所有对象和数据都会被导出到test.dmp文件中。

3)完全数据导出

完全数据库导出是对整个数据库中除SYS模式以外的所有模式的对象都进行导出,这种导出形式耗费的时间较多。使用完全数据库导出模式的关键参数为FULL=Y,具体执行命令为:

exp username/password full=Y constraints=Y file=test.dmp

full参数设为Y表明进行的是完全数据库导出,constraints参数进行设置Y保证了表的约束条件也进行相关的输出。

因进行完全数据库导出需要运行很长时间,所以Oracle还提供了一种“直接”的执行方式来提高执行效率,命令为

exp username/password full=Y constraints=Y file=test.dmp direct=Y

1.3.2 使用数据泵Data Pump导出操作

Data Pump数据泵体系结构是在Oracle10g 10.1中提出,作为Export工具的替代,它可以高速实现Oracle数据库(10g版本之后)之间传输数据。Data Pump数据泵工具Expdp/impdp工作方法与Exp/imp导出/导入工具相比,数据传输方法做了很大的改进,传输速度大大提高了,而且它们的转储(dump file)文件的格式互不兼容,但是它们的使用方法很接近。这里以Data Pump来导出一个大小约为3GB的大表CASES为例来说明。

Data Pump在服务器端使用文件处理来创建和读取文件;因此,目录要作为位置使用。这里假设使用文件系统/u02/dpdata1来保存转储文件:

create directory dpdata1 as'/u02/dpdata1';

grant read,write on directory dpdata1 to ananda;

然后导出数据:

expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=exp CASES.dmp job_name=CASES_EXPORT

其中,用户ID/口令组合、表和转储文件参数意义和原来导出相同。不同的是文件在服务器(不是客户端)上创建的。位置由目录参数值DPDATA1指定,它指向之前创建的/u02/dpdata1。这个进程还在目录参数指定的位置上创建一个日志文件(同样在服务器上)。默认地,这个进程使用一个名称为DPUMP_DIR的目录,因此可以创建它来代替DPDATA1。

新的参数job_name给此任务一个作业名。所有的Data Pump工作都通过作业来完成。Data Pump作业是服务器进程,它代表主进程处理数据。主进程(称为主控制进程)通过高级队列(AQ)来协调这项工作;它通过在运行期内创建的一个特殊的表(称为主表)来实现这个目的。在上述的例子中,如果在expdp运行时检查用户ANANDA的模式,将注意到一个表CASES_EXPORT的存在(对应参数job_name)。当expdp结束时,这个表被丢弃。

Data Pump还提供随时连接到一个运行中的任务来检查其状态的功能。通过执行一条expdp命令,使用ATTACH参数来指定任务名称,去连接一个任务,然后执行STATUS命令可查看当前任务状态。除此,还可以通过DBA_DATAPUMP_JOBS视图查看所有数据泵任务的状态,通过DBA_DATAPUMP_SESSIONS视图,列出所有活跃的数据泵工作进程。

1.4 恢复管理器RMAN(Recovery Manager)备份

恢复管理器RMAN(Recovery Manager)是一个由Oracle提供的外部工具,专门用来对数据库进行备份与恢复操作。尽管它支持在线热备份,但备份方式有别于前述的传统在线热备份方式。它有两种使用界面:GUI(图形用户界面)和CLI(命令行界面)。使用RMAN可以完成Oracle数据库备份和恢复的各种任务。现在许多Oracle备份恢复软件的内核实际上就是基于RMAN。

创建RMAN备份的具体步骤如下:

1)首选将要备份的数据库改成归档模式。

2)在OEM中给RMAN用户解锁,并检查是否得到recovery_catalog_owner权限,如无,则添加。更改原有密码为rman,表空间默认值为users。

3)用新建的RMAN用户连接到恢复目录数据库,这里假设名为myoracle,方法如下:

打开DOS窗口,执行RMAN命令,在出现的RMAN提示符下,键入命令:

RMAN>connect catelog rman/rman@myoracle;

4)创建恢复目录:

RMAN>create catalog tablespace users;

5)连接目标数据库myoracle:

RMAN>connect target sys/change_on_install@myoracle;

6)在目录数据库中注册目标数据库:

RMAN>register database;

7)验证注册结果,使用RMAN账号登录到恢复目录数据库RMAN:

打开SQLPlus,用rman用户名,密码rman,主机字符串myoracle登录,然后执行以下SQL语句观察结果:

SQL>select*from db;

8)用RMAN备份数据文件

在RMAN工具下,执行以下命令

执行成功后,通过以下命令查看备份情况:

RMAN>list backup of datafile'D:oracleoradatamyoracleEXAMPLE01.DBF';

1.5 Oracle数据库的备份策略

前面介绍的几种备份方式,在实际应用中往往是相互结合。Oracle数据库备份策略主要以联机备份为主,脱机备份和逻辑备份为辅。无论采用何种策略,前提都是不影响或少影响数据库可用性的情况下,来考虑通过备份操作的效率。各备份方式的比较见表1。

一般比较可行的备份方案是:首先脱机进行全数据库备份,执行频率根据数据库大小及对数据库改动的多少而定(如每周一次),然后设置数据库运行于非归档模式下,每天数次采用RMAN备份归档日志、联机日志、控制日志、配置文件,备份次数的多少直接影响恢复数据的完整性,应根据各单位具体情况而定。每周进行一次EXPDP逻辑备份,实现对数据,而非物理文件的备份。此方案不仅适用于大型的应用,也适用于小型的应用。采用此备份方案应注意在用机和备用机环境的一致,以利于恢复。

2 Oracle数据库的恢复

采用何种方式恢复数据库与所用的备份方案有密切关系。采用逻辑备份的数据库,可用imp命令或impdp命令来恢复,具体命令可用添加参数help=y来获得帮助。采用脱机备份的数据库可用操作系统的相关操作来完成数据文件系统的恢复,也可把整个目录复制到备用机,在备用机上启动数据库。由于采用的是脱机备份,在上次备份后所发生的数据库改动将不能恢复。采用联机备份的数据库可用恢复命令RECOVER来进行恢复,采用RMAN备份的数据库则继续在RMAN工具下执行包含restore参数的命令来恢复数据库。上述具体命令参数可参阅有关帮助文档。

采用脱机备份加日志文件、控制文件的备份方式,在恢复中,先把脱机备份的数据库全部拷贝到备用机,然后根据日志文件、控制文件进行重做日志,若日志文件、控制文件备份的频率设置得当,可把数据库恢复到理想时间点甚至发生故障点。

3 结束语

提高数据库灾难后恢复的可靠性正越来越受到人们的关注,本文总结和比较了几种Oracle数据库的备份方案,并提出了典型的备份策略,用户可以根据自己的实际情况及数据库结构在此基础上灵活应用。实际证明,选择一种相对简单、可靠,并且切实可行的方案有利于提高备份恢复速率和有效性,从而真正提高数据的安全性和可靠性。

摘要:Oracle作为主流的大型关系型数据库管理系统,它提供了丰富的备份与恢复功能,保证系统的安全性。该文简要阐述了Oracle数据库应用中常用的备份与恢复方案以及各自的适用范围,并在此基础上给出了备份和恢复策略的建议方案,以助于数据库管理员进行比较和决策。

关键词:Oralce,数据库备份,数据库恢复,RMAN恢复管理器,数据泵

参考文献

[1]王飞飞,孙胜耀,董杨.基于数据泵技术的资料归档设计与实现[J].电脑开发与应用,2008,21(12):26-27.

[2]苏国磊.利用RMAN实现Oracle数据库的备份与恢复[J].电脑知识与技术,2007,2:325-326.

[3]余以胜.Oracle数据库备份解决方案的研究[J].计算机与数字工程,2006,34(1):118-121.

[4]滕永.Oracle10g数据库系统管理[M].北京:机械工业出版社,2006.

[5]腾永昌.Oracle9i数据库管理员使用大全[M].北京:清华大学出版社,2005.

Oracle恢复 篇8

1 数据库的备份与恢复

Oracle数据库的备份主要是对数据库中重要的数据进行复制, 存放到其他介质上。当数据库发生故障时使用已经备份的数据库信息还原到数据库中, 使数据库恢复到发生故障前的状态。按照备份的方式不同, Oracle数据库的备份主要有物理备份和逻辑备份两种策略。物理备份是指通过拷贝重要的物理文件的方式对数据库信息进行备份, 以免物理故障造成损失。根据数据库的工作模式, 物理备份又可以分为非归档模式和归档模式, 即冷备份 (非归档模式) 和热备份 (归档模式) 。冷备份是在数据库关闭的情况下, 利用操作系统的拷贝功能将数据库中的所有文件进行复制, 也叫脱机备份。如果数据库需要不间断工作或者数据库可以关闭的时间不足以完成冷备份, 那么我们需要联机备份, 即热备份。热备份的条件是数据库必需在打开并且运行在归档模式的状态下。使用热备份的好处在于当一个数据文件或一个表空间处于备份状态时, 用户仍然可以访问其他部分。因为热备份备份数据文件和归档日志等文件, 数据库恢复可以一直进行到最后一个归档日志, 实现无数据损失恢复, 称为完全恢复。当然热备份的恢复也可以进行到某一时刻就停止恢复, 称为不完全恢复。如果要对Oracle的版本进行升级或更换数据库运行的环境, 则可以使用Oracle Export程序将数据从数据库中抽取出来存放在一个二进制文件中, 也就是逻辑备份。逻辑备份的数据只能基于备份时刻进行数据转储, 所以恢复时也只能恢复到备份时保存的数据。

2 备份与恢复方法

2.1 冷备份与恢复

冷备份是指关闭数据库的备份, 又称脱机备份或一致性备份, 在冷备份开始之前数据库必须彻底关闭。关闭操作必须用带有normal、Transaction、immediate选项的shutdown来执行。备份具体步骤:

1) 启动SQL*Plus, 以SYSDBA身份登录数据库。

SQL>connect sys/sys@oracle as sysdba;

2) 关闭数据库

SQL>shutdown immediate;

3) 复制以下文件到相应的磁盘:所有数据文件 (DATA FILE) 、所有控制文件 (CONTROL FILE) 、所有联机重做日志文件 (REDO LOG)

4) 启动数据库SQL>startup;

恢复具体步骤:

1) 关闭数据库

SQL>shutdown immediate;

2) 将备份的数据还原到原来所在的位置。

3) 启动数据库

SQL>startup;

冷备份的优点是容易归档, 备份与恢复迅速容易维护, 安全性高。它的不足是单独使用时只能提供到某一时间点上的恢复, 不能表或用户恢复且必需关闭数据库。若备份到外部存储设备速度会很慢。

2.2 热备份与恢复

由于冷备份需要关闭数据库, 所以很多馆都选择热备份。在进行热备份之前要确保数据库已经处于归档模式。

首先以SYSDBA身份链接数据库, 然后执行ARCHIVE LOG LIST命令, 查看当前数据库是否处于归档模式。如果没有处于归档模式, 需要先将数据库转换为归档模式。

将数据库的日志操作模式设置成归档模式并将归档方式设置成自动的。具体步骤如下:

1) 关闭数据库, 并修改参数文件。

2) 启动数据库到装载状态

热备份的具体步骤:

1) 将数据库的某个表空间 (以exa表空间为例) 设置为热备份状态。

SQL>alter tablespace exa begin backup;

2) 在操作系统中将该表空间对应的所有数据文件备份。

3) 结束表空间备份状态。

SQL>alter tablespace exa end backup;

4) 备份控制文件。

SQL>alter database backup controlfile to‘D:oraclebacku.bkp’;

热备份恢复的具体步骤:

1) 将表空间设置为脱机状态。

SQL>alter database datafile‘D:oracleoradataorclexa.dbf’offline;

2) 将备份的数据文件复制到原来的目录, 并覆盖原来的文件。

3) 使用RECOVER命令进行介质恢复。

SQL>recover datafile‘d:oracleoradataorclexa.dbf’;

4) 介质恢复完成后, 将表空间恢复为联机状态。

SQL>alter database datafile‘d:oracleoradataorclexa.dbf’online;

5) 将数据库修改为打开状态。

SQL>alter database open;

如果数据库库正常打开, 说明已经恢复成功。热备份的优点是不需要关闭数据库备份恢复精确度高, 根据日志可以恢复某一时间点上 (精确到秒) 。它的不足是过程复杂, 存放归档文件需要相当多的空间, 操作不允许失误, 若备份不成功, 所得结果不可用于时间点的恢复。

2.3 逻辑备份与恢复 (exp/imp)

导入/导出 (IMP/EXP) 是Oracle最古老的两个命令行工具, 导出是通过EXPORT工具读取数据库并输出到一个二进制文件, 可以选择导出整个数据库或指定用户或指定表。EXP备份只能由IMP实用程序实现恢复。IMPORT工具会读取由EXPORT工具生成的二进制文件并执行文件中的命令, 可以导入全部或部分数据。

使用EXP和IMP命令进行数据库的逻辑备份与恢复有3种操作方式:交互式、命令行模式和参数模式。交互式模式就是跟计算机进行交流。执行EXP (或IMP) 命令后, 接着系统会提示输入用户名和口令, 按提示一步一步完成即可。参数模式其实是将命令行后面所带的参数写在一个后缀名为parfile的参数文件中, 执行EXP (或IMP) 命令时调用此参数文件即可。下面我们以命令行模式为例:

Exp user/password file=d:test.dmp

此时导出的全库数据, 也可以导出某个用户 (U) 或某个表格 (T) 的数据。

导出备份又可以分为3种类别:

1) 完全导出 (Complete Export) 。这种方式将把整个数据库文件导出备份。

exp user/password inctype=complete file=20100725.dmp

2) 增量型导出 (Incremental Export) 。这种方式将只会备份上一次备份后改变的结果。

exp user/password inctype=incremental file=20100725.dmp

3) 累积型导出 (Cumulative Export) 。这种方式是导出自上次完全导出后数据库变化的信息。

exp user/password inctype=cumulative file=20100725.dmp

逻辑恢复是逻辑备份的一个逆过程, 需要重建数据库结构, 然后执行IMP即可。

逻辑备份与恢复的优点是能够针对行对象进行备份, 能够跨平台实施备份操作并迁移数据库, 数据库可以不关闭。导出方式并不能保护介质失效, 它仅仅是逻辑上的备份, 这是它的缺陷。

3 结论

根据冷备份、热备份和逻辑备份各自的优缺点, 可以制定一个比较完整的备份策略。根据我校的情况, 我馆以逻辑备份为主, 脱机备份为辅, 在多个不同的物理磁盘上存有备份文件, 并做远程备份。为了方便, 备份文件应以日期命名, 根据备份的内容和日期将文件归类同一编号。不管采用何种策略, 目的都是在不影响或很少影响数据库可用性的情况下尽量提高备份操作的效率。

摘要:本文介绍了Oracle数据库的冷备份、热备份、逻辑备份的备份和恢复方式及各自的优缺点。

关键词:数据库备份,冷备份,热备份,逻辑备份

参考文献

[1]孙风栋, 等编著.Oracle数据库基础教程[M].北京:电子工业出版社, 2003.

[2]盖国强著.Oracle数据库管理、优化与备份恢复[M].北京:人民邮电出版社, 2007, 9.

[3]Sam R.Alapati著, Oracle10g数据库管理艺术[M].钟鸣等译.北京:人民邮电出版社, 2007, 9.

上一篇:高校艺术实践舞蹈教学下一篇:历史教育目标