标签:
LogMiner工具通过分析Oracle重作日志文件(归档日志文件)中的具体内容来重现ORACLE执行过的SQL,特别是,该工具可以分析出所有对于数据库操作的DML(insert、update、delete等)语句,另外还可分析得到一些必要的回滚SQL语句。该工具特别适用于调试、审计或者回退某个特定的事务。
LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图组成,它作为Oracle数据库的一部分来发布,是一个完全免费的工具。但该工具和其他Oracle内建工具相比使用起来显得有些复杂,主要原因是该工具没有提供任何的图形用户界面(GUI)。本文将介绍该工具在实际工作中的使用。
一、LogMiner的用途
日志文件中存放着所有进行数据库恢复的数据,记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句。
LogMiner工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其他数据库的重作日志文件。
二、使用LogMiner工具
由于误操作,维护人员对数据库SWT表进行了错误的UPDATE操作,受影响的记录约有近万条。由于备份太旧,无法从备份恢复。下面是使用LogMiner恢复数据的实例:
1.保护现场,选择恢复办法
13:30左右从维护人员得知,误操作是在11:00~12:00之间完成的,立即暂停archivelog的备份。检查归档目录中的归档文件时间包涵了以上时间段。
初步确定用LOGMINER的方法恢复,检查数据库的UTL_FILE_DIR参数,发现参数未初始配置,并且无法动态修改,只能采用ONLINECATALOG的方法分析。
2.选择归档日志文件
检查redolog的时间,发现已经超过了误操作发生时间,可以使用归档日志进行分析,检查在/arch01的归档日志时间,选择1_63266.dbf,1_63267.dbf,1_63268.dbf作为分析对象:
$sqlplus‘/assysdba’
SQL>EXECUTEdbms_logmnr.add_logfile(-
LogFileName=>‘‘/arch01/1_63266.dbf‘‘,Options=>dbms_logmnr.new);
PL/SQLproceduresuccessfullycompleted.
SQL>EXECUTEdbms_logmnr.add_logfile(-
LogFileName=>‘‘/arch01/1_63267.dbf‘‘,Options=>dbms_logmnr.addfile);
PL/SQLproceduresuccessfullycompleted.
SQL>EXECUTEdbms_logmnr.add_logfile(-
LogFileName=>‘‘/arch01/1_63268.dbf‘‘,Options=>dbms_logmnr.addfile);
PL/SQLproceduresuccessfullycompleted.
3.执行归档文件分析
SQL>executeDBMS_LOGMNR.START_LOGMNR(-
options=>dbms_logmnr.dict_from_online_catalog-
STARTTIME=>to_date(‘‘06-06-200511:00:00‘‘,-
‘‘DD-MM-YYYYHH24:MI:SS‘‘),-
ENDTIME=>to_date(‘‘06-06-200512:00:00‘‘,-
‘‘DD-MM-YYYYHH24:MI:SS‘‘));
PL/SQLproceduresuccessfullycompleted.
4.生成undo脚本
SQL>setlinesize800
SQL>setpagesize2000
SQL>setheadoff
SQL>spool/arch01/undosql.sql.0606
SQL>selectsql_undofromv$logmnr_contentswhereseg_name
=‘‘SWT‘‘ANDUSERNAME=‘‘MODI‘‘;
SQL>executeDBMS_LOGMNR.end_logmnr();
SQL>spooloff
5.分析undo脚本,执行undo脚本。
6.验证undo脚本执行后的业务运行情况。
三、总结
通过以上恢复,避免了以前只能通过恢复整个表空间来恢复其中的一个表,大大缩短了业务受影响时间和影响范围。
标签:
原文地址:http://www.cnblogs.com/andy6/p/5721155.html