Oracle数据库之备份与恢复(二)
Oracle数据库之备份与恢复(二)
目录
1.前置知识点
在细讲备份,恢复和还原之前,首先大概来区分一下之间的关系。
(1)备份(backup):业务数据的副本,其实就是将数据文件复制一份作为备份,便于以后数据的还原;
(2)还原(restore):利用之前的备份重复覆盖,也就是回到之前备份的某个时间点。
(3)恢复(recover):利用日志文件(归档日志和在线日志)把数据向前回滚回来。
(1)完全恢复:将数据恢复到宕机最后一次提交状态;
(2)不完全恢复:将数据库恢复到指定的某个时间点。
比如上面的图:我们规定每到一个时间节点我们就备份一次数据,但是在上面的“现在这个时间节点”处发生了故障,数据丢失了,那么可以利用前一次的备份时间点2进行还原,但是上面的从“备份时间2”到“现在这个时间节点”段的数据使用日志进行恢复。也可以使用“备份时间点1”的作为还原,但是恢复的话,就是从“备份时间点1”到“现在这个时间节点”。
2.备份概述
(1)备份的原则
- 日志文件归档到磁盘。归档日志文件最 好不要与数据库文件或联机重做日志文 件存储在同一个物理磁盘设备上。
- 如果数据库文件备份到磁盘上,应使用 单独的磁盘或磁盘组保存数据文件的备 份。备份到磁盘上通常可以在较短时间 内恢复。
- 应保持控制文件的多个备份,控制文件的 备份应置于不同磁盘控制器下的不同磁盘 设备上。增加控制文件可以先关闭数据库, 备份控制文件,改变服务器参数文件的参 数CONTROL_FILES,再重新启动数据库即 可
- 联机日志文件应为多个,每个组至少 应保持两个成员。日志组的两个成员 不应保存在同一个物理设备上,因为 这将削弱多重日志文件的作用。
- 保持归档重做日志文件的多个备份, 在多个磁盘上都保留备份。使用服务 器参数文件中的 LOG_ARCHIVE_DUPLEX_DEST和 LOG_ARCHIVE_MIN_SUCCEED_DEST参 数,Oracle会自动双向归档日志文件。
- 通过在磁盘上保存最小备份和数据库文件 向前回滚所需的所有归档重做日志文件, 在许多情况下可以使得从备份中向前回滚 数据库或数据库文件的过程简化和加速。
- 增加、重命名、删除日志文件和数据 文件,改变数据库结构和控制文件等 操作都应备份,因为控制文件存放数 据库的模式结构。此外,增加数据文 件后也要备份。
- 若企业有多个Oracle数据库,则应使用具 有恢复目录的Oracle恢复管理器。这将使 用户备份和恢复过程中的错误引起的风 险最小化。
(2)数据库备份的应用
- 实例失败
- 磁盘失败
注意:如果丢失的是归档重做日志文件,就无法恢复。因此,最重要的是使归档重做日志文件目标设备也保持镜 像。归档重做日志文件与联机重做日志文件同等重要。
(3)数据库备份类型
备份一个Oracle数据库有三种标准方式: 导出(Export)(逻辑备份)、 脱机备份(Offline Backup)(冷备份)和 联机备份(Online Backup) (热备份)。其中导出方式是数据库的逻辑备份。脱机备份和联机备份都是物理备份(也称为低级备份)。
①逻辑备份
逻辑备份。导出是将数据库中数据备份到一个称为“导出转储文件”的二进制系统文件中。
三种模式:
- 用户模式(user):导出用户所有对象以 及对象中的数据。
- 表模式(table):导 出用户的所有表或者 用户指定的表。
- 全局模式(full):导出数据 库中所有对象,包括所有 数据、数据定义和用来重 建数据库的存储对象。
导出备份的三种类型:
- 完全型:对所有表执行 全数据库导出或仅对上次 导出后修改过的表执行全 数据库导出。
- 积累型:备份上一次积累型备份 所改变的数据。
- 增量型:备份上一次备份后改变 的数据。
提示:导入是导出的逆过程,导入时读取导出创建的转储二进制文件以恢复数据。可以导入全部或部分已导出的数据。 如果导入一个完全导出的整个导出转储文件,则所有数据库对象(包括表空间、数据文件和用户)都会在导入 时创建。如果只打算从导出转储文件中导入部分数据,那么表空间、数据文件和将拥有并存储那些数据的用户 必须在导入前设置好。
②物理备份
物理备份是备份数据库文件而不是其逻辑内容。Oracle支持两种不同类型的物理备份:脱 机备份(也称为冷备份)和联机备份(也称为热备份)。
脱机备份:
在数据库已经正常关闭的情况下 进行。数据库正常关闭后会给用户提供一 个完整的数据库。当数据库处于脱机备份 状态时,备份的文件包括所有数据文件、 所有控制文件、所有联机重做日志和服务 器参数文件(可选)。当数据库关闭时, 对所有这些文件进行备份可以提供一个数 据库关闭时的完整镜像。以后可以从备份 中获取整个文件集并恢复数据库的功能。
提示:冷备份一般在SQL PLUS中进行,在进行备份之前,首先确定备份哪些文件,通过v$DATAFILE视图可以获取数据文件的列表;
select * from v$datafile;
通过v$LOGFILE视图可以获取联机重做日志文件的列表:
select * from v$logfile;
正常关闭要备份的实例:
conn [用户名]/[密码] as sysdba;
shutdown normal;
联机备份:
数据库可能要求24小时运行,而且随时会对 数据进行操作。联机备份可以在数据库打开 的情况下进行。一般通过使用ALTER命令改 变表空间的状态来开始进行备份,备份完成 后恢复原来状态,否则重做日志会错配,在 下次启动数据库时引起表空间的修改。进行 联机备份时要求数据库必须在归档方式下操 作,在数据库不使用或使用率低的情况下进 行,同时要有大量的存储空间。
联机备份也称为热备份或者ARCHIVELOG备份,要求数据库运行在ARCHIVELOG方式之下。Oracle系统以循环的方式编写联机重做日志文件,也就是第一个日志文件写满之后,接着从第二日志文件开始写,……直到写满所有的日志文件之后,又从第一个日志文件开始写(覆盖原来的内容)。
以archivelog方式运行:
第一步:使用管理员的身份连接数据:conn sys/[密码] as sysdba;
第二步:关闭数据库:shutdown immediate;
第三步:启动数据库:startup mount;
第四步:alter database archivelog;
第五步:archive log start;
第六步:alter database open;
从server manger中显示当前数据库的archivelog:
archive log list;
执行数据库联机备份:
一旦以archivelog方式打开并对用户可用时,那么就可以进行备份;
- 将表空间设置为备份状态:alter tablespace system begin backup;
- 使用操作系统备份表空间中的数据:copy E:\Oracle\TableSpace\DEMO1.DBF E:\Oracle\TableSpace\copy
- 指定结束联机备份:alter tablespace system end backup;
- 备份归档重做日志文件:archive log start;
- 备份控制文件:alter database backup controlfile to 'E:\Oracle\TableSpace\file.bak'
3.恢复概述
恢复分为:实例恢复和介质恢复。
实例恢复:
在数据库实例的运行期间,当意外掉电、后台进程故障或人为中止时出现实例故障,此时需要实例恢复。 如果出现实例故障,由于Oracle实例没有正常关闭,而且当实例发生故障时,服务器可能正在管理对数据库 信息进行处理的事务。
实例恢复的目的就是将数据库恢复到与故障之前的事务一 致的状态。实例恢复只需要联机日志文件,不需要归档日志文件。实例恢复的最大特点是,Oracle在下次数 据库启动时会自动地执行实例恢复。
实例恢复的步骤:
- 为了解恢复数据文件中没 有记录的数据,进行向前回滚。该数据记录在联机日 志中,包括对回退段的内 容恢复。
- 回退未提交的事务,按步 骤(1)重新生成回退段 所指定的操作。
- 释放在发生故障时正在 处理事务所持有的资源。
- 解决在发生故障时正经历 这一阶段提交的任何悬而 未决的分布事务。
介质恢复:
如果在联机备份时发现实例故障,则需介质恢复。介质恢复主要在由于存储介质发生故障,导致数据文件被 破坏时使用。介质故障是当一个文件或者磁盘不能读取或写入时出现的故障。这种状态下的数据库都是不一 致的,这需要DBA手动进行数据库的恢复。这种恢复有两种形式:完全介质恢复和不完全介质恢复。
- 完全介质恢复:它使用重做数据或增量备份将数据库更新到最近的时间点,通常在介质故障 损坏数据文件或控制文件后执行完全介质恢复操作。实施完全数据库恢复时,根据数据库文件的破 坏情况,可以使用不同的方法。
- 不完全介质恢复:是在完全介质恢复不可能或者有特殊要求时进行的介质恢复。
4.导入与导出
(1)导出
关键字 | 描述 |
Userid | 执行指定账户的用户名和口令,如果是EXP命令后的第一个参数,则关键字Userid可以省略。 |
Buffer | 用户获取数据行的缓冲区尺寸,默认值随系统而定,通常设定一个高值。 |
File | 导出转储文件的名称。 |
Full | 若设为Y,表示执行Full数据导出。 |
Tables | 导出表的清单,可以执行这些表的Table导出(也就是要导出的表名称)。 |
EXP USERID=SCOTT/Admin123123@myorcl FULL=N BUFFER=10000 FILE=XSB TABLES=XSB
提示:将表导出之后,可以看到导出的文件是在当前目录下面。
(2)导入
关键字 | 描述 |
Userid | 执行指定账户的用户名和口令,如果是imp命令后的第一个参数,则关键字Userid可以不必指定。 |
Buffer | 用户获取数据行的缓冲区尺寸,默认值随系统而定,通常设定一个高值(>100 000)。 |
File | 要导入的导出转储文件名称。 |
Full | Y/N,若设为Y,表示执行Full数据导入,并导出转储文件。 |
Table | 导出表的清单,可以执行这些表的Table导出。 |
IMP USERID=SCOTT/Admin123123@myorcl FULL=N BUFFER=10000 FILE=XSB TABLE=XSB
更多推荐
所有评论(0)