查看: 514|回复: 0

[Oracle数据库] Oracle用户管理的备份与恢复介绍

发表于 2018-4-3 08:00:08

数据库维护中,备份或恢复是重中之重的问题。尽管很多时候数据库系统运行缓慢,

但对数据库数据的丢失而言,显然后者损失的代价是不言而喻的,DBA首要的工作就

是尽一切可能地做好数据的备份工作。

1.1、物理备份与逻辑备份

01、物理备份是所有物理文件的一个副本,比如数据文件,控制文件,归档日志等。该副本能被存储在本地磁盘或磁带等等。

物理备份是备份或恢复的基础

包括冷备份(非归档模式)或热备份(归档模式)

02、逻辑备份

将表、存储过程等数据使用Oracle的export等工具导出到二进制文件,后续根据需要再使用import工具导入数据库。

逻辑备份则是对物理备份的方式的一种补充,多用于数据迁移。

1.2、备份恢复工具

01、用户托管的备份与恢复,是一种手动备份恢复的方式。使用操作系统命令和SQL*plus来完成相关的备份与恢复。

02、使用RMAN来备份恢复,支持命令行及GUI接口,支持第三方磁带库备份,功能比较强大。

支持备份数据库、表空间、数据文件、控制文件、归档日志等

可以保存频繁使用备份恢复脚本

支持增量备份,跳过未使用的块,以及控制备份速度

在备份期间侦测损坏的数据

通过自动并发、限制I/O等提高备份性能

03、使用exp/imp、expdp/impdp之类的逻辑导出与导入工具。 支持全库、用户、表、带条件级别的导出与导入可以导到结构,也只可以只导出数据是跨平台迁移的最佳工具

1.3、常见的备份类型

联机数据库备份 -->使用archivelog模式,SCN不一致

脱机数据库备份 -->使用noarchivelog模式,SCN保持一致

整个数据库-->可以在不同的时间段来备份,减轻I/O压力,从而构建整个数据库

表空间-->在archivelog模式下,当处于noarchivelog模式下,则该表空间必须为只读或脱机

数据文件 -->同表空间备份

控制文件 -->可以使用SQL语句或RMAN来备份

归档日志

参数文件

1.4、备份的分类

(1) 备份策略:

a.整体:备份属于数据库的控制文件和所有数据文件

b.部分:备份数据库的一部分

(2) 备份类型:

a.完全:非增量RMAN备份

b.增量:只备份以前某次备份以来更改的信息

(3) 备份模式:

a.脱机:一致性备份,也称为冷备份

b.联机:非一致性备份,也称为热备份

1.5、恢复的分类

何时需要使用备份进行恢复:

发生以下类型的错误时,通常需要使用备份执行恢复:

(1) 介质故障:因数据库文件的物理问题而导致无法读写该文件

(2) 用户错误:数据库中的数据被误更改或误删除

数据恢复概览:

崩溃恢复:发生实例错误后自动恢复

介质恢复:恢复当前数据文件、控制文件

Oracle数据库体系结构:崩溃恢复

(1) 使用联机重做日志文件前滚数据库

(2) 回退未提交的更改Oracle数据库体系结构:在介质故障后恢复(1) 使用备份还原数据文件

(2) 使用归档和联机重做日志文件前滚数据库

完全恢复:将数据库恢复到最近的时间点

不完全恢复(时间点恢复):将数据库恢复到在特定时间或待定系统scn时的状态

完全恢复

使用数据库,表空间或数据文件的备份进行还原,再使用归档,重做日志或增量备份将数据更新到当前时间点

用户可以实现基于对数据库、表空间、数据文件执行完全恢复

可以分为在非归档模式下和归档模式下的完全恢复,完全恢复主要是针对归档模式下的,在非归档模式下很难做到完全恢复,除非是在做恢复时,联机重做日志还没有被重写。

不完全恢复

与完全恢复是同样的步骤,只不过不完全恢复仅仅是将数据恢复到某一个特定的时间点或特定的SCN,而不是当前时间点。

下列情况通常需要进行不完全恢复:

介质故障(media failure)导致部分或全部联机重做日志(online redo log)损坏

用户操作失误(user error)导致数据丢失,例如,用户由于疏忽而移除了表,提交了无效的数据到表

由于归档重做日志(archived redo log)丢失而无法进行完全恢复(complete recovery)

当前控制文件(control file)丢失,必须使用备份的控制文件打开(open)数据库

关于非归档的恢复说明

1.在非归档模式下,在丢失数据文件后唯一的选择是执行完整的数据库还原,而不能进行恢复;

2.还原完整的数据库是还原所用的数据文件和控制文件;

3.还原前提是要备份,因为是非归档模式所以只能进行冷备份,主要备份所有的数据文件和控制文件。对于联机重做日志文件,在正常关闭数据库的情况下,可以不备份它,但是在不正常关闭数据库的情况下要进行备份,建议备份下来,这样就可以不用重建了。

非归档模式下的恢复。

1.如果放数据文件的磁盘没有损坏,只是某种原因导致某些数据文件的丢失,那么只要把备份的数据库(所有数据文件和控制文件),复制到原来的地方即可。

2.如果是磁盘损坏,则不能放到原来的位置了,必须放到新的磁盘下。这样就要修改参数文件和控制文件的信息, 才能正常打开数据库。

3.现在模拟第二种情况(即磁盘损坏),首先对数据库进行冷备份,新建个目录/oracle/ubackup,在/oracle/oradata/itpux下的所有文件(数据文件,控制文件和联机重做日志文件)复制到ubackup目录下。

不完全介质恢复的几种类型:

基于时间的恢复(Time-based recovery) 将数据恢复到指定的时间点。

用户控制的恢复(Cancel-based recovery) 当用户提交CANCEL后停止恢复(此选项在使用RMAN时无效)。

基于SCN 的恢复(Change-based recovery) 将数据恢复到指定的SCN按重做日志序号恢复(Log sequence recovery)将数据恢复到指定的重做日志序号(仅使用RMAN时有效)。

表空间按时间点恢复(tablespace point-in-time recoveryTSPITR) 可以将一个或多个表空间恢复到与数据库中其他表空间不同的时间点,但是SYSTEM表空间,UNDO表空间,或任何包含回滚段(rollback segment)的表空间无法使用TSPITR功能与其它表空间有依赖性的表空间应当同时恢复被依赖的表空间,如两张表存在依赖性且位于不同的表空间。


恢复的相关视图

v$reover_file --查询需要恢复的文件,该视图信息来自控制文件,如控制文件来自备份或重建过则信息会不准。

v$archived_log--查询所有归档日志列表。

v$recovery_log--查询所有需要用于恢复的日志。




回复

使用道具 举报