首页 > 数据库 > Oracle > 用归档实现无备份下的数据文件恢复和最近学习记载
最近这半个月来自己的学习效率太低了,接下来要好好调整自己,按着自己的习惯去学习,然后最大的还是培养的linux的兴趣,linux上自己虽然已经坚持了快两个月了。但是自己觉得还是完全没有达到自己对oracle的学习习惯,遇到了问题和精彩的知识点总是避开,那是不对的,linux也有丰富的内部世界,同样是一个值得学习的领域,虽然学习我们不可能面面俱到,但是就自己现在对linux的掌握还远远不够,剩下来的三个多月的时间里自己真应该好好抓紧。
好了,扯点技术的吧!晚上看pub的一个网友提到了删除了数据文件无备份,但是有归档是否可以恢复.
不过这里还有前提是:控制文件创建时间早于数据文件(要是你重新CREATE CONTROLFILE了,此后再ALTER DATABASE CREATE DATAFILE是失败的(文件在CREATE CONTROLFILE之前创建的情况,控制文件中没有文件创建的有关信息,就不懂该从哪里开始恢复)。利用TRACE的备份重新CREATE CONTROLFILE 会丢失很多原来的信息比如文件的创建时间,备份的信息,SCN等。所以在CREATE CONTROLFILE之后一定要做个全备),而且还要非system表空间而且所有的创建数据文件的archivelog都在是可以实现恢复的,但是如果不满足上述条件则需要采取复杂的手段,就不继续探究了,这里就把符合上述条件测试的结果贴出来吧
Sql>create tablespace deltb datafile 'e:oracleproduct10.2.0oradatatestdeltb01.dbf' size 50M;
Sql>create table test08
tablespace deltb
as select * from dba_users
SQL> select count(1) from test08;
COUNT(1)
----------
27
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 419430400 bytes
Fixed Size 1249320 bytes
Variable Size 83890136 bytes
Database Buffers 327155712 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 7: 'E:ORACLEPRODUCT10.2.0ORADATATESTDELTB01.DBF'
SQL> alter database create datafile 'e:oracleproduct10.2.0oradatatestdeltb
01.dbf';
数据库已更改。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01113: 文件 7 需要介质恢复
ORA-01110: 数据文件 7: 'E:ORACLEPRODUCT10.2.0ORADATATESTDELTB01.DBF'
SQL> recover datafile 7;
完成介质恢复。
SQL> alter database open;
数据库已更改
SQL> select count(1) from test08;
COUNT(1)
----------
27
可以看出数据没有任何丢失,实现了完全恢复,从此方面我们更关注了archivelog的重要性,保留归档完全可以实现数据库所有的“前滚“,可以看出生产库不归档是多么的可怕!
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1056593/ ,如需转载,请注明出处,否则将追究法律责任。