ORACLE手工不完全恢复


4.1 不完全恢复的特点:     
      1)让整个database 回到过去某个时间点,不能避免数据丢失。
      2)想跳过坏日志而继续恢复所有其他工作是不可能的,前滚没有这个功能(注意点)。
      3)必须以sysdba身份连接进行不完全恢复,普通用户或sysoper都不行(注意点)。
      4)语句只有recover database until 这种形式,表示整个数据库回到某个时间点或SCN,而until是指恢复在时间点前停止(注意点)。


4.2 不完全恢复(Incomplete recover) 适用环境:
       1)在过去的某个时间点重要的数据被破坏。
       2)在做完全恢复时,丢失了归档日志或当前online redo log(注意点)
       3)当误删除了表空间时(有控制文件备份)
       4)丢失了所有的控制文件,使用备份的控制文件恢复时  (条件满足时可以完全恢复)     
        
4.3 不完全恢复的基本类型:
      1)基于时间点 (until time): 使整个数据库恢复到过去的一个时间点前
      2)基于scn (until change): 使整个数据库恢复到过去的某个SCN前
      3)基于cancel (until cancel): 使整个数据库恢复到归档日志或当前日志的断点前
      4)基于误删除表空间(使用备份的controlfile): 使整个数据库恢复到误删除表空间前
      
4.4、logminer 工具的使用
     
     对redo log 进行挖掘,找出在某个时间点所作的DDL 或DML 误操作(包括:时间点、scn 、sql语句)
                                                                                            
4.5 不完全恢复范例:


范例1:


恢复过去某个时间点误删除的table


4.5.1 基于时间点的不完全恢复


1)环境:scott用户在test表空间下有个t1表


SQL> conn scott/scott
SQL> select * from t1;


        ID
----------
         1
         2


2)误删除了t1表,并purge了。


SQL> drop table t1 purge;
SQL> select * from v$log;
 
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1        131   52428800          1 YES     INACTIVE               1875893 2012-6-13 1
         2          1        132   52428800          1 YES     INACTIVE               1896385 2012-6-13 1
         3          1        133   52428800          1 NO       CURRENT                1916973 2012-7-18 1 


SQL> alter system switch logfile;
SQL> /
SQL> /
 
SQL> select name from v$archived_log;


NAME
--------------------------------------------------------------------------------
...
/u01/disk1/timran/arch_1_782662700_129.log
/u01/disk1/timran/arch_1_782662700_130.log
/u01/disk1/timran/arch_1_782662700_131.log
/u01/disk1/timran/arch_1_782662700_132.log
/u01/disk1/timran/arch_1_782662700_133.log //drop table t1 purge这个动作的日志条目记录在此归档日志里了。
/u01/disk1/timran/arch_1_782662700_134.log
/u01/disk1/timran/arch_1_782662700_135.log
 
116 rows selected


3)通过logmr 找出误操作的ddl命令的timestamp 或 san


SQL> show parameter utl


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines           string
utl_file_dir                         string      /home/oracle/logmnr


SQL> execute dbms_logmnr_d.build('dict.ora','/home/oracle/logmnr',dbms_logmnr_d.store_in_flat_file); 
 
SQL> execute dbms_logmnr.add_logfile(logfilename=>'/u01/disk1/timran/arch_1_782662700_133.log',options=>dbms_logmnr.new);
 
SQL> execute dbms_logmnr.add_logfile(logfilename=>'/u01/disk1/timran/arch_1_782662700_134.log',options=>dbms_logmnr.addfile); 
  
SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dict.ora',options=>dbms_logmnr.ddl_dict_tracking);
 
SQL> select username,scn,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss'),sql_redo from v$logmnr_contents WHERE lower(sql_redo) like 'drop table%';
 
USERNAME                              SCN TO_CHAR(TIMESTAMP,'YYYY-MM-DDH SQL_REDO
------------------------------ ---------- ------------------------------ -----------------------------------------------
SCOTT                             1918000 2012-08-01 17:28:29           drop table t1 purge;


SQL> execute dbms_logmnr.end_logmnr;


4) 关闭数据库,删除所有dbf,准备做不完全恢复

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大家好,今天讲手工恢复dbr。就拿u盘来讲吧。手工恢复其实就是改bpb表的几个字节。大家看我的演示吧。声音录制不上,只能这样打字了。我就不拿实际恢复举例了,我就讲解一下,这几个自己怎么算。 大家看我的演示,打开winhex。这个就是u盘,大小64m的。扇区0,就是dbr。我给大家做了个ppt,大家看一下。大家看我画方框的地方,这就是要计算的这几个字节。一共5个。隐藏扇区不用算了,这个是0,因为没有分区表。扇区大小,要是硬盘的话,就根据分区表填写,这里是128640,看左下角。 在就是每簇扇区数,根项目,和保留扇区。每簇扇区数有个公式,大家看一下。上面的是fat16的,下面的是fat32的。大家根据这个公式计算就可以了,保留扇区,fat16的一般是2个, 扇区2就是fat表了,所以保留2个扇区,就是这样计算。硬盘就搜fat表,找到fat表以后, 就知道保留了几个扇区了。还有就是根项目,这个一般是512,要是pq调整过的话, 就找FDT起始扇区,有fat2起始扇区和长度就很容易得到fdt的起始扇区。 查找到没有数据(也就是全0)后,继续找,找到个非0扇区,也就是数据区 开始扇区,由此就得到fdt的扇区数,在根据每文件目录登记项占用32个字节 就可以算出引导记录数。在转换为16进制,填写在bpb表处就可以了。 位置看这个图。我话方框的地方。 fat32的恢复和这个差不多。大家有不明白的在问。QQ597911642.今天就讲这些吧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值