ORACLE手工备份

2.1 手工备份和恢复的命令


    1)备份和还原都使用OS命令,如linux中的cp
    2)恢复用sqlplus命令:recover


2.2 备份前要对数据库进行检查: 


 1) 检查需要备份的数据文件 


SQL> select name from v$datafile;
SQL> select file_id,file_name,tablespace_name from dba_data_files;


 2)检查要备份的控制文件
 
SQL> select name from v$controlfile;


 3)在线redo日志不需要做备份


2.3 手工非一致性备份(热备份)的执行方式及热备份的监控(v$backup)


注意:对只读的表空间不能做热备份,临时表空间不需要备份,特别强调:NOARCHIVE模式下不支持手工热备( 注意点)。


1)在备份前要进入backup mode(backup模式),即:执行begin backup (在数据文件上生成检查点,写入scn ,将来恢复的时候以此scn为起点)
          
SQL> alter database begin backup;   //对整个库做热备份   
SQL> alter database end backup;
                        
SQL> alter tablespace users begin backup; //对表空间做备份
SQL> alter tablespace users end backup;


 2)备份期间利用v$backup 监控       
例;
SQL> alter tablespace test begin backup; 


SQL> select file#,checkpoint_change# from v$datafile_header;


     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            2414314
         2            2414314
         3            2414314
         4            2414314
         5            2414314
         6            2430480         //在备份期间 ,scn被冻结,它是恢复阶段运用日志的起点。
         7            2414314


SQL> select * from v$backup;


     FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- -------------------
         1 NOT ACTIVE                  0
         2 NOT ACTIVE                  0
         3 NOT ACTIVE                  0
         4 NOT ACTIVE                  0
         5 NOT ACTIVE                  0
         6 ACTIVE                  2430480 2012-07-30 11:07:19     
         7 NOT ACTIVE                  0


//STATUS 是ACTIVE,表示可以备份相应的数据文件。


$cp test01.dbf test01.bak


备份完毕,尽快执行end backup


SQL> alter tablespace test end backup;


SQL> select * from v$backup;


     FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- -------------------
         1 NOT ACTIVE                  0
         2 NOT ACTIVE                  0
         3 NOT ACTIVE                  0
         4 NOT ACTIVE                  0
         5 NOT ACTIVE                  0
         6 NOT ACTIVE                  2430480 2012-07-30 11:07:19
         7 NOT ACTIVE                  0


如果在end backup之前发生数据库abort,那么可以在下次启动到mount时end backup,从而完成实例恢复。


关于 split block


我们知道一个Oracle block一般包含多个OS block,,当手工热备时,OS的cp单位不是Oracle block而是OS block,而Oracle的DBWR又可能不时的从内存中刷新Oracle block(脏块)到磁盘上,如此,OS级的拷贝便可能造成:一个Oracle Block是由不同的版本组成,比如未被DBWR刷新Header block 加上另一部分被刷新的foot block,这样cp出来的Oracle blcok就是split block。


数据库的一致性是不允许oracle block是split的, Oracle采取的办法是:在backup mode后,如果发现首次DBWR要写脏块,则将该块被刷新之前的镜像数据记录到redo buffer,这样,虽然cp后的文件里仍然含有split block,而当需要恢复时,日志会前滚该块的前镜像,以保证所有被恢复的oracle block是一个完整的版本。


这就是我们常常发现在热备时日志文件会急剧增大的原因。


*注意点:手工热备不能备份临时表空间,甚至不能将它们置于备份模式。


2.4 dbv检查数据文件是否有坏块


在手工备份前,应该检查datafile 是否有坏块,备份完后对备份也要做检查。


对某个datafile做坏块检查


[oracle@timran admin]$ dbv file=/u01/oradata/timran11g/users01.dbf feedback=50


DBVERIFY - 开始验证: FILE = /u01/oradata/timran11g/users01.dbf
.......
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值