作者:书友85467040 | 来源:互联网 | 2014-07-08 01:11
1.冷备在数据库关闭的状态下把所有数据库文件给复制到别的目录下。在这里可以对数据库执行一些操作(比如建一个表,向里面插入相应的值,主要是为了,恢复之后可以看到效果)2.模拟数据库文件被删除。把dbf文件删...SyntaxHighlighter.all();
1.冷备在
数据库关闭的状态下把所有数据库文件给复制到别的目录下。
在这里可以对数据库执行一些操作(比如建一个表,向里面插入相应的值,主要是为了,恢复之后可以看到效果)
2.模拟数据库文件被删除。把dbf文件删除。 www.2cto.com
3.进入数据库的mount状态下。
查看数据库文件头的scn号。
select file#,name,checkpoint_change#from v$datafile_header;
可以看到什么都没有。
4.查看控制文件中的数据文件的检查点 www.2cto.com
select file# ,name,checkpoint_change# from v$datafile;
可以看到有相应的文件信息
因为v$datafile和v$datafile_header两个视图的信息来源不一样。
v$datafile的信息是直接从控制文件中得到的。v$datafile_header的信息是直接从数据文件头中取到的。数据文件都被删除了当然找不到相应的值了。 www.2cto.com
6.现在打开数据库。
alterdatabase open;会报错
从这个图中可以看到,需要system01.dbf数据文件。我们就把刚才备份的文件拷到这个目录下。
7.拷好之后执行两个命令
select file#,name,checkpoint_change# from v$datafile_header;
select checkpoint_change# from v$database;
从这个图中可以看到。scn号不相同,因为这个数据文件是刚才备份的那个,所以现在scn当然不相同了。现在的主要工作就是通过归档文件把数据库文件的scn恢复到当前的scn就可以了。
现在就可以恢复了
8.通过v$recover_file视图查看需要恢复哪些数据库
select file#,error,change#,onine_status from v$recover_file;
下面这个sql语句可以看到归档日志的详细信息。
select name,first_change#,next_change#,status from v$archive_log;
可以从scn号看出从哪个归档日志进行恢复
9.现在执行恢复命令 www.2cto.com
recover datafile 1;
10.现在可以查看数据文件头的scn号
可以看到现在的scn号已经和当前scn差不多,(可能会一点不一样,那是因为最新的数据还没有更新到这里,只在内存中改变了)
11.在把其它的数据文件拷过来。
recover database;
12.现在启动数据库,就大功告成了
alter database open;
13.现在就可以查询到在备份之后修改的内容了。
14.现在的所有的scn号也一致了。