ORACLE数据库备份与恢复详解

ORACLE数据库备份与恢复详解

学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!!

Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style) 和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份,他们的关系如下所示

  三种方式各有优点,我们做个比较(这个是用Fireworks画的,有点糙):

热备份和冷备份优缺点

热备份的优点是:
  1.可在表空间或数据文件级备份,备份时间短。
  2.备份时数据库仍可使用。
  3.可达到秒级恢复(恢复到某一时间点上)。
  4.可对几乎所有数据库实体作恢复。
  5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。
热备份的不足是:
  1.不能出错,否则后果严重。
  2.若热备份不成功,所得结果不可用于时间点的恢复。
  3.因难维护,所以要特别仔细小心,不允许“以失败而告终”。
冷备份的优点是:
  1.是非常快速的备份方法(只需拷贝文件)
  2.容易归档(简单拷贝即可)
  3.容易恢复到某个时间点上(只需将文件再拷贝回去)
  4.能与归档方法相结合,作数据库“最新状态”的恢复。
  5.低度维护,高度安全。
冷备份不足是:
  1.单独使用时,只能提供到“某一时间点上”的恢复。
  2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,数据库必须是关闭状态。
  3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。
  4.不能按表或按用户恢复。

$A:   现在先来介绍一下逻辑备份方式的方法,利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中 去。理论基础:Oracle提供的Export和Import具有三种不同的操作方式(就是备份的数据输出(入)类型):

1,表方式(T)    可以将指定的表导出备份;

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

3,用户方式(U)     可以将指定的用户相应的所有数据对象导出;

*在导入导出备份方式中,提供了很强大的一种方法,就是增量导出/导入,但是它必须作为System来完成增量的导入导出,而且只能是对整个数据库进行实施。增量导出又可以分为三种类别:

1,完全增量导出(Complete Export)     这种方式将把整个数据库文件导出备份;exp system/manager inctype=complete file=20041125.dmp(为了方便检索和事后的查询,通常我们将备份文件以日期或者其他有明确含义的字符命名)

2,增量型增量导出(Incremental Export)     这种方式将只会备份上一次备份后改变的结果;exp system/manager inctype=incremental file=20041125.dmp

3,累积型增量导出(Cumulate Export)      这种方式的话,是导出自上次完全增量导出后数据库变化的信息。exp system/manager inctype=cumulative file=20041125.dmp

通常情况下,DBA们所要做的,就是按照企业指定或者是自己习惯的标准(如果是自己指定的标准,建议写好计划说明),一般,我们采用普遍认可的下面的方式进行每天的增量备份:

Mon: 完全备份(A)
        Tue: 增量导出(B)
        Wed:增量导出(C)
        Thu: 增量导出(D)
        Fri:   累计导出(E)
        Sat: 增量导出(F)
        Sun: 增量导出(G)

这样,我们可以保证每周数据的完整性,以及恢复时的快捷和最大限度的数据损失。恢复的时候,假设事故发生在周末,DBA可按这样的步骤来恢复数据库:
        第一步:用命令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

  通常情况下,DBA所要做的导入导出备份就算完成,只要科学的按照规律作出备份,就可以将数据的损失降低到最小,提供更可靠的服务。另外,DBA最好对每次的备份做一个比较详细的说明文档,使得数据库的恢复更加可靠。

$B 物理备份之冷备份(条件-NonArchiveLog):

当数据库可以暂时处于关闭状态时,我们需要将它在这一稳定时刻的数据相关文件转移到安全的区域,当数据库遭到破坏,再从安全区域将备份的数据库相关文件拷 贝回原来的位置,这样,就完成了一次快捷安全等数据转移。由于是在数据库不提供服务的关闭状态,所以称为冷备份。冷备份具有很多优良特性,比如上面图中我 们提到的,快速,方便,以及高效。一次完整的冷备份步骤应该是:

1,首先关闭数据库(shutdown normal)

2,拷贝相关文件到安全区域(利用操作系统命令拷贝数据库的所有的数据文件、日志文件、控制文件、参数文件、口令文件等(包括路径))

3,重新启动数据库(startup)

以上的步骤我们可以用一个脚本来完成操作:

