CUUG笔记--oracle备份和恢复

免费网络课程《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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/500314/viewspace-1065329/

你可能感兴趣的:(CUUG笔记--oracle备份和恢复)