Oracle备份与恢复学习笔记
Oracle数据库的备份和恢复是每个数据库管理员(DBA)必须要掌握的技能,备份是保存数据库的副本,恢复是把备份好的副本还原到数据库当中,本篇幅将学习如何进行数据库的备份和恢复。
Oracle备份与恢复是数据库必备的功能,同时也是DBA必备技能。
第一部分、基础知识
备份与恢复概述
目前被采用最多的备份策略主要有以下三种:
⊙ 完全备份(Full Backup)
备份全部选中的文件夹,并不依赖文件的存档属性来确定备份哪些文件。在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份。换言之,清除存档属性。
完全备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应用中就是用一盘磁带对整个系统进行完全备份,包括其中的系统和所有数据。这种备份方式最大的好处就是只要用一盘磁带,就可以恢复丢失的数据。因此大大加快了系统或数据的恢复时间。
⊙ 差异备份(Differential Backup)
备份自上一次完全备份之后有变化的数据。差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,也即备份后不标记为已备份文件。换言之,不清除存档属性。
差异备份是指在一次全备份后到进行差异备份的这段时间内,对那些增加或者修改文件的备份。在进行恢复时,我们只需对第一次全备份和最后一次差异备份进行恢复。差异备份在避免了另外两种备份策略缺陷的同时,又具备了它们各自的优点。
首先,它具有了增量备份需要时间短、节省磁盘空间的优势;其次,它又具有了全备份恢复所需磁带少、恢复时间短的特点。系统管理员只需要两盘磁带,即全备份磁带与灾难发生前一天的差异备份磁带,就可以将系统恢复。
⊙ 增量备份 (Incremental Backup )
备份自上一次备份(包含完全备份、差异备份、增量备份)之后有变化的数据。增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,既:备份后标记文件,换言之,清除存档属性。
增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加和者被修改的文件。这就意味着,第一次增量备份的对象是进行全备份后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推。
这种备份方式最显著的优点就是:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。
差异备份与增量备份的区别在于它们备份的参考点不同:前者的参考点是上一次完全备份、差异备份或增量备份,后者的参考点是上一次完全备份。
不同备份类型组合应用的示例
① 完全备份与差异备份
以每周数据备份计划为例,我们可以在星期一进行完全备份,在星期二至星期五进行差异备份。如果在星期五数据被破坏了,则只需要还原星期一完全的备份和星期四的差异备份。这种策略备份数据需要较多的时间,但还原数据使用较少的时间。
② 完全备份与增量备份
以每周数据备份为例,在星期一进行完全备份,在星期二至星期五进行增量备份。如果在星期五数据被破坏了,则你需要还原星期一正常的备份和从星期二至星期五的所有增量备份。这种策略备份数据需要较少的时间,但还原数据使用较多的时间。
ORACLE数据库文件类型
⊙数据文件
每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:
一个数据文件仅与一个数据库联系。
一旦建立,数据文件不能改变大小.
一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。
数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。
⊙日志文件
每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有操作成果。
日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。
日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。Oralce两种日志文件类型:
1、联机日志文件 这是Oracle用来循环记录数据库改变的操作系统文件
2、归档日志文件 这是指为避免联机日志文件重写时丢失重复数据而对联机日志文件所做的备份
⊙控制文件
每一ORACLE数据库有一个控制文件(control file),它记录数据库的物理结构,包含下列信息类型:
数据库名;
数据库数据文件和日志文件的名字和位置;
数据库建立日期。
为了安全起见,允许控制文件被镜象。
每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库操作时它们必须被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。
⊙参数文件
参数文件记录了Oracle数据库的基本参数信息,主要包括数据库名、控制文件所在路径、进程等。与旧版本的初始化参数文件INITsid.ora不同,在Oracle10g及以上还可以使用二进进制服务器参数文件,并且该服务器参数文件在安装Oracle数据库系统时由系统自动创建,文件的名称为SPFILEsid.ora,sid为所创建的数据库实例名。
ORACLE数据库备份基础
Oracle数据库启动与关闭
启动:startup,经历三个阶段: 未加载(nomount),加载(mount),打开(open)
·未加载(nomount) -- 启动事例
·读取数据库参数文件
·启动后台进程并按参数文件中的定义分配内存
·将进展情况写入警告日志文件中.
·加载(mount) -- 读取控制文件,
·确定数据文件和重做日志文件的名称和位置
·确定数据库名
·确定最新系统更改号.
·打开(open) -- 打开数据库
·所有联机数据文件的头与控制文件信息比较
·所有文件同步后,数据库打开.
关闭:shutdown,四个参数(normal,transactional,immediate,abort)
·正常(normal),所有用户离线后正常关闭.
·事务(transactional),用户执行完当前事务后,将用户从数据库上清除
·立即(immediate),立即关闭,回退所有未完成的操作
·异常(abort),异常关闭,启动后需要实行崩溃恢复.
SCN(system change number) 在某个时间点定义数据库已提交版本的时间戳标记,Oracle为每个已提交事务分配一个唯一的SCN,SCN值是对数据库进行更改的逻辑时间点。
Oracle中的Restore 和 Recovery
Oracle的官方文档中的解释:
Restoration:A corrupted data file is overwritten from a backup of the data file .The data file is at a prior point of time than the current database.
Recovery:Recovery applies the changes to the individual blocks,using archive and redo information,to move the database forward to the current point in time.
从原理上解释,Restore是使用备份文件,将数据库还原到过去的某个状态。
Recovery是使用redo日志和归档日志将数据库向前恢复,一步步的恢复到现在这个时点。
某生产环境的数据库,每天凌晨一点会作一次备份。某天下午两点时数据库文件损害,同时数据库宕机。
如何恢复数据库呢?
首先Restore,即使用最近一次的备份文件还原数据库到当天凌晨一点的状态。但是凌晨一点到下午两点的数据丢失了。
接着Recovery,即使用redo日志和归档日志,把当天凌晨一点开始的数据库操作重做一遍,直到下午两点数据库宕机前。
这样数据库就被恢复起来了。
RMAN(Recovery Manager、恢复管理器):是Oracle的备份和恢复数据库的管理工具。RMAN支持增量备份,支持在线热备份。 RMAN ( Recovery Manager, 恢复管理器 )是从Oracle8开始提供的一套用于备份和恢复的有利工具,它有两种使用界面:GUI(图形用户界面)和CLI(命令行界面)。使用RMAN可以完成Oracle 数据库备份和恢复的各种任务。
Oracle的备份类型
ORACL的备份根据备份方式的不同分为物理备份和逻辑备份。
物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
冷备份, 数据库已经关闭状态下完成所有物理系统文件拷贝的过程,也称脱机备份, 适合于非归档模式(即noarchivelog模式,SCN保持一致)下,数据库处于一致性状态。【 冷备份,数据库可以处于归档模式也可以处于非归档模式,最好是处于非归档模式。】
Oracle 热备份是指数据库处于open即数据库运行状态下,对数据库的数据文件、控制文件、参数文件、密码文件等进行一系列备份操作。 热备份是基于用户管理备份恢复的一种方式,也是除了RMAN备份之外较为常用的一种备份方式。 热备份时,Oracle数据库必须处于归档模式(即archivelog模式,SCN不一致)下。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份,一般指传统的导出/导入(EXP和IMP、expdp和impdp)。
expdp/impdp和exp/imp的区别
exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。
imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。
第二部分、实践
可参见
https://www.oraclejsq.com/oraclebf/010400800.html
Windows下Oracle定时备份(全量备份) https://segmentfault.com/a/1190000008596697