首页 > 数据库 > Oracle > 异机logminer分析
简介:
在正常情况下使用logminer都会使用数据字典来保证logminer所分析数据的可读性,但是要使用数据字典就要重启数据库以保证utl_file_dir静态参数的生效。
然而在实际情况下,生产库是不可能随便重启的,只能通过拷贝归档在测试库上进行分析;如果是在测试库上进行分析的话就会有一个问题,数据字典跟生产库是不一样的。
这时候就只能通过不指定数据字典文件来解析日志文件。
步骤:
1、 拷贝归档到测试库
方法不限(scp、filezila等.),但是需要注意所拷贝归档的准确性,这个就得根据具体问题来确定了。
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、 转换值
通过函数来转换这个值来得到(对应type为1也就是字符串类型)
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博客 ” ,链接:https://blog.itpub.net/29621173/viewspace-1371870/ ,如需转载,请注明出处,否则将追究法律责任。