51dev.com IT技术开发者社区

51dev.com 技术开发者社区

如何使用Logminer来分析具体的DML操作日志

Oracle互联网报道阅读(18)2019-08-15 收藏0次评论

Oracle数据库维护中,常常需要分析原来数据库都做了哪些删除、更新、增加数据的操作,所以一般需要用到Logminer这工具来分析归档日志。
环境:AIX5.3+Oracle10.2.0.1   使用IBM的Tivoli Storage Manager把数据库数据、归档日志备份到带库中

1、确定具体时间的DML操作,把相应的归档日志从带库恢复到数据库中
2、用Logminer来分析相应的归档日志

一.在sqlplus用sys超级用户登陆数据库中,然后把当前的时间改成'yyyy-mm-dd hh24:mi:ss'格式,这样可以看清楚归档日志的起始时间:
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

二、v$log_history视图的sequence#为归档日志序列号,first_time为该归档日志的开始时间。
SQL>select sequence#,first_time from v$log_history;
记下某天的归档日志序列,比如为3988--4000

三、用rman target/  进入数据库,把相应的归档日志从带库取到数据库中来,/oracle/oms/oradata/temp目录为放归档日志的目录。

RUN
{
  SET ARCHIVELOG DESTINATION TO '/oracle/oms/oradata/temp';
  RESTORE ARCHIVELOG SEQUENCE 3988;        
}

 

注:导出多个归档日志:

RUN
{
  SET ARCHIVELOG DESTINATION TO '/oracle/oms/oradata/temp';
  RESTORE ARCHIVELOG SEQUENCE  between 2895 and 2897;       
}

注:3988为归档日志的序列号,有多个日志,需要运行多个上面的语句。


四、建立日志分析列表,把第一个归档日志放到分析列表
SQL>execute dbms_logmnr.add_logfile(logfilename=>'/oracle/oms/oradata/temp/1_3988_644336885.dbf',options=>dbms_logmnr.new);

五、把第二个归档日志放到分析列表(第二个归档日志以后都是下面的格式)
SQL>execute dbms_logmnr.add_logfile(logfilename=>'/oracle/oms/oradata/temp/1_3989_644336885.dbf',options=>dbms_logmnr.addfile);


六、启动LogMiner
SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

七、把分析出来的数据放在logminer_test表中,这样方便查询。因为表v$logmnr_contents的数据量很大,选择一个空闲的表空间
SQL>
create table logminer_test tablespace MLOG_NORM_SPACE
as
select   *   from  v$logmnr_contents;

八、把分析日志表logminer_test的查询权限赋予给lhomsread只读的数据库用户,这样使用第三方工具很方便查询(plsql等):
SQL>grant  select  on  logminer_test to  lhomsread;

九、结束logminer
SQL> execute dbms_logmnr.end_logmnr;

以上就是如何使用Logminer来分析具体的DML操作日志的全部内容,请多关注【51DEV】IT技术开发者社区。

相关内容