ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 日志分析logmnr (Logminer) 使用方法

日志分析logmnr (Logminer) 使用方法

原创 Linux操作系统 作者:tolywang 时间:2011-06-27 15:44:02 0 删除 编辑

注意: 

使用logminer查询表v$logmnr_contents必须在同一个会话中进行,因为分析的那些
信息存储在这个session 的PGA中,在别的session 里面是查不到的。


视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个
会话的生命期中存在。这是因为所有的LogMiner存储都在PGA内存中,所有其他的进程是看
不到它的,同时随着进程的结束,分析结果也随之消失。 最后,使用过程DBMS_LOGMNR.END_LOGMNR
终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。

 

----------------------------------------------------------------------------------------  


0, 安装LogMiner工具,以下两个脚本以SYSDBA身份运行

SQL>@?/rdbms/admin/dbmslm.sql
dbmslm.sql是用来创建DBMS_LOGMNR的package,这个包是用来分析日志的

SQL>@?/rdbms/admin/dbmslmd.sql
dbmslmd.sql是用来创建DBMS_LOGMNR_D的package的,这个包是用来创建数据字典文件的

 


1、备份原表
create table dfms.aab_bak as SELECT * from  dfms.aab ;


2. 建同樣架構新表,準備將恢復的數據導入
create table dfms.aac ;


3. 设定UTL_FILE_DIR参数来指定数据字典文件的位置目录
alter system set UTL_FILE_DIR='/u01/logmnr' scope=spfile;
关闭数据库,并开启使之生效。

SQL> show parameter utl_file
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir                         string      /u01/logmnr

 

4. 以sysdba权限登入,生成數據字典
exec dbms_logmnr_d.build('dictionary.ora','/u01/logmnr');

我们可以看到在/u01/logmnr目录下生成了一个文件。

lhtestdb01<*mxdell*/u01/logmnr>$ls -al
total 26060
drwxr-xr-x  2 oracle dba     4096 Jun 23 15:10 .
drwxrwxr-x  6 oracle dba     4096 Jun 23 15:03 ..
-rw-r--r--  1 oracle dba 26632605 Jun 27 14:42 dictionary.ora

 

5. 添加归档日志或连接日志文件

exec dbms_logmnr.add_logfile

(LogFileName=>'/u01/product/oradata/mxdell/redo04.log',Options=>dbms_logmnr.new);

exec dbms_logmnr.add_logfile

(LogFileName=>'/u01/product/oradata/mxdell/redo05.log',Options=>dbms_logmnr.addfile);

 

6、开始挖掘日志
exec dbms_logmnr.start_logmnr(dictfilename=>'/u01/logmnr/dictionary.ora');


7. 生成临时存储表
因为查看Logmnr的结果需要在同一个session, 所以我们可以将session PGA中的挖掘的
内容存储在实体表中,这样其他用户也可以查询,且不会因为session的消失数据也消失。

SQL> create table dfms.logmnr_temp01 as select * from GV$LOGMNR_CONTENTS;

 

8. 结束挖掘日志
execute dbms_logmnr.end_logmnr;


9. 删除日志分析文件
exec dbms_logmnr.add_logfile('/u01/product/oradata/mxdell/redo04.log',dbms_logmnr.removefile);

exec dbms_logmnr.add_logfile('/u01/product/oradata/mxdell/redo05.log',dbms_logmnr.removefile);

 

10. 查询sql_redo及sql_undo . 

select * from  dfms.logmnr_temp01 ;

select scn,timestamp,log_id,seg_owner,seg_type,table_space,data_blk#,data_obj#,data_objd#,
       session#,serial#,username,session_info,sql_redo,sql_undo 
from  dfms.LOGMNR_TEMP01  t   where   SEG_OWNER='DFMS' ;

 

 


8、导出脚本,用脚本做回滚,注意SQL_UNDO中的delete语句末尾有rowid,不能直接用,需要用正则表达式替换掉。

spool TA_ABSDOCS_undosql.txt
select regexp_replace(replace(SQL_UNDO,'"HR_TTM"','"HR_TTM2"'),'and ROWID.+;',';')
from hjm_logmnr
WHERE
SEG_NAME = 'TA_ABSDOCS' AND
SEG_OWNER = 'HR_TTM'
order by to_char(TIMESTAMP,'yyyy-mm-dd hh24:mi:ss') desc;
spool off
 

 

 

http://www.chinaunix.net/jh/19/903297.html 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-700811/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13780392