su – oracle <      sqlplus /nolog
      connect / as sysdba
      shutdown immediate;
      !cp 文件   备份位置(所有的日志、数据、控制及参数文件);
      startup;
      exit;
     这样,我们就完成了一次冷备份,请确定你对这些相应的目录(包括写入的目标文件夹)有相应的权限。

恢复的时候,相对比较简单了,我们停掉数据库,将文件拷贝回相应位置,重启数据库就可以了,当然也可以用脚本来完成。

$C 物理备份之热备份:(条件-ArchiveLog)

当我们需要做一个精度比较高的备份,而且我们的数据库不可能停掉(少许访问量)时,这个情况下,我们就需要归档方式下的备份,就是下面讨论的热备份。热备 份可以非常精确的备份表空间级和用户级的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一秒的操作。具体步骤 如下:

1,通过视图v$database,查看数据库是否在Archive模式下:        SQL> select log_mode from v$database;
             如果不是Archive模式

则设定数据库运行于归档模式下:SQL>shutdown immediate
               SQL>startup mount
               SQL> alter database archivelog;
               SQL> alter database open;
如果Automaticarchival显示为“Enabled”,则数据库归档方式为自动归档。否则需要手工归档,或者将归档方式修改为自动归档,如:
                      正常shutdown数据库,在参数文件中init.ora中加入如下参数
               SQL>shutdown immediate
             修改init.ora:
               LOG_ARCHIVE_START=TRUE
               LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(归档日值存放位置可以自己定义)
               SQL>startup
 然后,重新启动数据库,此时Oracle数据库将以自动归档的方式工作在Archive模式下。其中参数LOG_ARCHIVE_DEST1是指定的归 档日志文件的路径,建议与Oracle数据库文件存在不同的硬盘,一方面减少磁盘I/O竞争,另外一方面也可以避免数据库文件所在硬盘毁坏之后的文件丢 失。归档路径也可以直接指定为磁带等其它物理存储设备,但可能要考虑读写速度、可写条件和性能等因素。

注意: 当数据库处在ARCHIVE模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到能够归档所有归档信息后才可以使用。另外,为创建一个有效 的备份,当数据库在创建时,必须履行一个全数据库的冷备份,就是说数据库需要运行在归档方式,然后正常关闭数据库,备份所有的数据库组成文件。这一备份是 整个备份的基础,因为该备份提供了一个所有数据库文件的拷贝。(体现了冷备份与热备份的合作关系,以及强大的能力)

2,备份表空间文件:

a,首先,修改表空间文件为备份模式  ALTER TABLESPACE tablespace_name BEGIN BACKUP;

b,然后,拷贝表空间文件到安全区域 !CP tablespace_name D_PATH;

c,最后,将表空间的备份模式关闭    ALTER TABLESPACE tablespace_name END BACKUP;

3,对归档日志文件的备份:

停止归档进程-->备份归档日志文件-->启动归档进程

  如果日志文档比较多,我们将它们写入一个文件成为一个恢复的参考:$   files `ls <归档文件路径>/arch*.dbf`;export files

4,备份控制文件:
                 SQL> alter database backup controlfile to ‘controlfile_back_name(一般用2004-11-20的方式)‘ reuse;

当然,我们也可以将上面的东东写为一个脚本,在需要的时候执行就可以了:

脚本范例:

su – oracle <      sqlplus /nolog
                 connect / as sysdba
                 ALTER TABLESPACE tablespace_name BEGIN BACKUP

!CP tablespace_name D_PATH

ALTER TABLESPACE tablespace_name END BACKUP

alter database backup controlfile to ‘controlfile_back_name(一般用2004-11-20的方式)‘ reuse;

!files `ls <归档文件路径>/arch*.dbf`;export files

热备份的恢复,对于归档方式数据库的恢复要求不但有有效的日志备份还要求有一个在归档方式下作的有效的全库备份。归档备份在理论上可以无数据丢失,但 是对于硬件以及操作人员的要求都比较高。在我们使用归档方式备份的时候,全库物理备份也是非常重要的。归档方式下数据库的恢复要求从全备份到失败点所有的 日志都要完好无缺。
                恢复步骤:LOG_ARCHIVE_DEST_1
                               shutdown数据库。
                               将全备份的数据文件放到原来系统的目录中。
                               将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置。
                               利用sqlplus登陆到空实例。(connect / as sysdba)
                               然后  startup mount
                                       set autorecovery on
                                       recover database;
                                       alter database open;

  这样,我们的热恢复就算完工了,写了好久,终于写好,大家有什么补充就写上来,不要客气,这是这两天学习的一些心得,希望大家多多交流,谢谢。

