在open状态下恢复未备份的数据文件

        此文讲述如何恢复未备份的数据文件,在归档日志模式,如果dba增加了新的数据文件,当没有备份新的数据文件,那么该文件出现损坏时,可以恢复该数据文件。前提是 从建立新的数据文件到丢失为止的所有归档日志必须全部存在。

一 模拟实验环境。在数据文件test 里建立t1表 并插入数据,提交,归档日志文件。

SQL> create table t(num number) tablespace test;

表已创建。

SQL> insert into t values(1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into t values(2);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into t values(3);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> insert into t values(4);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

模拟数据文件丢失。
SQL> host del f:\lib\test.dbf

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

二   实施恢复。

 

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  535662592 bytes                                      
Fixed Size                  1334380 bytes                                      
Variable Size             130024340 bytes                                      
Database Buffers          398458880 bytes                                      
Redo Buffers                5844992 bytes                                      
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'F:\LIB\TEST.DBF'

2)使数据文件脱机。
SQL> alter database datafile 6 offline;

数据库已更改。

3)打开数据库。

SQL> alter database open;

数据库已更改。

4)重建数据文件,在执行恢复命令之前,首先需要复制数据文件的备份,但该文件没有备份,所以只能用alter database create datafile命令重建数据文件。

SQL> alter database create datafile 'f:\lib\test.dbf';

数据库已更改。

5)恢复数据文件。

SQL> recover  datafile 'f:\lib\test.dbf';--也可以用recover  datafile 6;
ORA-00279: 更改 2325010 (在 05/09/2010 21:06:57 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\53_1_715961434.LOG
ORA-00280: 更改 2325010 (用于线程 1) 在序列 #53 中

指定日志: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 2326948 (在 05/09/2010 21:27:02 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\54_1_715961434.LOG
ORA-00280: 更改 2326948 (用于线程 1) 在序列 #54 中

ORA-00279: 更改 2328241 (在 05/09/2010 21:40:37 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\55_1_715961434.LOG
ORA-00280: 更改 2328241 (用于线程 1) 在序列 #55 中

ORA-00279: 更改 2329131 (在 05/09/2010 21:48:01 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\YANG\ARCHIVE2\56_1_715961434.LOG
ORA-00280: 更改 2329131 (用于线程 1) 在序列 #56 中

已应用的日志。
完成介质恢复。---意味着恢复成功了

最后,验证一下。

SQL> alter database datafile 6 online;

数据库已更改。

SQL> select * from t;

       NUM                                                                     
----------                                                                     
         1                                                                     
         2                                                                     
         3                                                                     
         4                                                                     

恢复成功,,,,

需要注意的是 此情况只适用于归档模式。

时间: 2024-07-31 23:57:17

在open状态下恢复未备份的数据文件的相关文章

在open状态下恢复丢失的数据文件

    在open状态下恢复丢失的数据文件,这个实验比较简单,要注意数据库必须1)数据库必须是归档状态2)数据库在数据文件丢失前做过全备份 .次实验模拟test.dbf 意外丢失. 一 实验前的准备.建立一个名为yang的表,插入数据,并提交.归档日志. SQL> conn system/yang as sysdba已连接.SQL> create table yang (num number) tablespace test; 表已创建. SQL> insert into yang va

在mount状态下恢复数据文件system表空间

数据字典(包含数据库本身以及存储的所有对象的基本信息)存放在SYSTEM表空间中.当数据库处于open状态时,如果system表空间所对应的数据文件出现介质失败,当在其数据文件上进行IO时操作时,数据库会自己关闭:当数据库处于关闭状态时,如果system表空间所对应的数据文件出现介质失败,数据库将不能打开.打开时会出现如下错误: ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件ORA-01110: 数据文件 1: 'F:\APP\YANG\ORADATA\ORAC

oracle手工完全恢复(四)database在open 状态下恢复数据文件

案例3:(recover tablespace ,database open状态) --database在open 状态下恢复数据文件(除了system tablespace) (1) 模拟环境: 06:10:52 SQL> insert into scott.t01 values (4); 1 row created. 06:13:12 SQL> insert into scott.t01 values (5); 1 row created. 06:13:13 SQL> insert

Linux中恢复被误删的数据文件的例子

Linux环境中文件被删除的恢复,通常有几种情况,如果数据库实例还未停止,那么恢复很easy,如果实例停掉, 那么可能需要借助相关的工具来进行恢复,这里我进行简单的描述. 1. 使用工具进行恢复(ext3grep或者extundelete,e2fsprogs等工具) 我这里使用ext3grep来进行删除文件的恢复,如下是一个例子. 1). 安装rpm包 rpm -ivh ext3grep-0.10.2-1.el4.rf.i386.rpm 2).模拟数据文件被删除的恢复 SQL> !rm -rf

[20161031]rman备份与数据文件变化3.txt

[20161031]rman备份与数据文件变化3.txt --想象一下,如果备份文件时间很长,而这个时候数据文件大小发生了变化,oracle的备份如何解决这个问题呢? --前面我已经做了增大数据文件,参考链接:http://blog.itpub.net/267265/viewspace-2127386/ --这次测试减少数据文件大小看看. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BAN

[20161102]rman备份与数据文件变化5.txt

[20161102]rman备份与数据文件变化5.txt --想象一下,如果备份文件时间很长,而这个时候数据文件大小发生了变化,oracle的备份如何解决这个问题呢? --前面我已经做了增大数据文件,参考链接:http://blog.itpub.net/267265/viewspace-2127386/ --这次测试减少数据文件大小看看.相关链接: http://blog.itpub.net/267265/viewspace-2127424/ http://blog.itpub.net/2672

[20161031]rman备份与数据文件变化2.txt

[20161031]rman备份与数据文件变化2.txt --想象一下,如果备份文件时间很长,而这个时候数据文件大小发生了变化,oracle的备份如何解决这个问题呢? 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------

[20161101]rman备份与数据文件变化7.txt

[20161101]rman备份与数据文件变化7.txt --//想象一下,如果备份文件时间很长,而这个时候数据文件大小发生了变化,oracle的备份如何解决这个问题呢? --//去年已经测试了建立备份集的情况,一直想做一次image copy的测试,一直脱,主要原因自己不想做这个测试.... --//而且当时的测试很乱,自己主要一边做一边想.... --//链接: http://blog.itpub.net/267265/viewspace-2127386/ http://blog.itpub

[20171123]rman备份与数据文件变化6.txt

[20171123]rman备份与数据文件变化6.txt --//想象一下,如果备份文件时间很长,而这个时候数据文件大小发生了变化,oracle的备份如何解决这个问题呢? --//去年已经测试了建立备份集的情况,一直想做一次image copy的测试,一直脱,主要原因自己不想做这个测试.... --//而且当时的测试很乱,自己主要一边做一边想.... --//链接: http://blog.itpub.net/267265/viewspace-2127386/ http://blog.itpub