`

几种oracle数据库恢复

阅读更多
  作为一个dba,最重要的工作莫过于保证数据库中数据的安全,当一个数据库宕掉之后,恢复就变成了至关重要的事情。能否成功的恢复,并不在于数据库down掉时采取的恢复策略,要保证数据的万无一失,一套完整的备份方案是必须的。但作为dba,还应该了解和掌握各种情况下应该采取哪些恢复措施,并且清楚的指导每一种恢复方式的会产生什么样的结果。以下是几种常用的的备份和恢复方式的具体示例,是入门的dba必须掌握的。

实例1:归档的数据库,完整的数据库全库备份,完整的归档备份,此时数据库down掉,只留下控制文件和日志文件可用。
1:安全关闭当前数据库。(确保当前数据库处于归档模式下)。
2:copy所有的数据文件,日志文件和控制文件到一个目录下。
3:打开数据库,建新用户user1
create user user1 identified by aaaaaa;
grant dba to user1;
connect user1/aaaaaa;
4:在user1 下建表T1,向T1中插入10000条数据。
Begin
For I in 1..100000 loop
Insert into t1 values(i);
End loop;
Commit;
End;
/
5:切换几次日志,使所有日志都已经归档。
Alter system switch log file;
6:正常关闭数据库。Shutdown immediate;
7:恢复:
把当前数据库所有文件移动到一个临时文件夹里,模拟数据库损坏。
8:COPY最初复制的数据库的所有文件,但控制文件和日志文件要使用目前数据库的。
9:启动数据库 startup
mount 后会提示SYSTEM表空间需要恢复。并给出恢复使用的归档日志文档。
确定归档日志位置正确后,输入auto.
ORACLE将一个一个的应用归档文档。直至提示完全恢复成功。
10:打开数据库 alter database open;
11:查看user1用户及t1表中是否有刚才插入的10000条记录。
至此,整个使用归档日志对完整的数据库冷备份进行完全恢复的模拟成功完成。

实例2:上面的例子,并且在线日志online redo也丢失,在这种情况下,只能做不完全恢复。
前8步同上。
9:startup mount;
10:步完全恢复:
recover database until cancel;
open mount 后会提示SYSTEM表空间需要恢复。并给出恢复使用的归档日志文档。
确定归档日志位置正确后,回车,一个个应用归档日志,直至最后提示的归档日志用完后下一个归档日志时输入cancel.
Oracle 提示:
Log applied.
ORA-00279: change 84852341 generated at 09/24/2003 12:16:41 needed for thread 1
ORA-00289: suggestion : D:\ORACLE\ORADATA\SAMPLE\ARCHIVE\TESTT001S01349.ARC
ORA-00280: change 84852341 for thread 1 is in sequence #1349
ORA-00278: log file 'D:\ORACLE\ORADATA\SAMPLE\ARCHIVE\TESTT001S01348.ARC' no lon
recovery
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
这是需要resetlogs参数打开数据库。
Alter database open resetlogs;

实例3:上面的例子也可以做基于时间的不完全恢复,但时间必须是数据已经保留在归档日志中的时间及以前。
9:startup mount;
10:基于时间点的不完全恢复:
recover database until time ‘2003-9-24 12:20’;
SVRMGR> recover database until time '2003-9-24 11:20';
ORA-00279: ?? 84851370 (? 09/24/2003 11:16:01 ??) ???? 1 ????
ORA-00289: ??: D:\ORACLE\ORADATA\SAMPLE\ARCHIVE\TESTT001S01324.ARC
ORA-00280: ?? 84851370 ???? 1 ???? # 1324 ???
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
应用的记录。
SVRMGR> alter database open resetlogs;

实例4:归档模式下单个数据文件丢失或损坏,从冷备份中恢复的模拟练习
1:已经做了冷备份。
2:abort方式关掉前的数据库,模拟由于数据文件丢失造成数据库非正常关闭。
3:从冷备份当中copy丢失的数据文件。
4:startup mount;
5:只对这个文件进行恢复。
Recover datafile 'D:\ORACLE\ORADATA\SAMPLE\DR01.DBF';
ORA-00279: 更改 84851719 (在 09/24/2003 12:15:51 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ORADATA\SAMPLE\ARCHIVE\TESTT001S01330.ARC
ORA-00280: 更改 84851719 对于线程 1 是按序列 # 1330 进行的
ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORADATA\SAMPLE\ARCHIVE\TESTT001S01329.ARC'
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto 指定为自动恢复。
应用的记录。
直至完成。
ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ORADATA\SAMPLE\ARCHIVE\TESTT001S01343.ARC'
应用的记录。
完成介质的恢复。
6:打开数据库
alter database open;
另一种方法:
1:startup mount;
2:alter database datafile 'D:\ORACLE\ORADATA\SAMPLE\DR01.DBF' offline;
3:alter database open;
4:recover datafile 'D:\ORACLE\ORADATA\SAMPLE\DR01.DBF';;
5:alter database datafile 'D:\ORACLE\ORADATA\SAMPLE\DR01.DBF' online;

实例4:归档模式下热备份的恢复模拟练习
1:对某个表空间进行热备份.
Ater tablespace user begin backup
2:在os下把USER表空间对应的文件复制到备份的目录下。
3:结束热备。
Alter tablespace user end backup.
4:shutdown abort;
5:删除该表空间的数据文件。
6:startup;
7:提示文件不存在。
8:还原热备的文件,令该文件脱机。
Alter database datafile ‘88888888’ offline;
9:打开数据库。
10:恢复该文件。
Recover databfile ‘88888888’;
11:alter database datafile online.
也可以对所有的表空间进行热备,删除数据库所有文件,还原热备文件。利用归档日志进行恢复,方法同上。
注:一定要保留热备之后的所有归档日志,联机日志和控制文件,如果联机日志丢失(指状态为active或者current的日志文件),只能进行不完全恢复。方法是按照提示输入日志文件,知道最后一个没有归档的日志文件CANCEL掉就可以了。

一点心得:
在数据库归档模式下,即使是数据库非正常DOWN掉,通过归档日志和联机日志都可以进行完全恢复。可是如果某个状态为ACTIVE或者CURRENT的日志文件丢失或者损坏,ORACLE肯定不能完整的打开,即使使用recover database until cancel时,也基本上会报:ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误ORA-01194: 文件1需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\SAMPLE\SYSTEM01.DBF'
这种情况下由于数据库不能恢复到一致的状态,
一种方法:
在数据库中加入:
_allow_resetlogs_corruption=true
让ORACLE不验证数据一致性的情况下强行打开数据库。
然后EXPORT出数据,重建数据库。
或者:
把以前的的数据文件拿来,做不完全恢复,一直恢复到提示使用丢失的联机日志序列号时时打入cancel
recover database until cancel;
然后使用resetlogs的选项打开数据库
alter database open resetlogs;
所以在归档模式下当前数据库的控制文件和联机日志文件在恢复时候至关重要:
其中控制文件用来对旧数据进行恢复,应用归档日志。联机日志则可以保证数据库恢复到发生事故时的状态,算是完全恢复。如果没归档的联机日志丢失(状态为ACTIVE或者CURRENT),则只能使用归档日志恢复到最后一个归档日 志的地方,是不完全恢复
分享到:
评论

相关推荐

    操作系统重装后oracle数据库的恢复

    重做操作系统后oracle数据库的恢复 文件夹中文件说明: ora.reg oracle主要注册项的恢复参考文件 oraodbc.reg odbc驱动项的恢复参考文件 oraole1~4.reg ole 驱动项的恢复参考文件 恢复中重要操作说明: 1、恢复前提...

    Oracle数据库RMAN备份与恢复.pdf

    Oracle数据库提供了物理备份和逻辑备份两种方式,RMAN(Recovery Manager)技术是DBA常用的备份技术。RMAN备份特点是跳过未使用的数据块,使用Oracle特有的二进制压缩模式,能够最大程度地压缩数据块中的典型数据。 ...

    Open resetlogs操作对Oracle数据库恢复的影响.pdf

    为了更好地理解和掌握Oracle数据库恢复中resetlogs操作的影响,可以结合以下几个方面进行深入研究: 1. Oracle数据库备份与恢复原理:了解在Oracle数据库中进行备份和恢复的基本原理,包括控制文件和数据文件的作用...

    oracle数据库备份恢复和svn备份恢复

    恢复方面,Oracle提供了几种恢复模式,包括完整恢复、不完全恢复和点-in-time恢复。完整恢复是指从最近的备份和所有归档重做日志恢复;不完全恢复允许恢复到特定时间点或SCN(系统改变号);点-in-time恢复则是在不...

    ORACLE数据库备份与恢复测试

    恢复策略方面,Oracle提供了几种主要的方法。全量恢复是最基本的,用于恢复全部数据;增量恢复则只恢复自上次备份以来更改的数据;归档日志恢复则在发生介质故障后,结合归档日志进行时间点恢复,确保数据的准确性。...

    Oracle 数据库的备份与恢复

    在进行Oracle数据库的备份与恢复时,还需要注意以下几点: 1. **备份文件的完整性**:确保备份文件完整无损,没有丢失或损坏的情况发生。 2. **备份文件的位置**:备份文件应存放在安全可靠的位置,避免因硬盘故障...

    Oracle数据库学习指南

    Oracle2: 1. 《Oracle8 优化技术》摘录 (第一章 安装) 2. 《Oracle8 优化技术》摘录 (第二章 内存-CPU) 3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 ...52. 自动备份Oracle数据库

    数据库,oracle机制,Oracle数据库机制

    Oracle数据库支持两种不同的归档模式:NOARCHIVELOG模式和ARCHIVELOG模式。这两种模式的选择对于数据库的备份和恢复策略至关重要。 **1. NOARCHIVELOG模式:** 在NOARCHIVELOG模式下,Oracle不会自动归档重做日志...

    深刻理解Oracle数据库的启动和关闭

    1. 启动数据库时,有以下几种启动选项: - `STARTUP NOMOUNT`:仅创建实例,但不加载数据库。这一步骤用于配置和检查初始化参数,而不实际打开数据库。实例启动后,Oracle 会读取 `init.ora` 文件,并启动后台进程...

    Oracle数据库进阶 高可用性、性能优化和备份恢复

    ### Oracle数据库进阶:高可用性、性能优化和备份恢复 在现代企业的信息化建设中,数据库作为核心的数据存储与管理工具扮演着至关重要的角色。Oracle数据库因其强大的功能、灵活性及可靠性而被广泛应用于各行各业。...

    ORACLE数据库的日志文件分析.pdf

    ORACLE数据库日志文件的管理过程主要包括日志文件的创建、写入、归档和恢复等几个方面。日志文件的创建是指在数据库创建时,定义日志文件的大小、数量和位置等参数。日志文件的写入是指数据库的所有操作都记录在日志...

    Oracle数据库实时同步

    实时同步主要通过以下几种技术实现: - **归档日志**:Oracle数据库支持在事务提交后将重做日志(redo log)归档保存。这些归档日志可以被用来恢复数据。 - **物理备库**:是一种物理复制的方式,它通过在备用数据库...

    Oracle9i数据库的恢复.pptx

    Oracle9i数据库的恢复是数据库管理中的关键环节,旨在确保在发生异常情况时,能够保护数据的完整性并恢复到故障前的稳定状态。本章主要围绕Oracle9i数据库的备份和恢复技术展开,包括备份的概念、模式、策略以及具体...

    动态导入oracle数据库

    在进行Oracle数据库的数据导入导出之前,我们先了解几个基本概念: - **导出(Export)**:指的是将数据库中的数据或者对象从Oracle数据库中提取出来,并保存为一个二进制文件或文本文件的过程。 - **导入(Import)...

    Oracle数据库的创建与恢复的步骤

    本文将详细解析Oracle数据库的创建与恢复步骤,以帮助读者更好地理解和实践这些关键操作。 首先,我们来看数据库的备份。备份是防止数据丢失的重要手段,Oracle提供了一种名为Export(EXP)的数据导出工具来实现这...

    Oracle数据库参数设置

    Checkpoint 是 Oracle 自动执行的一种操作,当检查点操作时,数据库中的所有缓冲区会写回磁盘,所有数据库的控制文件被更新。Checkpoint 频繁发生会加快数据库的恢复,但是增加了 I/O 次数,会降低系统的性能。修改 ...

    Oracle数据库逻辑损坏恢复方法探讨.pdf

    时 间点恢复技术是恢复Oracle数据库逻辑损坏的一种常见方法。其原理是在另外的机器上或本地机器上恢复数据库到丢失数据前的时间点,然后导出丢失数据的表中的数据,最后再导入到产品数据库中。该方法需要构建辅助...

    oracle数据库不完全恢复

    系统更改号(SCN)在Oracle数据库恢复中扮演着重要角色,它是一个全局递增的序列号,标识每个提交的事务。SCN记录在数据文件头部、控制文件以及日志中,当这三个地方的SCN一致时,表明数据库处于一致状态。查询SCN...

Global site tag (gtag.js) - Google Analytics