原文地址:https://www.cnblogs.com/czg-0705/p/11391955.html

时间: 2024-10-06 09:24:17

ORACLE数据库备份与恢复详解的相关文章

Oracle数据库备份详解

Oracle数据库备份详解 Oracle官方提供多种备份方式,日常使用最多的有exp/imp常规方式,及数据泵expdp/impdp方式:下面对这两种方式进行详解. 常规方式 exp/imp imp/exp是Oracle导入导出命令,可以用作数据的迁移,expdp/imdp也是Oracle数据导入导出的命令,效率比imp/exp效率要高,这个后面再讨论 一  EXP导出命令 exp 是数据的导出命令,可以用于表,用户,整个数据库,exp -help查看帮助 Export: Release 11.

oracle数据库归档详解

什么是Oracle归档模式? Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里.一般数据库至少要有2个联机重做日志组.当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行. 如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档.比如

Oracle数据库序列详解

前言: 做过web开发的人员基本上都知道,数据库表中的主键值有的时候我们会用数字类型的并且自增.这样mysql.sql server中的都可以使用工具创建表的时候很容易实现.但是oracle中没有设置自增的方法,一般情况我们会使用序列和触发器来实现主键自增的功能.下面这面文章主要介绍序列. 一.什么是序列 序列: Sequence 是oracle提供的用于产生一系列唯一数字的数据库对象.由于oracle中没有设置自增列的方法,所以我们在oracle数据库中主要用序列来实现主键自增的功能. 二.怎

PLSQL连接Oracle 数据库配置详解

1. 下载instantclient-basic-win32-11.2.0.1.0 (oracle官网下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html , 下载地址2:http://download.csdn.net/detail/czw2010/5732241) 2. 解压instantclient-basic-win32-11.2.0.1.0并放置在oracle安装目录的product下(放置位置无强制要求,可

ORACLE用户PROFILE详解

ORACLE用户PROFILE详解   一.官网说明 Oraclerecommends that you use the Database Resource Manager rather than the SQLstatement to establish resource limits. The Database Resource Manager offers amore flexible means of managing and tracking resource use. Purpose

Oracle执行计划详解

 简介: 本文全面详细介绍oracle执行计划的相关的概念,访问数据的存取方法,表之间的连接等内容. 并有总结和概述,便于理解与记忆! +++ 目录 --- 一.相关的概念 Rowid的概念 Recursive Sql概念 Predicate(谓词) DRiving Table(驱动表) Probed Table(被探查表) 组合索引(concatenated index) 可选择性(selectivity) 二.oracle访问数据的存取方法 1) 全表扫描(Full Table Scan

oracle rac IP详解

rac环境下vip/public/private IP的区别 每个节点要2块网卡, 3个IP,虚拟IP或者叫做业务IP,单个网卡当掉可以"漂"到其他网卡是继续提供服务 在Oracle RAC环境下,每个节点都会有多个IP地址,分别为Public/Private/Vip,这三个IP到底有啥区别呢?分别用在那些场合呢?来看看老外的回答. 1. private IP address is used only for internal clustering processing (Cache

ORACLE物化视图详解

一.物化的一般用法物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,oracle都实际上转换为视图SQL语句的查询.这样对整体查询性能的提高,并没有实质上的好处. 1.物化视图的类型ON DEMAND.ON COMMIT.二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图"需要"被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一

Oracle AWR 报告详解

转自:http://blog.csdn.net/laoshangxyc/article/details/8615187 持续更新中... Oracle awr报告详解 DB Name DB Id Instance Inst num Startup Time Release RAC ORCL 1295334343 orcl 1 09-1月 -12 18:01 11.2.0.1.0 NO DB Name :数据库名 DB Id :数据库Id(获取方法select dbid from v$databa