Oracle 恢复测试-控制文件篇(三)
来源:互联网 发布:matlab寻找矩阵有几行 编辑:程序博客网 时间:2024/05/01 05:44
使用旧的控制文件备份来恢复
1、备份控制文件
- SQL> alter database backup controlfile to 'D:/data_backup/controlfile.bak';
- 数据库已更改。
- SQL> create table tt ( id number,name varchar2(100));
- 表已创建。
- SQL> insert into tt select rownum, 'test...........' from dba_objects;
- 已创建52103行。
- SQL> commit;
- 提交完成。
- SQL> alter system switch logfile;
- 系统已更改。
- SQL> insert into tt select rownum, 'test...........' from dba_objects;
- 已创建52103行。
- SQL> /
- 已创建52103行。
- SQL> /
- 已创建52103行。
- SQL> commit;
- 提交完成。
- SQL> alter system switch logfile;
- 系统已更改。
- SQL> delete from tt;
- 已删除208412行。
- SQL> commit;
- 提交完成。
- SQL> alter system switch logfile;
- 系统已更改。
- SQL> insert into tt select rownum, 'test...........' from dba_objects;
- 已创建52103行。
- SQL> commit;
- 提交完成。
- SQL>
3、shutdown数据库,然后将备份的控制文件替换现有的控制文件,模拟控制文件损坏并恢复
- SQL> shutdown immediate
- 数据库已经关闭。
- 已经卸载数据库。
- ORACLE 例程已经关闭。
- SQL> startup
- ORACLE 例程已经启动。
- Total System Global Area 167772160 bytes
- Fixed Size 1247900 bytes
- Variable Size 71304548 bytes
- Database Buffers 92274688 bytes
- Redo Buffers 2945024 bytes
- 数据库装载完毕。
- ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
4、我们备份控制文件并不会记录联机重做日志文件和数据文件的SCN,因此在恢复的时候并不会使用
联机重做日志文件,并因此而把数据文件假设成一个无穷大的SCN,因此,需要resetlogs
- SQL> alter database open resetlogs;
- alter database open resetlogs
- *
- 第 1 行出现错误:
- ORA-01113: 文件 1 需要介质恢复
- ORA-01110: 数据文件 1: 'C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF'
5、在此,我们发现,检查到当前数据文件头的开始SCN和控制文件的结束SCN不一致需要进行恢复
- SQL> recover database using backup controlfile;
- ORA-00279: 更改 2810649 (在 11/08/2008 10:10:33 生成) 对于线程 1 是必需的
- ORA-00289: 建议: C:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ORCL/ARCHIVELOG/2008_11_08/O1_MF_1_33_
- ORA-00280: 更改 2810649 (用于线程 1) 在序列 #33 中
- 指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
- ORA-00308: 无法打开归档日志 'C:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ORCL/ARCHIVELOG/2008_11_08
- ORA-27041: 无法打开文件
- OSD-04002: 无法打开文件
- O/S-Error: (OS 2) The system cannot find the file specified.
6、恢复失败。此处有两种处理方式,一是重建控制文件(Oracle 恢复测试-控制文件篇(一)) ,二是强制应用
重做日志文件
- SQL> select * from v$logfile;
- GROUP# STATUS TYPE MEMBER
- ---------- ------- ------- -------------------------------------------------------------------------
- 1 STALE ONLINE C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG
- 3 STALE ONLINE C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG
- 2 ONLINE C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG
- SQL> recover database using backup controlfile;
- ORA-00279: 更改 2810649 (在 11/08/2008 10:10:33 生成) 对于线程 1 是必需的
- ORA-00289: 建议: C:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ORCL/ARCHIVELOG/2008_11_08/O1_MF_1_33_
- ORA-00280: 更改 2810649 (用于线程 1) 在序列 #33 中
- 指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
- C:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG
- 已应用的日志。
- 完成介质恢复。
- SQL> alter database open;
- alter database open
- *
- 第 1 行出现错误:
- ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
- SQL> alter database open resetlogs;
- 数据库已更改。
- SQL> select count(*) from tt;
- COUNT(*)
- ----------
- 52103
问题?使用这种方法能保证数据不会出现讹误吗?
- Oracle 恢复测试-控制文件篇(三)
- Oracle 恢复测试-控制文件篇(二)
- Oracle 恢复测试-控制文件篇(四)
- Oracle 恢复测试-控制文件篇(一)
- 恢复oracle控制文件
- oracle - 控制文件 恢复
- 控制文件的恢复(三)
- Oracle控制文件恢复案例
- Oracle 控制文件损坏恢复
- ORACLE控制文件备份恢复 noresetlogs 恢复
- Oracle DB备份恢复篇之丢失控制文件
- Oracle DB备份恢复篇之丢失控制文件
- Oracle 利用dbms_backup_restore恢复测试(数据文件和控制文件全部丢失了)
- oracle 控制文件损坏恢复笔记
- ORACLE单个控制文件丢失的恢复
- Oracle控制文件备份恢复 resetlogs方式
- oracle冷备份恢复重建控制文件
- Oracle使用RMAN恢复控制文件实例
- PaginationSupport(泛型类)
- HTML颜色一览
- 脚本
- c#的结构类型也可以有构造函数
- Ognl的理解
- Oracle 恢复测试-控制文件篇(三)
- 苏格拉底 (转)
- 强大的Python 迭代器和简单生成器
- 街舞动作名称
- Eclipse3.4 代码自动提示不见了的解决方法
- 完全免费的手机短信天气预报与免费发送祝福短信(谷歌短信服务)
- 相恋,却不能相依
- C# 中事务的操作 (附实例)
- 工厂模式之PHP实现