用不完全恢复找回被误删除表空间(三)

这个案例跟前两个案例对比:
用不完全恢复找回被误删除表空间(一)  http://blog.itpub.net/12238525/viewspace-1211078/
用不完全恢复找回被误删除表空间(二)  http://blog.itpub.net/12238525/viewspace-1211151/

创建表空间NEWTS之前,有数据库的备份(包含所有的数据文件和控制文件)。 然后,创建了NEWTS表空间。之后, NEWTS表空间被误删除。
现在想用不完全恢复恢复找回NEWTS表空间。(注:NEWTS表空间 没有备份 这是跟  用不完全恢复找回被误删除表空间(二) 不同地方)


点击(此处)折叠或打开

  1. sys@BJDB>select tablespace_name from dba_tablespaces;    -- 备份前,没有NEWTS表空间

  2. TABLESPACE_NAME
  3. ------------------------------
  4. SYSTEM
  5. SYSAUX
  6. TEMPTS1
  7. TS_ASSM
  8. SMALL_UNDO

  9. sys@BJDB>@/home/oracle/scripts/hot_backup.sql            -- 备份脚本备份所以的数据文件 和 控制文件(注意 这时没有NETS表空间)

创建NEWTS 表空间

点击(此处)折叠或打开

  1. sys@BJDB>create tablespace newts datafile \'/oradata/BJDB/newts01.dbf\' size 50M;          -- 创建NEWTS表空间

  2. Tablespace created.

  3. sys@BJDB>create table scott.tab_newts                                                      -- NEWTS表空间下 创建一个测试表
  4.   2 tablespace newts
  5.   3 as select * from scott.dept;
该表空间被误操作 drop tablespace

点击(此处)折叠或打开

  1. sys@BJDB>select current_scn from v$database;

  2. CURRENT_SCN
  3. -----------
  4.     8489906

  5. sys@BJDB>drop tablespace newts including contents and datafiles;

  6. Tablespace dropped.

处理:
1, 先把实例启动到 nomount状态。
2,转储备份的控制文件,然后 加载数据库

点击(此处)折叠或打开

  1. [oracle@Redhat55 hot]$ cp /u02/backup/BJDB/hot/control.backup /oradata/BJDB/control01.ctl    -- 转储备份的控制文件
  2. [oracle@Redhat55 hot]$ cp /u02/backup/BJDB/hot/control.backup /oradata/BJDB/control02.ctl

  3. sys@BJDB>alter database mount;

  4. Database altered.

  5. sys@BJDB>select name from v$tablespace;                     -- 未识别 NEWTS表空间,这是因为备份Controlfile时,还没有NEWTS表空间

  6. NAME
  7. ----------------------------------------------------------
  8. SYSTEM
  9. SYSAUX
  10. TS_ASSM
  11. SMALL_UNDO
  12. TEMPTS1
3, 转储所有的数据文件,开始做不完全恢复

点击(此处)折叠或打开

  1. [oracle@Redhat55 hot]$ cp /u02/backup/BJDB/hot/*.dbf /oradata/BJDB/   -- 没有 NEWTS表空间的备份

  2. sys@BJDB>recover database until change 8489906 using backup controlfile;
  3. ORA-00279: change 8488811 generated at 07/06/2014 23:22:37 needed for thread 1
  4. ORA-00289: suggestion : /u02/backup/BJDB/disk1/1_2_852246497.dbf
  5. ORA-00280: change 8488811 for thread 1 is in sequence #2


  6. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
  7. auto
  8. ORA-00283: recovery session canceled due to errors
  9. ORA-01244: unnamed datafile(s) added to control file by media recovery
  10. ORA-01110: data file 3: \'/oradata/BJDB/newts01.dbf\'                   -- 恢复的过程中报错 找不到 数据文件 /oradata/BJDB/newts01.dbf


  11. ORA-01112: media recovery not started


  12. sys@BJDB>select name from v$tablespace;

  13. NAME
  14. ----------------------------------------------------------
  15. SYSTEM
  16. SYSAUX
  17. NEWTS
  18. TS_ASSM
  19. SMALL_UNDO
  20. TEMPTS1

  21. 6 rows selected.

  22. sys@BJDB>select name from v$datafile;

  23. NAME
  24. ----------------------------------------------------------
  25. /oradata/BJDB/system01.dbf
  26. /oradata/BJDB/sysaux01.dbf
  27. /u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00003     -- 正确的数据文件应该是 /oradata/BJDB/newts01.dbf
  28. /oradata/BJDB/ts_assm01.dbf
  29. /oradata/BJDB/small_undo01.dbf
4, 由于 /oradata/BJDB/newts01.dbf 没有做备份,我们需要create一下该数据文件

点击(此处)折叠或打开

  1. sys@BJDB>alter database create datafile \'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00003\'  
  2.         as \'/oradata/BJDB/newts01.dbf\';                              -- 重新添加数据文件 /oradata/BJDB/newts01.dbf\

  3. Database altered.

  4. sys@BJDB>select name from v$datafile;

  5. NAME
  6. ----------------------------------------------------------
  7. /oradata/BJDB/system01.dbf
  8. /oradata/BJDB/sysaux01.dbf
  9. /oradata/BJDB/newts01.dbf                                     -- 文件名被该回来了
  10. /oradata/BJDB/ts_assm01.dbf
  11. /oradata/BJDB/small_undo01.dbf
6, 再重新做不完全恢复

点击(此处)折叠或打开

  1. sys@BJDB>recover database until change 8489906 using backup controlfile;
  2. ORA-00279: change 8488811 generated at 07/06/2014 23:22:37 needed for thread 1
  3. ORA-00289: suggestion : /u02/backup/BJDB/disk1/1_2_852246497.dbf
  4. ORA-00280: change 8488811 for thread 1 is in sequence #2


  5. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
  6. auto
  7. ORA-00279: change 8489905 generated at 07/06/2014 23:28:54 needed for thread 1
  8. ORA-00289: suggestion : /u02/backup/BJDB/disk1/1_3_852246497.dbf
  9. ORA-00280: change 8489905 for thread 1 is in sequence #3
  10. ORA-00278: log file \'/u02/backup/BJDB/disk1/1_2_852246497.dbf\' no longer needed for this recovery


  11. Log applied.
  12. Media recovery complete.
7, 用resetlogs 方式打开数据库

点击(此处)折叠或打开

  1. sys@BJDB>alter database open resetlogs;

  2. Database altered.

8, 验证恢复效果

点击(此处)折叠或打开

  1. sys@BJDB>select tablespace_name from dba_tablespaces;

  2. TABLESPACE_NAME
  3. ------------------------------
  4. SYSTEM
  5. SYSAUX
  6. TEMPTS1
  7. TS_ASSM
  8. SMALL_UNDO
  9. NEWTS

  10. 6 rows selected.

  11. sys@BJDB>select file_name from dba_data_files;

  12. FILE_NAME
  13. -------------------------------------------------
  14. /oradata/BJDB/small_undo01.dbf
  15. /oradata/BJDB/ts_assm01.dbf
  16. /oradata/BJDB/newts01.dbf
  17. /oradata/BJDB/sysaux01.dbf
  18. /oradata/BJDB/system01.dbf

  19. sys@BJDB>select * from scott.tab_newts;              -- NEWTS下的表被找回

  20.     DEPTNO DNAME LOC
  21. ---------- -------------- -------------
  22.         10 ACCOUNTING NEW YORK
  23.         20 RESEARCH DALLAS
  24.         30 SALES CHICAGO
  25.         40 OPERATIONS BOSTON
































请使用浏览器的分享功能分享到微信等