ITPub博客

首页 > 数据库 > Oracle > RMAN_部分数据文件丢失或者损坏的恢复

RMAN_部分数据文件丢失或者损坏的恢复

原创 Oracle 作者:djb1008 时间:2010-09-14 08:39:06 0 删除 编辑
  1. 简述

当个别数据库的数据文件丢失或者损坏,则需要首先恢复该文件的备份复本,然后运用归档日志和REDO文件进行完整恢复,使得最后丢失或者损坏的数据文件的SCN等于当前的SCN,这样数据库可以正常打开,数据没有丢失。

[@more@]

  1. 建立测试环境

2.1 创建测试表空间

SQL>CREATE TABLESPACE "USER02" DATAFILE 'C:ORADATAAIDUUSER02.DBF' SIZE 20M REUSE LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

2.2 在测试表空间上创建数据库表

SQL>create table aidu.test_for_recovery(id number not null,name varchar2(200),primary key(id)) tablespace user02;

SQL> select table_name,tablespace_name from all_tables where table_name='TEST_FOR_RECOVERY';

TABLE_NAME TABLESPACE_NAME

------------------------------ ------------------------------

TEST_FOR_RECOVERY USER02

2.3做一次RMAN全备份

C:> RMAN TARGET /

RMAN>RUN{

SQL ‘ALTER SYSTEM ARCHIVE LOG CURRENT’;

ALLOCATE CHANNEL D1 TYPE DISK;

BACKUP FULL DATABASE PLUS ARCHIVELOG;

RELEASE CHANNEL D1;}

2.4 在测试表中插入数据,用于验证数据是否完整恢复

SQL>CONN AIDU/AIDU

SQL>INSERT INTO TEST_FOR_RECOVERY(1,’AFTER_RMAN_BAK’);

SQL>COMMIT;

  1. 模拟灾难发生

SQL>SHUTDOWN IMMEDIATE;

SQL>HOST DEL C:ORADATAAIDUUSER02.DBF; #删除USER02表空间的一个文件

SQL>STARTUP

ORACLE 例程已经启动。

Total System Global Area 268435456 bytes

Fixed Size 1248504 bytes

Variable Size 92275464 bytes

Database Buffers 171966464 bytes

Redo Buffers 2945024 bytes

数据库装载完毕。

ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件

ORA-01110: 数据文件 2: 'C:ORADATAAIDUUSER02.DBF'

  1. 进行灾难恢复

4.1 查看当前数据库状态

SQL> SELECT OPEN_MODE FROM V$DATABASE;

OPEN_MODE

----------

MOUNTED

4.2 使用RMAN进行恢复

这个试验里,RMAN备份集的目录是使用缺省的备份与恢复目录(C:oradataflash_recovery_area)。如果不想放在缺省的目录可以指定备份的路径。例如:

ALLOCATE CHANNEL D1 TYPE DISK FORMAT ‘C:ORABAK’;

C:>RMAN TARGET /

RMAN> RUN{

2> ALLOCATE CHANNEL D1 TYPE DISK;

3> RESTORE DATAFILE 2;

4> RECOVER DATABASE;

5> SQL 'ALTER DATABASE OPEN';

6> RELEASE CHANNEL D1;}

使用目标数据库控制文件替代恢复目录

分配的通道: D1

通道 D1: sid=46 devtype=DISK

启动 restore 于 2006-07-10 17:26:03

通道 D1: 正在开始恢复数据文件备份集

通道 D1: 正在指定从备份集恢复的数据文件

正将数据文件00002恢复到C:ORADATAAIDUUSER02.DBF

通道 D1: 正在读取备份段 C:ORADATAFLASH_RECOVERY_AREAAIDUBACKUPSET2006_07_10O1_MF_NNNDF_TAG20060710T171655_2C46R8M2_.BKP

通道 D1: 已恢复备份段 1段句柄 = C:ORADATAFLASH_RECOVERY_AREAAIDUBACKUPSET2006_07_10O1_MF_NNNDF_TAG20060710T171655_2C46R8M2_.BKP 标记 = TAG20060710T171655

通道 D1: 恢复完成, 用时: 00:00:08完成 restore 于 2006-07-10 17:26:13

启动 recover 于 2006-07-10 17:26:14

正在开始介质的恢复

介质恢复完成, 用时: 00:00:01

完成 recover 于 2006-07-10 17:26:18

sql 语句: ALTER DATABASE OPEN

释放的通道: D1

4.5 检查数据是否正常恢复

SQL>CONN AIDU/AIDU

SQL> SELECT * FROM TEST_FOR_RECOVERY;

ID NAME

---------- ------------------------------

1 after_rman_backup

我们可以看到数据完全恢复了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/32980/viewspace-1038307/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-07-27

  • 博文量
    175
  • 访问量
    778873