您好,欢迎访问一九零五行业门户网

基于时间点的不完全恢复的例子

说到不完全恢复,一般有三种场景,基于时间点的不完全恢复,基于scn的不完全恢复,基于cancel的不完全恢复。 三种情况都是不完全
说到不完全恢复,一般有三种场景,基于时间点的不完全恢复,基于scn的不完全恢复,基于cancel的不完全恢复。
 三种情况都是不完全恢复采用的方式,而不完全恢复都是在完全恢复的过程中出现了这样那样的错误,数不胜数,基本就是归档,redo损坏丢失,控制文件丢失,备份的问题,手工失误等等。
 我们可以举一个不完全恢复的案例,其实在实际操作的过程中还是有一些值得总结和学习的地方。
 第一步准备基本的数据。目前我们可以看到在表空间data上只有一个表new_recover
sql> select owner,segment_name,segment_type from dba_segments where tablespace_name='data';
owner    segment_name  segment_type
 test      new_recover        table
里面有一些数据。
sql> select count(*)from test.new_recover;
  count(*)
 ----------
      4667
第二步开始热备份,为了明白整个过程,我们手工来完成这个不完全恢复。
 使用下面的语句生成热备份的动态sql
  select 'alter tablespace '||tablespace_name||' begin backup;' from dba_tablespaces where l
 ogging='logging';
然后拷贝物理文件到指定的备份目录即可。
 拷贝完成之后,使用下面的语句声明完成了热备份
select 'alter tablespace '||tablespace_name||' end backup;' from dba_tablespaces where l
 ogging='logging';
第三步我们开始删除表空间data,然后停掉数据库开始尝试恢复。
drop tablespace data including contents and datafiles;
 shut immediate
删除之后,不要担心自己没记下时间戳,其实在数据库日志里面会有记录。
sun jul 26 19:29:37 2015
 drop tablespace data including contents and datafiles
 deleted file /u02/ora11g/oradata/test/data01.dbf
 completed: drop tablespace data including contents and datafiles
 sun jul 26 19:29:54 2015
第四步我们开始尝试还原数据文件
 我们把数据文件从热备份的路径还原到数据文件的路径下
startup mount
 !cp xxxx/hot_backup/*.dbf  /u02/ora11g/oradata/test
第五步我们可以尝试开始基于时间点的恢复,基于时间点的这种恢复就是不完全恢复了,因为时间点之后的数据变更就会丢失。
sql> recover database until time '2015-07-26 19:29:37';
 media recovery complete.
恢复的过程很快就会完成。这个时候删除的数据文件还没有体现在控制文件里面,在v$datafile里也看不到。
sql> select name from v$datafile;
name
 --------------------------------------------------------------------------------
 /u02/ora11g/oradata/test/system01.dbf
 /u02/ora11g/oradata/test/sysaux01.dbf
 /u02/ora11g/oradata/test/undotbs01.dbf
 /u02/ora11g/oradata/test/testdata.dbf
第6步我们把数据库使用resetlogs的方式打开
sql> alter database open resetlogs;
database altered.
这个时候去查看v$datafile就会发现多了一个陌生的文件。但是从名字我们看出来提示我们是曾经丢失的一个文件,但是不知道怎么回事就给恢复回来了。
sql> select name from v$datafile;
 name
 --------------------------------------------------------------------------------
 /u02/ora11g/oradata/test/system01.dbf
 /u02/ora11g/oradata/test/sysaux01.dbf
 /u02/ora11g/oradata/test/undotbs01.dbf
/u02/ora11g/product/11.2.0/dbhome_1/dbs/missing00004
 /u02/ora11g/oradata/test/testdata.dbf
这个时候去尝试ls -l查看文件是否存在,发现没有这个文件。
sql> !ls -l /u02/ora11g/product/11.2.0/dbhome_1/dbs/missing00004
 ls: /u02/ora11g/product/11.2.0/dbhome_1/dbs/missing00004: no such file or directory
我们先把这个文件给rename一下。
alter database rename file '/u02/ora11g/product/11.2.0/dbhome_1/dbs/missing00004' to '/ora11g/oradata/test/data01.dbf';
database altered.
第七步我们开始恢复这个数据文件
 恢复的时候很可能提示你选择恢复的方式,我们还是选择auto
sql> recover datafile '/u02/ora11g/oradata/test/data01.dbf';
 ora-00279: change 970750 generated at 07/26/2015 19:26:36 needed for thread 1
 ora-00289: suggestion :
 /u02/ora11g/product/11.2.0/dbhome_1/dbs/arch1_1_886076275.dbf
 ora-00280: change 970750 for thread 1 is in sequence #1
specify log: {=suggested | filename | auto | cancel}
 auto
 log applied.
 media recovery complete.
恢复完成之后,查看v$recover_file看看是否还有其它数据文件需要恢复。
sql> select *from v$recover_file;
no rows selected
恢复之后查看表空间的状态,显示是online,但是实际上还不是。
sql> select tablespace_name,status from dba_tablespaces;
tablespace_name                status
 ------------------------------ ---------
 system                        online
 sysaux                        online
 undotbs                        online
 temp                          online
 data                          online
 testdata                      online
因为这个时候我们查看数据还是有问题的。
其它类似信息

推荐信息