现在的位置: 首页 > 综合 > 正文

Oracle 恢复测试-控制文件篇(四)

2013年10月11日 ⁄ 综合 ⁄ 共 4499字 ⁄ 字号 评论关闭
1、建立测试数据

  1. SQL> insert into tt select rownum, 'test...........' from dba_objects;
  2. 已创建52142行。
  3. SQL> commit;
  4. 提交完成。
  5. SQL>  alter system switch logfile;
  6. 系统已更改。
  7. SQL> insert into tt select rownum, 'test...........' from dba_objects;
  8. 已创建52142行。
  9. SQL> /
  10. 已创建52142行。
  11. SQL> /
  12. 已创建52142行。
  13. SQL> commit;
  14. 提交完成。
  15. SQL> alter system switch logfile;
  16. 系统已更改。
  17. SQL> delete from tt;
  18. 已删除208568行。
  19. SQL> commit;
  20. 提交完成。
  21. SQL> alter system switch logfile;
  22. 系统已更改。
  23. SQL> insert into tt select rownum, 'test...........' from dba_objects;
  24. 已创建52142行。
  25. SQL>  commit;
  26. 提交完成。
  27. SQL> select count(*) from tt;
  28.   COUNT(*)
  29. ----------
  30.      52142

2、backup to trace

  1. SQL> alter database backup controlfile to trace;

3、添加数据文件,此时控制文件结构改变

  1. SQL>  alter tablespace  users add datafile 'C:/oracle/product/10.2.0/oradata/orcl/user02.dbf' size 10M;
  2. 表空间已更改。
  3. SQL> 
  4. SQL> select status ,name from v$datafile;
  5. STATUS  NAME
  6. ------- ----------------------------------------------------------------------------
  7. SYSTEM  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF
  8. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF
  9. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF
  10. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF
  11. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF
  12. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/MIS.DBF
  13. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDO_1
  14. ONLINE  D:/WORK/DATA/SCGL.ORA
  15. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/INDEX_TBS.DBF
  16. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USER02.DBF
  17. 已选择10行。
  18. SQL> 

4、shutdown 数据库,删除数据文件模拟数据文件损坏

  1. SQL> shutdown immediate
  2. 数据库已经关闭。
  3. 已经卸载数据库。
  4. ORACLE 例程已经关闭

5、重建控制文件

  1. SQL> startup nomount;
  2. ORACLE 例程已经启动。
  3. Total System Global Area  167772160 bytes
  4. Fixed Size                  1247900 bytes
  5. Variable Size              75498852 bytes
  6. Database Buffers           88080384 bytes
  7. Redo Buffers                2945024 bytes
  8. SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
  9.   2      MAXLOGFILES 16
  10.   3      MAXLOGMEMBERS 3
  11.   4      MAXDATAFILES 100
  12.   5      MAXINSTANCES 8
  13.   6      MAXLOGHISTORY 292
  14.   7  LOGFILE
  15.   8    GROUP 1 'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG'  SIZE 50M,
  16.   9    GROUP 2 'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG'  SIZE 50M,
  17.  10    GROUP 3 'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG'  SIZE 50M
  18.  11  -- STANDBY LOGFILE
  19.  12  DATAFILE
  20.  13    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF',
  21.  14    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF',
  22.  15    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF',
  23.  16    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF',
  24.  17    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF',
  25.  18    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/MIS.DBF',
  26.  19    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDO_1',
  27.  20    'D:/WORK/DATA/SCGL.ORA',
  28.  21    'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/INDEX_TBS.DBF'
  29.  22  CHARACTER SET ZHS16GBK
  30.  23  ;
  31. 控制文件已创建。

6、打开数据库,查看数据文件状态。C:/ORACLE/PRODUCT/10.2.0/DB_1/DATABASE/MISSING00010并不存在,只不过是个标记而已。

  1. SQL> alter database  open;
  2. 数据库已更改。
  3. SQL> select status ,name from v$datafile;
  4. STATUS  NAME
  5. ------- --------------------------------------------------------------------------------
  6. SYSTEM  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF
  7. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF
  8. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF
  9. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF
  10. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF
  11. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/MIS.DBF
  12. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDO_1
  13. ONLINE  D:/WORK/DATA/SCGL.ORA
  14. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/INDEX_TBS.DBF
  15. RECOVER C:/ORACLE/PRODUCT/10.2.0/DB_1/DATABASE/MISSING00010
  16. 已选择10行。

7、如果用备份控制文件,且备份控制文件少了新增加的几个文件,恢复时会提示错误,我们可以用rename来解决

  1. SQL> alter database rename file 'MISSING00010' to 'C:/oracle/product/10.2.0/oradata/orcl/user02.dbf';
  2. 数据库已更改。
  3. SQL>  select status ,name from v$datafile;
  4. STATUS  NAME
  5. ------- --------------------------------------------------------------------------------------------
  6. SYSTEM  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF
  7. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF
  8. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF
  9. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF
  10. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF
  11. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/MIS.DBF
  12. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDO_1
  13. ONLINE  D:/WORK/DATA/SCGL.ORA
  14. ONLINE  C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/INDEX_TBS.DBF
  15. RECOVER C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USER02.DBF
  16. 已选择10行。
  17. SQL> select count(*) from tt;
  18.   COUNT(*)
  19. ----------
  20.      52142
  21. SQL> 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.