免费网络课程《Oracle备份与恢复》,旨在深入的探讨Oracle备份与恢复的真谛,剖析备份与恢复的原理,通过各种真实的案例,全面的诠释Oracle数据库完全恢复、不完全恢复、无备份恢复,部分恢复等技巧。
本次网络演示案例:
1、表空间备份方式备份数据库
2、普通数据文件损坏完全恢复方式原理剖析
完全恢复:不丢数据
完全恢复方式之一:数据库在mount状态下恢复
搭建测试环境
1.建立表,切换日志,至少每个日志组切换一次
SQL> select count(*) from test;
COUNT(*)
----------
48
2.再次插入数据,但是不提交
3.主机断电导致数据崩溃,导致了数据文件损坏
shutdown abort
二、恢复数据库
1.主机加电,数据文件损害
2.从最近的备份恢复相关数据文件到目的路径
3.尝试打开数据库
alter database open;
为什么该文件需要介质恢复?ORACLE根据控制记录了每个数据库文件该有检查点SCN号和数据文件头的检查点文件头进行比较
v$datafile v$datafile_header
在启动时候可以根据不同SCN确定需要那个归档文件,v$archived_LOG;中的ScN范围( first next)
通过观察alert日志文件,我们发现oracle在recover的时候是使用archivelog+online redo的机制来recover的
当recover介质恢复完成,可以再次检查控制文件和数据文件头的SCN进行检查是否一致
5.尝试打开数据并尝试验证数据
总结《在mount状态适合所有的数据文件恢复
完全恢复方式二。数据库在open状态恢复
另外一种恢复方式,
1.为了尽快打开数据库和可靠行、可以把损坏的数据文件首先offline
alter database datafile 888 offline
2.然后在转储备份
3.然后直接recover tablespace 选择auto方式
4.然后把user表空间online;
5,验证数据是否正确
总结:该恢复方式合适于普通的数据文件损坏,不合适system undo sysaux等TS;优点:可以提高数据库的可靠性,
=========================================================================================================
恢复控制文件丢失的时候需要利用recover using backup controlfile
auto
然后oracle无法识别当前最新的日志组系列号,需要重建控制文件
alter database backup controlfile to trace
注意选择noretlogs的选型,要不就不能完全恢复了
重建结束后查看v$log,查看当前日志组
总结:关键是重建控制文件,重新获得准确当前的日志组
==========================================
完全恢复方式之4
未备份的数据文件丢失
这种方式这种恢复方式只适合于自从新建的数据文件开始,所有的归档日志和redolog都必须存在,还没有备份的
alter database create datafile
recover database
============================================================================================================
不完全恢复
基于时间点的不完全恢复
适合于某张关键的表被删除,需要恢复回来
1.环境准备
1.
SQL> create table test1 as select * FROM EMP;
表已创建。
会话已更改。
SQL> select sysdate from dual;
SYSDATE
-------------------
2013-12-28 21:57:15
2.DROP TABLE TEST1 PURGE
3.关闭数据库
4.从最近的备份的转储所有的数据文件
RMAN> startup mount;
Oracle 实例已启动
数据库已装载
系统全局区域总计 1071333376 字节
Fixed Size 1375792 字节
Variable Size 729809360 字节
Database Buffers 335544320 字节
Redo Buffers 4603904 字节
RMAN>restore database
5.对数据库做基于时间的恢复
recover database until time to_date('2013-12-28 21:57:01','yyyy-mm-dd:hh24:mi:ss');
6.验证数据
==========================================
基于cancel的恢复方式
适合与recovery过程中需要的归档或者online redolog损坏,oracle recovery恢复到不能恢复为止
经常能够发生在断电,导致正在使用的在线日志文件损坏
1、环境准备
1.在某张表插入数据,提交,同时切换日志,归档
2.再次插入数据,提交,归档
3.最后记录表行数为153行,同时弄清楚最后的insert操作记录到那个当前序号日志组
2.主机断电,导致当前的redo损坏
3.尝试打开数据库
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'C:\APP\YANWEI\ORADATA\ORCL\REDO01.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
oracle需要实例恢复,需要的日志文件损坏,无法进行
4.尝试做不完全恢复
'C:\APP\YANWEI\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_12_28\O1_MF_1_7_%U_.ARC'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00308: cannot open archived log
'C:\APP\YANWEI\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_12_28\O1_MF_1_7_%U_.ARC'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-10879: error signaled in parallel recovery slave
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'C:\APP\YANWEI\ORADATA\ORCL\SYSTEM01.DBF'
最后的提示表明。当前的数据文件无法同步。
5.尝试打开数据库
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'C:\APP\YANWEI\ORADATA\ORCL\SYSTEM01.DBF'
SQL>
还是提示要进一步恢复
6.从最近转储所有的数据文件
6.1 shutdown abort
6.2 startup mount
6.3 restose database
7.对数据库进行cancel的不完全恢复
这时候没有提示某个文件需要进一步恢复
8、alter database open resetlogs;
9、检查数据的完整性
最后的一次redo上的事物记录丢失了
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/500314/viewspace-1065329/,如需转载,请注明出处,否则将追究法律责任。