使用alter tablespace create datafile恢复丢失的数据文件

来源:互联网 发布:淘宝改评价步骤 编辑:程序博客网 时间:2024/06/05 17:35

测试无备份情况下,数据文件损坏的恢复!


--创建测试表空间SQL> create tablespace tbs2 datafile '/u02/tbs2.dbf' size 200M;Tablespace created.SQL> 

--在测试表空间建表及插入测试数据SQL> create table t2(xxx varchar2(20)) tablespace tbs2;Table created.SQL> insert into t2(xxx) values (11111);1 row created.SQL> SQL> insert into t2(xxx) values (11111);1 row created.SQL> insert into t2(xxx) values (11111);1 row created.SQL> insert into t2(xxx) values (22222);1 row created.SQL> commit;Commit complete.SQL> select * from t2;XXX--------------------11111111111111122222SQL> shutdown immediate;

--模拟数据文件损坏SQL> host rm -rf /u02/tbs2.dbf


--重新启动数据库,提示数据文件不存在SQL> startupORACLE instance started.Total System Global Area 1603411968 bytesFixed Size                  2213776 bytesVariable Size            1006635120 bytesDatabase Buffers          587202560 bytesRedo Buffers                7360512 bytesDatabase mounted.ORA-01157: cannot identify/lock data file 5 - see DBWR trace fileORA-01110: data file 5: '/u02/tbs2.dbf'


--脱机问题表空间,并启动数据库SQL> alter database datafile '/u02/tbs2.dbf' offline drop;Database altered.SQL> alter database open;Database altered.

-- 利用 控制文件和日志文件恢复数据文件SQL> alter database create datafile '/u02/tbs2.dbf';Database altered.SQL> recover datafile '/u02/tbs2.dbf';Media recovery complete.

--重新在线表空间,恢复完成SQL> alter tablespace TBS2 online;Tablespace altered.SQL> SQL> select * from t2;XXX--------------------1111111111111111111111111222226 rows selected.SQL> 


alter database  create datafile的作用

Creates a new empty datafile in place of an old one--useful to re-create a datafile that was lost with no backup.

前提是db开启归档模式且自愿数据文件创建以来的archive log都可用.(实验可知,只要控制文件和数据文件创建以来的REDO都在就可以恢复!)

该命令通过查看control file提取出创建文件的DDL命令,初始化创建该文件(此刻文件内容为空),然后利用archive log重做所有的redo.

可在没有数据文件备份时使用。


0 0
原创粉丝点击