一,与基础
1.,备份简介
备份是数据的一个副本,一般包括控制文件和数据文件等
物理备份与逻辑备份
物理备份指物理文件的副本,逻辑备份是指使用工具抽取逻辑数据(例如,表或存储过程)并保存在二进制文件中。
热备份与冷备份
冷备份是指数据库完全关闭状态下的备份,如果数据库不处于完全关闭状态,则为热备份。
用户的备份与备份
用户管理的备份指用户手工使用os的拷贝命令拷贝文件,rman备份使用oracle的recovery manager进行备份,其备份包括两种类型:镜像副本(image copy)和备份集(backupset)。
一致性备份与非一致性备份
一致性备份是指备份所包含的各个文件中的所有修改的scn相同。(如果有只读表空间,或者正常脱机的表空间,则他们的scn可以比其他的数据文件或控制文件的scn滞后)
1.查看系统检查点SCN号
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
1932946
2.查看数据文件检查点scn号。
SQL> select file#,checkpoint_change#,last_change# from v$datafile;
FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------
1 1932946
2 1932946
3 1932946
4 1932946
5 1932946
6 1932946
SQL> select name,checkpoint_change# from v$datafile_header;
NAME
-------------------------------------------------------------------
CHECKPOINT_CHANGE#
------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ICARE\SYSTEM01.DBF
1932946
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ICARE\UNDOTBS01.DBF
1932946
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ICARE\SYSAUX01.DBF
1932946
在数据库运行中,LAST_CHANGE#为空。数据库在运行中,数据文件被设置为read only 其scn号为非空值。
非一致性备份指数据库在打开状态,或者数据库非正常关闭后进行的备份。
通常进行一致性备份的唯一方法是正常完全关闭数据库,然后进行备份。这种备份的特点是,restore出来的数据文件,不需要recovery就可以open。
数据库不停机的情况下执行进行非一致性备份,联机数据文件的备份被称为联机备份(online backup)。需要进行联机备份的数据库必须运行在ARCHIVELOG(归档)模式下。
完全备份与部分备份
数据库完全备份是数据库内所有数据文件及控制文件的备份。
部分备份如表空间备份,数据文件备份,控制文件备份,归档日志备份等。
二、恢复简介
Restore与recovery
Restore是将数据文件从备份集或镜像中转储出来,recover则是恢复过程,利用归档重做日志,联机重做日志对转储出来的数据文件进行更新,即重做在数据库备份以后发生的操作。这个过程中包括了使用归档日志和联机日志进行前滚(roll forword)即使用undo回滚(roll back)的操作,这个过程也叫介质恢复。
崩溃恢复和实例恢复
Oracle在实例故障之后能自动的执行崩溃恢复和实例恢复。崩溃恢复及实例恢复能够在实例故障发生后将数据库恢复到满足事务一致性(transaction-consistent)的状态。崩溃恢复的定义是:单实例系统发生崩溃或Oracle系统中所有实例发生崩溃后对数据库进行的恢复。与之相对,实例恢复的定义是:Oracle RAC系统中正常实例对故障实例进行的恢复。
介质恢复
前面已经讲了介质恢复的概念,现在来看看具体的介质恢复的种类:
完全恢复和不完全恢复
完全恢复是使用数据库,表空间或数据文件的备份进行复原,在使用重做数据库或增量备份将数据更新到当前事件点。这种恢复方式应用所有的归档和联机日志,恢复到当前时间点。
不完全恢复也称按时间点恢复,指数据库没有恢复到当前时间点的恢复,也就是说没有完全应用归档和联机日志。通常用户的错误操作,归档丢失,或者联机日志顺坏,或者当前的控制文件丢失而必须使用备份的控制文件打开数据库等需要进行不完全恢复。进行不完全介质回复时,用户需要使用指定恢复时间点之前的备份复原(restore)数据文件,并在恢复完成后以resetlogs选项open数据库。Resetlogs使得当前的数据库及重做日志有效,令数据库使用一套新的日志序列号。值得注意的是在9i的基础上resetlogs有了很大改进,9i是需要在resetlogs之后全备份的,而10g则不需要,具体将会在后面的内容中以实例来看。当然也可以只恢复某个表空间,而不是整个数据库,这被称作表空间的不完全恢复。后续也有实例讲解。
不完全介质恢复的种类:
恢复的类型
功能
基于时间点的恢复(time-based)
将数据恢复到指定的时间点
用户控制的恢复(基于取消cancel-based)
当用户提交cancel语句后停止恢复操作
(在使用rman时无效)
基于scn的恢复(changed-based)
将数据恢复到指定的scn
按重做日志序号恢复(log-sequence)
将数据恢复到指定的重做日志序号
(只适用于rman)
三、了解基本备份
备份策略为防止数据丢失提供了安全防护。回答以下问题可以帮助数据库管理员制订一个强大的备份策略:
可能出现何种类型的故障?
应当备份哪些信息?
应当使用哪种备份方法?
应当联机还是离线备份?
备份的频率?
如何避免危险的备份方法?
可能出现何种类型的故障?
数据丢失的原因各种各样。下面是可能导致数据丢失的一些最常见的故障类型。
语句故障 是 Oracle 程序在处理语句时的逻辑错误。例如,用户执行了无效 SQL 结构的语句。当发生语句故障时,Oracle 自动撤销语句的所有效果并将控制返回给用户。
进程故障 是访问 Oracle 的用户进程中出现的故障(即异常断开或进程终止)。尽管 Oracle 和其他的用户进可以继续工作,但出现故障的用户进程将不能继续工作。如果用户进程在更改数据库时出现故障,则 Oracle 后台进程将撤销未提交事务的效果。
实例故障 是使 Oracle 实例(即 SGA 和后台进程)无法继续工作的问题。实例故障可能源于硬件问题(如电力中断)或软件问题(如操作系统崩溃)。当实例出现故障时,Oracle 不会将 SGA 缓冲区中的数据写到数据文件中。
用户或应用程序错误 是导致数据丢失的用户错误。例如,用户可能无意地从工资单表中删除数据。这种用户错误可能需要将数据库或对象恢复到该错误发生前的某个时间点上。为了允许从用户错误中恢复过来并满足其他独特的恢复要求,Oracle 提供了闪回技术。了解关于的更多信息。
介质故障 是当 Oracle 试图写或读操作数据库所需要的文件时出现的物理问题。一个常见的例子是磁盘头损坏,它将导致磁盘驱动器上的所有数据丢失。磁盘故障可能影响各种文件(包括数据文件、重做日志文件和控制文件)。因为数据库实例无法继续正常工作,所以它无法将 SGA 的数据库缓冲区中的数据写到数据文件中。
应当备份哪些信息?
一个数据库包含各种类型的数据。当制订备份策略时,DBA 必须确定他们要复制哪些信息。基本的备份类型包括:
联机数据库备份
离线数据库备份
整个数据库
表空间
数据文件
控制文件
存档重做日志
配置文件
在确定要备份的信息时,基本的原则是根据数据的重要性和更改的程度来确定数据的优先级。例如,然存档日志不发生变化,但它们对恢复数据库至关重要,因此如果可能应维护多个副本。然而,费用帐户表被用户不断更新。因此,应当经常备份该表空间,以防止在恢复时不得不应用过多的重做数据。
可以以多方式组合备份。例如,DBA 可以决定每周执行整个数据库的备份,以确保获得原始数据库信息的一个相对较新的副本,而每天备份使用最频繁的表空间。DBA 还可以为所有重要的控制文件和存档重做日志创建多个副本作为额外的安全防护。
联机数据库备份
联机备份也称为开放备份,其中所有的读-写数据文件和控制文件都没有对相同的 SCN 设置检查点。例如,一个读-写数据文件头可能包含一个为 100 的 SCN,而其他读-写数据文件头包含一个为 95 或 90 的 SCN。在所有这些头 SCN 一致前,即将联机重做日志中记录的所有更改都保存到磁盘上的数据文件前,Oracle 无法打开数据库。如果数据库必须保持不间断运行,则您除了在 ARCHIVELOG 模式下执行整个数据库的联机备份之外别无选择。
离线数据库备份
在这种备份中,所有的数据文件和控制文件在相同的时间点上都保持一致 — 例如,对相同的 SCN 保持一致。在一个一致的备份中被允许拥有旧 SCN 的唯一表空间是只读且“离线-正常”的表空间,它们与备份中的其他数据文件保持一致。这种类型的备份允许用户打开由备份创建的文件集,而无需应用重做日志,这是因为数据已经是一致的了。执行这种备份的唯一方式是正常关闭数据库,然后在数据库关闭时执行备份。一个一致的整个数据库备份是为在 NOARCHIVELOG 模式下运行的数据库提供的唯一有效的备份选择。
整个数库备份
这种最常见的备份类型 — 整个数据库备份 — 包含了控制文件以及属于该数据库的所有数据库文件。如果在 ARCHIVELOG 模式下运行,则 DBA 还可以选择在一段时间内备份数据库的不同部分,从而一部分一部分地构建整个数据库备份。
表空间备份
表空间备份是数据库的一个子集。表空间备份只有当数据库在 ARCHIVELOG 模式下运行时才有效。表空间备份对于在 NOARCHIVELOG 模式下运行的数据库有效的唯一时间是当该表空间只读或离线正常时。
数据文件备份
数据文件备份是单个数据文件的备份。数据文件备份没有表空间备份那么常见,并且只有当数据库在 ARCHIVELOG 模式下运行时才有效。数据文件备份对于在 NOARCHIVELOG 模式下运行的数据库有效的唯一时间是当数据文件是表空间中唯一的文件时。例如,备份是表空间备份,但表空间只包含一个文件并且只读或离线正常。
控制文件备份
控制文件备份是数据库控制文件的备份。如果数据库是打开的,那么用户可以通过执行以下 SQL 语句或使用恢复管理器 (RMAN) 来创建有效的备份:ALTER DATABASE BACKUP CONTROLFILE to 'location'。
存档重做日志备份
存档重做日志是成功的介质恢复的关键。您希望根据可用磁盘空间和在数据库上执行的事务的数量在磁盘上尽可能长时间地保留存档日志,并定期备份它们以确保较完整的恢复。
配置文件
配置文件可能包含 spfile 文件或 init.ora、口令文件、tnsnames.ora 和 sqlnet.ora。因为这些文件不经常变化,所以它们不需要频繁备份。如果您丢失了某个配置文件,您可以很容易地重手动创建它。当还原时间更重要时,还原配置文件的一个备份要比以特定格式手动创建一个文件要快得多。
应当使用哪种备份方法?
Oracle 为用户提供了几种创建备份的基本方法以备选择。这些方法包括:恢复管理器 (RMAN) — 建立与服务器进程的连接并使备份与恢复操作的数据转移自动化的一个组件。
Oracle 企业管理器 — 调用恢复管理器的 GUI 界面。
Oracle Data Pump — 该实用程序通过将数据以专有格式从 Oracle 数据库写入操作系统文件来创建逻辑备份。稍后可以将这种数据导入数据库中。
用户管理的方法 — 通过执行特别针对用户操作系统的命令手动备份数据库。
创建恢复管理器备份
恢复管理器 (RMAN) 是一个强大的通用程序,它允许用户创建 RMAN 备份或用户数据的镜像副本。当用户使用 RMAN BACKUP 命令指定文件或存档日志时,RMAN 默认创建一个备份集作为输出。一个备份集是专有格式的一个文件或一些文件,它需要使用 RMAN RESTORE 命令来进行恢复操作。相比而言,当使用 BACKUP AS COPY 命令创建文件的镜像副本时,它是实例可用 (instance-usable) 格式的 — 用户不需要调用恢复管理器即可还原或恢复它。
当执行 RMAN 命令(如备份或还原)时,恢复管理器建立了一个与 Oracle 服务器进程的连接。然后服务器进程从目标数据库中备份指定的数据文件、控制文件或存档日志。恢复目录是包含各种对备份和恢复有用的信息的中央信息库。RMAN 自动建立备份所需的所有文件的名称和位置。恢复管理器还支持增量备份 — 仅备份那些自上次备份以来发生变化的块。在传统的备份方法中,必须备份数据文件中用到的所有数据块。
自动的基于磁盘的备份和恢复
创建不同的与备份和恢复相关的文件的组件对彼此一无所知,或者也不了解它们存储数据的文件系统的大小。利用自动的基于磁盘的备份和恢复,您可以创建一个闪回恢复区,它将使与备份相关的文件的管理自动化。在磁盘上选择一个位置和存储空间的上界,并设置一个保留策略 — 它控制需要为恢复保留备份文件的时间。数据库在这个空间内为您的数据库管理用于备份的存储器、存档日志和其他与恢复相关的文件。当 RMAN 需要为新的文件回收空间时,可以删除不再需要的文件。如果您不使用闪回恢复区,则您必须为与备份相关的文件手动管理磁盘空间并平衡不同类型文件间的空间使用。Oracle Corporation 建议您启用一个闪回恢复区以简化您的备份管理。