oracle数据库恢复方案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

数据库恢复方案 (1)

文档控制 (1)

一、相关概念 (3)

1,恢复的两个阶段 (3)

2,Oracle实例启动的三个阶段 (3)

3,RMAN信息的保存位置 (3)

二、完全恢复 (3)

(一) 控制文件 (3)

1) 丢失部分控制文件: (3)

2) 丢失全部控制文件 (3)

(二) 重做日志文件 (4)

1) 非当前使用的重做日志文件: (4)

2) 当前使用的重做日志文件(未归档): (4)

(三) 数据文件 (4)

1) 无归档模式下的完全恢复 (4)

2) 归档模式下的完全恢复 (5)

三、不完全恢复 (6)

(一) 基于SCN的不完全恢复 (6)

1) 准备工作 (6)

2) 使用RMAN进行恢复 (7)

(二) 基于时间点的不完全恢复 (8)

1) 准备工作 (8)

2) 使用RMAN进行恢复 (8)

四、高级篇 (9)

(一) 使用RMAN进行异机同目录 (9)

1) 准备工作 (9)

2) 通过RMAN进行异机恢复 (10)

(二)使用RMAN进行异机异目录 (11)

1) 准备工作 (11)

2) 通过RMAN进行异机恢复 (11)

(三)使用RMAN进行在线数据块恢复 (14)

一、相关概念

1,恢复的两个阶段

数据库无论采取哪种方式进行恢复都分为Restore和Recover两个步骤。Restore(还原):把控制文件、重做日志文件和数据文件还原到正确位置。Recover(恢复):恢复还原后的数据文件,使数据库达到一致状态。

2,Oracle实例启动的三个阶段

Oracle实例启动经过三个阶段:

l NOMOUNT(未装载):读入参数文件,验证参数文件中的目录是否存在。

l MOUNT(装载):读入参数文件指定位置的控制文件。

l OPEN(打开):验证控制文件中指定的重做日志文件和数据文件是否正确、数据文件是否一致,然后读入数据文件中的数据。

所以按照如下顺序使数据库正确打开。

1) SHUTDOWN(关闭)状态下,确保参数文件指定的文件夹存在,启动到NOMMUNT 状态。

2) NOMOUNT状态下,保证控制文件的位置和命名与参数文件中相同,控制文件中指定的重做日志文件和数据文件存在,然后启动到MOUNT状态。

3) MOUNT状态下,执行RMAN还原和恢复操作。

4) OPEN状态下,读入数据文件和重做日志文件。

我们要保证Oracle在各个阶段读入的文件和目录指向正确的路径。

如果更改了某个文件的位置,要把其相应的参数文件和控制文件中的信息要一同更新。

3,RMAN信息的保存位置

NOCATALOG(非恢复目录)模式时,RMAN把备份文件的辅助信息保存在控制文件中。CATALOG(恢复目录)模式时,RMAN把备份文件的辅助信息保存在一个数据库中。

下面将通过若干实验来总结Oracle的各种崩溃情况下的恢复。

二、完全恢复

(一) 控制文件

丢失控制文件只需要执行“还原”步骤。

1) 丢失部分控制文件:

1,关闭数据库

2,手动复制剩余控制文件并改名成丢失的控制文件名

3,启动数据库

数据库中所有控制文件是完全相同的,使用DBCA创建数据库会默认产生三个控制文件,建议多路复用控制文件(把多个控制文件放到不同磁盘上),保证数据库的可用性。

2) 丢失全部控制文件

1,关闭数据库

2,启动数据库到NOMOUNT状态

3,重建控制文件

4,启动数据库

重建控制文件有以下两种方法:

1,找到警告日志,根据其信息创建控制文件。警告日志位于bdump文件夹中,命名为alert_{oracle_sid}.log,启动失败等信息也可以在这里找到。

2,找到跟踪文件,根据其SQL语句重建控制文件。跟踪文件位于udump文件夹下,使用下述命令备份控制文件到跟踪文件。

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

(二) 重做日志文件

丢失非当前状态的重做日志文件需要执行“还原”步骤,丢失当前状态的重做日志文件需要“恢复”步骤。

重做日志文件按状态分为当前、非当前、已归档和未归档四种,需要用不同的命令来打开数据库。

1) 非当前使用的重做日志文件:

1,已归档:

SQL> ALTER DATABASE CLEAR LOGFILE GROUP #;

2,未归档:

SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP #;

2) 当前使用的重做日志文件(未归档):

SQL> ALTER DATABASE MOUNT;

SQL> RECOVER DATABASE UNTIL CANCEL;

SQL> ALTER DATABASE OPEN RESETLOGS;

如果清除了未归档的重做日志文件(当前使用的重做日志文件为未归档),会丢失这个重做日志文件包含的信息,导致日后恢复时无法完全恢复,所以清除未归档的重做日志文件后要立刻全备份数据库。

(三) 数据文件

1) 无归档模式下的完全恢复

无归档模式一般采用exp导出或者手工冷备份方式进行备份恢复。手工冷备份方式:

1,创建表

SQL> create table tb(a integer,b integer);

表已创建。

2,插入数据

SQL> insert into tb(a,b) values(1,1);

已创建1行。

SQL> insert into tb(a,b) values (2,2);

已创建1行。

SQL> commit;

提交完成。

3,关闭数据库,手工删除数据文件模拟数据文件损坏

相关文档
最新文档