LogMiner Step by Step(二)

三.案例分析
一客户发现一重要TABLE资料被删除,初步断定被删除的时间为2004年12月27日3点-5点,资料量大概为50万笔,请求紧急援助,恢复被删除的数据。。。
1.方案分析
1.1客户数据库状况
A)IBM AIX系统, oracle 8.1.7
B)数据库处于归档模式
C)用RMAN备份,NO CATALOG
D)硬盘上有当天的RMAN备份后的文件
1.2方案选择
A)方案一:不完全恢复法
A1)先COLD FULL BACKUP
A2)居于时间点的不完全恢复
A3)EXP被删掉的TABLE
A4)用刚才做的冷备做完全恢复
A5)IMP被删掉的TABLE
缺点:所需时间长,可能会丢失小部分数据单COLD BACKUP就需要两个小时,需两次SHUTDOWN DATABASE
B)方案二:用LOGMINER恢复
B1)修改初始话参数:utl_file_dir
B2)执行LOGMINER包
B3)RESTORE RMAN所备份的ARCHIVE LOG
B4)分析日志,SPOOL出SQL_UNDO
B5)执行该SQL_UNDO脚本,恢复数据
优点:可在线操作,不影响系统正常运行,风险低
综合两个方案的优缺点及本案例的特点,决定采用第二方案
2.操作过程
2.1 Shutdown Database,修改init文件中的utl_file_dir参数
utl_file_dir=’/oraclebak/sysware’
然后startup database
2.2创建Logminer所需的视图和数据字典,过程略;
2.3 Restore RMAN所备份的Archived Log
根据被删资料的时间点去寻找RMAN的备份档案,还好,档案还保留在硬盘当中
A).利用RMAN进行Restore
RMAN>run{
Allocate channel d1 type disk;
Set archivelog destination to ’/oraclebak/sysware’;
Restore archivelog all;
Release channel d1;
}
执行过程中提示找不到备份集,因时间所限,决定采用另外一种方式恢复
B).用DBMS_BACKUP包进行恢复
该Packge可直接从RMAN备份后的文件Restore出所需的归档日志文件
SQL>DECLARE
Devtype varchar2(256);
Done Boolean;
BEGIN
Devtype:=sys.dbms_backup_restore.deviceAllocate(type=>’’,ident=>’T1’);
Sys.dbms_backup_restore.restoreSetArchivedLog;
Sys.dbms_backup_restore.restoreArchivedLogRange;
Sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>’/ oracle /archive/SMESP/arch_001’,);
Sys.dbms_backup_restore.deviceDeallocate;
End;
/
只要将handle=>’’改成所要提取的档案即可分别将所需的档案提取出来,然后转到系统默认的归档日志存放地检
查看档案是否提取,归档日志目录可通过如下如下命令查出:(以我本机为例)
SQL>archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 g:\ oracle \archive_dest\bright
最早的概要日志序列 11
下一个存档日志序列 13
当前日志序列 13

蓝色部分即为归档日志目录.
2.4.找出所要分析的归档日志文件
SQL>alter session set nls_date_format=’yyyy-mm-dd HH24:MI:SS’;
SQL>select name,fist_time,next_time from v$archived_log
Where first_time>=’2004-12-26 03:00:00’ and first_time<=’2004-12-26 05:00:00’;
结果类似如下:
NAME FIRST_TIME NEXT_TIME

————————————– —————————— ——————————–
G:\BRIGHT\ARC00010.001 2004-12-28 17:00:29 2004-12-28 17:00:30


G:\ oracle \ARC00010.001 2004-12-28 17:00:29 2004-12-28 17:00:30


G:\ oracle \ARC00011.001 2004-12-28 17:00:30 2004-12-28 20:59:16

2.5.分析日志
详细命令见“二.使用logminer”
2.6.显示结果并spool出insert data的脚本
SQL>SELECT SQL_UNDO FROM V$LOGMNR_CONTENTS WHERE Operation=’DELETE’ AND SEG_NAME=’TABLENAME’;

  
« LogMiner Step by Step(一)            Home            Linux中Oracle自动启动脚本 »

No Comments

Be the first to comment on this entry.

Leave a comment

Name(required)
Mail (will not be published)(required)
Website

Fields in bold are required. Email addresses are never published or distributed.

Some HTML code is allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URLs must be fully qualified (eg: http://www.dbifan.com),and all tags must be properly closed.

Line breaks and paragraphs are automatically converted.

Please keep comments relevant. Off-topic, offensive or inappropriate comments may be edited or removed.

    搜索本站

    站点日历

    5月 2005
    « 4   6 »
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  

    订阅本站

    文章分类

    最新日志

    热点文章

    日志存档

    常用标签