`
free_bird816
  • 浏览: 205911 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

几种oracle数据库恢复的练习示例

阅读更多

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

1:安全关闭当前数据库。(确保当前数据库处于归档模式下)。 
2copy所有的数据文件,日志文件和控制文件到一个目录下。 
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:恢复: 
把当前数据库所有文件移动到一个临时文件夹里,模拟数据库损坏。 
8COPY最初复制的数据库的所有文件,但控制文件和日志文件要使用目前数据库的。 
9:启动数据库 startup 
mount 后会提示SYSTEM表空间需要恢复。并给出恢复使用的归档日志文档。 
确定归档日志位置正确后,输入auto. 
ORACLE将一个一个的应用归档文档。直至提示完全恢复成功。 
10:打开数据库 alter database open; 
11:查看user1用户及t1表中是否有刚才插入的10000条记录。 
至此,整个使用归档日志对完整的数据库冷备份进行完全恢复的模拟成功完成。
实例2:上面的例子,并且在线日志online redo也丢失,在这种情况下,只能做不完全恢复。前8步同上。 
9startup mount; 
10:步完全恢复: 
recover database until cance; 
o 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:上面的例子也可以做基于时间的不完全恢复,但时间必须是数据已经保留在归档日志中的时间及以前。 
9startup 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:已经做了冷备份。 
2abort方式关掉前的数据库,模拟由于数据文件丢失造成数据库非正常关闭。 
3:从冷备份当中copy丢失的数据文件。 
4startup mount; 
5:只对这个文件进行恢复。 
Recover datafile 'D:\ORACLE\ORADATA\SAMPLE\DR01.DBF'; 
ORA-00279: 更改 84851719 (在 09/24/2003 12:15:51 生成对于线程 是必需的 
ORA-00289: 建议: D:\ORACLE\ORADATA\SAMPLE\ARCHIVE\TESTT001S01330.ARC 
ORA-00280: 更改 84851719 对于线程 是按序列 # 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;
实例5:归档模式下热备份的恢复模拟练习 
1:对某个表空间进行热备份
Ater tablespace user begin backup 
2:os下把USER表空间对应的文件复制到备份的目录下。 
3:结束热备。 
Alter tablespace user end backup. 
4shutdown abort; 
5:删除该表空间的数据文件。 
6startup; 
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_corruptiontrue 
ORACLE不验证数据一致性的情况下强行打开数据库。 
然后EXPORT出数据,重建数据库。 
或者: 
把以前的的数据文件拿来,做不完全恢复,一直恢复到提示使用丢失的联机日志序列号时时打入cancel 
recover database until cancel; 
然后使用resetlogs的选项打开数据库 
alter database open resetlogs; 
所以在归档模式下当前数据库的控制文件和联机日志文件在恢复时候至关重要: 
其中控制文件用来对旧数据进行恢复,应用归档日志。 
而联机日志则可以保证数据库恢复到发生事故时的状态,算是完全恢复。 
如果没归档的联机日志丢失(状态为ACTIVE或者CURRENT),则只能使用归档日志恢复到最后一个归档日志的地方,是不完全恢复。

分享到:
评论

相关推荐

    Oracle数据库中的多表联查与分页查询技术详解

    内容概要:本文详细讲解了Oracle数据库中常用的几种多表联合查询方式(包括笛卡尔积查询、内连接查询、外连接查询以及自连接查询)及其具体的应用场景,同时也探讨了分页查询技巧与ROWNUM伪列的作用。 适用人群:...

    oracle练习题关于触发器的作业

    Oracle数据库是世界上最流行的数据库管理系统之一,尤其在企业级应用中占据主导地位。它拥有丰富的功能,其中触发器(Triggers)是实现复杂业务逻辑的重要工具。本篇文章将深入探讨Oracle中的触发器及其在实际问题...

    oracle常规练习

    根据提供的信息,我们可以...综上所述,这些示例涵盖了Oracle数据库中关于存储过程、PL/SQL块、记录类型及视图等多个方面的知识点。通过学习这些示例,可以帮助我们更好地理解和掌握Oracle数据库的基本操作和高级特性。

    Oracle PL/SQL的练习题

    在Oracle数据库环境中,PL/SQL提供了高效的数据处理能力,允许开发者创建复杂的存储过程、函数、触发器和包等。 这篇博客“Oracle PL/SQL的练习题”可能包含一系列针对初学者和进阶者的编程挑战,旨在提升对PL/SQL...

    数据库文件

    其次,"函数"这个rar文件可能包含Oracle数据库中的函数用法和示例。在数据库中,函数是用来处理特定数据或执行特定任务的预定义程序。例如,数学函数可以进行算术运算,日期函数可以帮助处理时间戳,字符串函数则...

    oracle 的函数、存储过程、游标、简单实例

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和灵活性使其在企业级应用中占据了重要地位。本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和...

    Oracle&Sql基础(ppt)

    Oracle数据库系统提供了广泛的功能,包括数据存储、备份与恢复、性能优化、安全性等。它的特性包括ACID(原子性、一致性、隔离性和持久性)事务支持,确保了数据的准确性和可靠性。Oracle还引入了多租户架构,使得在...

    oracle实用教程(培训专用)

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它为各类企业和组织提供高效、安全的数据存储和管理解决方案。Oracle实用教程是专为初学者设计的一本培训资料,旨在帮助新接触Oracle数据库的人快速...

    oracle的一些源代码

    在标题提到的“oracle的一些源代码”中,我们可以推测这是一些与Oracle数据库相关的编程实践,可能是由他人编写并分享的示例或练习。"ORCL"通常是指Oracle公司的股票代码,但在上下文中可能代表Oracle数据库本身。...

    数据库管理技术

    Oracle数据库提供了强大的XML数据管理能力,主要包括以下几个方面: - **XMLType**:这是一种特殊的Oracle数据类型,用于存储XML数据。通过XMLType,可以直接在Oracle表中存储XML文档,并利用Oracle提供的函数进行...

    Oracle SQL(SQL for Oracle)

    Oracle SQL,全称为结构化查询语言在Oracle数据库环境中的应用,是数据库管理员和开发人员用于检索、更新和管理Oracle数据库的核心工具。Oracle SQL是SQL标准的扩展,它提供了许多特有的功能,以满足企业级数据库...

    oracle用户区分

    Oracle数据库中的用户区分至关重要,因为它涉及到权限管理和数据库安全。在这个系统中,有几个特殊的预定义用户,每个都有不同的功能和权限。 首先,`sys`用户是Oracle数据库的核心管理员,它拥有最高级别的权限,...

    Oracle从零学起

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它提供了丰富的功能和高效的数据管理能力。从零开始学习Oracle,你需要掌握以下几个核心知识点: 1. **Oracle基础**:Oracle数据库的基础概念,...

    oracle 学习资料

    **培训课件**通常包含详细的教程、示例和实践练习,帮助学习者深入理解Oracle数据库的各个方面。课件可能涵盖了从基础的SQL查询到复杂的触发器、存储过程和包的使用。此外,可能还包括数据库设计、性能优化、安全性...

    oracle实验报告

    Oracle数据库自带的几个触发器(最简单触发器格式)示例如下: -- create or replace trigger MDSYS.sdo_drop_user after drop on DATABASE declare stmt varchar2(200); BEGIN if dictionary_obj_type = 'USER...

    Oracle Data Integrator CDC的使用

    ODI支持多种数据源和目标,包括Oracle数据库、非Oracle数据库、文件系统和其他云服务。 2. **Change Data Capture (CDC)**:CDC是一种数据库监控技术,它记录并捕获数据库中行级别的插入、更新和删除操作,而无需对...

Global site tag (gtag.js) - Google Analytics