异机logminer分析

简介:

         在正常情况下使用logminer都会使用数据字典来保证logminer所分析数据的可读性,但是要使用数据字典就要重启数据库以保证utl_file_dir静态参数的生效。

         然而在实际情况下,生产库是不可能随便重启的,只能通过拷贝归档在测试库上进行分析;如果是在测试库上进行分析的话就会有一个问题,数据字典跟生产库是不一样的。

         这时候就只能通过不指定数据字典文件来解析日志文件。

步骤:

1、  拷贝归档到测试库

    方法不限(scpfilezila.),但是需要注意所拷贝归档的准确性,这个就得根据具体问题来确定了。

2、  添加归档文件

BEGIN

dbms_logmnr.add_logfile(logfilename=>'/home/oracle/logminer/thread_1_seq_83571.1784.866394377',options=>dbms_logmnr.addfile);

END;

/

3、  不指定数据字典启动logminer进行分析

execute dbms_logmnr.start_logmnr;

可以指定其他条件,比如时间;

execute dbms_logmnr.start_logmnr(StartTime =>to_date('2014-6-8 00:00:00','YYYY-MM-DD HH24:MI:SS') EndTime =>to_date('2014-6-8 23:59:59','YYYY-MM-DD HH24:MI:SS '));

4、  为了可以在其他回话中也可以查看可以选择创建一张表来存储分析结果

create table t1 as select * from v$logmnr_contents;

这样虽然是分析出来了但是过滤又是一个问题

5、  通过生产库查询到对象的object_id

select object_id from dba_objects where object_name='T' and owner='ORS'

6、  通过object_id来过滤分析结果

select * from t1 where  sql_redo like '%767306%';

其中sql_redo必然是最主要的信息,但是确有一些看不懂的值,例如

update "UNKNOWN"."OBJ# 767306" set "COL 6" = HEXTORAW('68656C6C6F20776F7264')  where "COL 6" = HEXTORAW('6861686120776F7264') and ROWID = 'AAC7VKAAMAAE7lLAAF';

7、  查看对应的列

现在已经确定了表,而列名还不能确定,通过生产库中的col$视图查询

select name,type# from SYS.COL$ where OBJ# = 767306 and col#=6;

在这里要同时把列类型记录下来


也可以通过DBA_TAB_COLS来查看col$的值

select column_name,data_type,column_id from DBA_TAB_COLS where table_name='T' and owner='ORS'

8、  转换值

通过函数来转换这个值来得到(对应type1也就是字符串类型)

select utl_raw.cast_to_varchar2 ('6861686120776F7264') from dual;

9、  到此就可以得到正常的sql语句了。

 

注:type类型与对应的转换函数

Type                   typename                  转换函数

1                      (n)varchar2                utl_raw.cast_to_varchar2()

2                         number                   utl_raw.cast_to_number()
96                          char                     utl_raw.cast_to_varchar2()

12                         date                     raw_to_date()------------------自定义函数

 

自定义函数内容如下:

create or replace function raw_to_date(rw in raw) return date is

  Result date;

begin

  dbms_stats.convert_raw_value(rw, Result);

  return(Result);

end raw_to_date;

 

关于type#与typename的更多对应可以通过

select * from dba_views where view_name ='USER_TAB_COLS' 来查看TEXT中的内容

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

转载于:http://blog.itpub.net/29621173/viewspace-1371870/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值