1.创建一个新的表空间
create tablespace rainbow
datafile 'd:\oracle\oradata\oa_test5\rainbow01.dbf' size 10m;
2.在其中建表
create table test
(emp int)
tablespace rainbow;
3.插入数据
insert into test
(emp) values(1000);
commit;
4.备份控制文件
alter database backup controlfile to 'd:\control.bak';
5.关闭数据库
shutdown immeidate;
6.进行全备份
备份所有的数据文件
7.打开数据库
startup
8.删除表空间rainbow
drop tablespace rainbow including contents; 16:46:03
9.为了验证我们再更新另外一个表空间里的test2表
insert into test2 (emp) values(888);
commit;
10.关闭数据库,并用6进行的全备份restore所有的数据文件(不完全恢复一定要全部的数据文件)
11.打开至mount;
startup mount;
12.执行不完全恢复
recover database until time'2007-03-23:16:46:00' using backup controlfile;
(为什么要使用using backup controlfile 因为删除表空间后控制文件被修改了)
SQL> recover database until time'2007-03-23:16:46:00' using backup controlfile;
ORA-00279: 更改 471722 (在 03/23/2007 16:39:44 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ORADATA\OA_TEST5\ARCHIVE\ARC00001.001
ORA-00280: 更改 471722 对于线程 1 是按序列 # 1 进行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
D:\ORACLE\ORADATA\OA_TEST5\redo03.log
已应用的日志
完成介质恢复
13.打开数据库
alter database open resetlogs;
数据库已更改
14.查询原来的数据
select * from test;
结果报错
ERROR at line 1:
ORA-00376: file 11 cannot be read at this time
ORA-01111: name for data file 11 is unknown - rename to correct file
ORA-01110: data file 11: '/opt/oracle/product/9.2.0/dbs/MISSING00011'
问题的原因:现在的控制文件中没有tablespace rainbow (前面已经将其删除)
虽然我们用备份的控制文件对数据库进行了修复但是数据库打开时当前的控制
文件仍然是最新的控制文件。
出现'/opt/oracle/product/9.2.0/dbs/MISSING00011' ,是因为数据库启动时
发现控制文件和system表空间中的dv信息不一致造成的
解决方法:重建控制文件
用备份出来的控制文件'd:\control.bak'重命名即可,或使用由alter
database backup control file to trace 备份的进行重建。
15.重新开启数据库并查询数据
SQL> select * from test;
EMP
----------
1000
SQL> select * from test2;
未选定行
说明数据库已经按我们的要求进行不完全恢复了
关键词标签:oracle,数据库
相关阅读
热门文章 Oracle中使用alter table来增加,删除,修改列oracle中使用SQL语句修改字段类型-oracle修使用低权限Oracle数据库账户得到管理员权限Oracle对user的访问控制
人气排行 ORACLE SQL 判断字符串是否为数字的语句Oracle中使用alter table来增加,删除,修改列的语法ORACLE和SQL语法区别归纳(1)oracle grant 授权语句如何加速Oracle大批量数据处理Oracle删除表的几种方法ORACLE修改IP地址后如何能够使用Oracle 10g创建表空间和用户并指定权限
查看所有0条评论>>