基于日志挖掘的误操作不完全恢复思路(一)

2014-11-24 00:40:43 · 作者: · 浏览: 55
基于日志挖掘的误操作不完全恢复思路
生成备份所有数据文件的脚本:
select 'alter tablespace '||tablespace_name||' begin backup;'||chr(10)||
'ho cp -v '||file_name||' /home/oracle/hotbk/'||chr(10)||
'alter tablespace '||tablespace_name||' end backup;'
from dba_data_files;
备份controlfile:
alter database backup controlfile to '/home/oracle/hotbk/ctl_after_reset.bk';
alter database backup controlfile to trace as '/home/oracle/hotbk/cre_ctl.sql';
备份成功后切换一次归档日志:
alter system switch logfile;

online redolog 很重要!!!

SQL> select  CHECKPOINT_CHANGE#  from v$database;
CHECKPOINT_CHANGE#
------------------
           1079325

alter tablespace USERS begin backup;
ho cp -v /u01/app/oracle/oradata/mdnss/users01.dbf  /home/oracle/hotbk/
alter tablespace USERS end backup;
alter tablespace UNDOTBS1 begin backup;
ho cp -v /u01/app/oracle/oradata/mdnss/undotbs01.dbf  /home/oracle/hotbk/
alter tablespace UNDOTBS1 end backup;
alter tablespace SYSAUX begin backup;
ho cp -v /u01/app/oracle/oradata/mdnss/sysaux01.dbf  /home/oracle/hotbk/
alter tablespace SYSAUX end backup;
alter tablespace SYSTEM begin backup;
ho cp -v /u01/app/oracle/oradata/mdnss/system01.dbf  /home/oracle/hotbk/
alter tablespace SYSTEM end backup;
alter tablespace JF_DATA begin backup;
ho cp -v /u01/app/oracle/oradata/mdnss/jf_data01.dbf  /home/oracle/hotbk/
alter tablespace JF_DATA end backup;
alter tablespace JF_DATA begin backup;
ho cp -v /u01/app/oracle/oradata/mdnss/jf_data02.dbf  /home/oracle/hotbk/
alter tablespace JF_DATA end backup;
alter tablespace T2 begin backup;
ho cp -v /u01/app/oracle/oradata/mdnss/t2a.dbf  /home/oracle/hotbk/
alter tablespace T2 end backup;

SQL> select  CHECKPOINT_CHANGE#  from v$database;
CHECKPOINT_CHANGE#
------------------
           1079325
SQL>
SELECT COUNT(*) FROM DAODAO; COUNT(*) ---------- 500002 SQL> select CHECKPOINT_CHANGE# from v$database; CHECKPOINT_CHANGE# ------------------ 1079325 SQL> SELECT COUNT(*) FROM DAODAO; COUNT(*) ---------- 500002 SQL> DELETE FROM DAODAO; 500002 rows deleted. SQL> select CHECKPOINT_CHANGE# from v$database; CHECKPOINT_CHANGE# ------------------ 1079325 SQL> conn / as sysdba Connected. SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /home/oracle/archivelog Oldest online log sequence 7 Next log sequence to archive 10 Current log sequence 10 SQL> select CHECKPOINT_CHANGE# from v$database; CHECKPOINT_CHANGE# ------------------ 1089560 SQL> drop table daodao purge; Table dropped. SQL> purge recyclebin; Recyclebin purged. 挖掘dml语句需要将数据库置为追加日志数据模式: 默认只是记录ddl语句 alter database add SUPPLEMENTAL LOG data; SQL> select group# ,status from v$log where status='CURRENT'; GROUP# STATUS ---------- ---------------- 2 CURRENT SQL> SELECT MEMBER FROM V$LOGFILE WHERE GROUP#=2; MEMBER -------------------------------------------------------------------------------- /u01/app/oracle/oradata/mdnss/redo02.log 挖掘dml语句需要将数据库置为追加日志数据模式: 默认只是记录ddl语句 alter database add SUPPLEMENTAL LOG data; SQL> exec dbms_logmnr.add_logfile('/u01/app/oracle/oradata/mdnss/redo02.log',dbms_logmnr.new); PL/SQL procedure successfully completed. SQL> exec dbms_logmnr.add_logfile('/u01/app/oracle/o