ORACLE日志挖掘器(LogMiner)(三)

2014-11-24 09:00:53 · 作者: · 浏览: 1
options 参数的值决定了挖掘会话的属性及在挖掘时 V$LOGMNR_CONTENTS 视图的行为特征,该参数中传入的常量是NUMBER类型
,其值为 2的幂。
select text from dba_source where owner='SYS' and name='DBMS_LOGMNR' AND TYPE='PACKAGE' START WITH TEXT
LIKE 'COMMITTED_DATA_ONLY%CONSTANT%';
LogMiner 挖掘
挖掘会话被成功打开后,就可以在同一个会话中查询 v$logmnr_contents 视图了。
比如:
select '('||rownum||')'as SQL#,SQL_REDO,SQL_UNDO FROM V$LOGMNR_CONTENTS WHERE SEG_OWNER='TEST_USER'
AND SEG_NAME='TT';
利用 column_present 函数和 redo_value 字段挖掘感兴趣的字段的变更
column_present 函数可以用来判断特定的字段是否被变更(变更则为1,否则为0)
select '('||rownum||')' as SQL#,sql_redo,sql_undo from v$logmnr_contents where seg_owner='test_user' and seg_name='tt'
and DBMS_LOGMNR.COLUMN_PRESENT(redo_value,'test_user.tt.city')=1;---- 这里的 =1 表示对特定的字段感兴趣。
利用 mine_value 函数和 redo_value 和 undo_value 字段更能正规显示 新 值 和 旧 值
select '('||rownum||')' as SQL#,sql_redo,sql_undo from v$logmnr_contents where seg_owner='test_user' and seg_name='tt'
and DBMS_LOGMNR.COLUMN_PRESENT(redo_value,'test_user.tt.city')=1 and
dbms_logmnr.mine_value(redo_value,'test_user.tt.city') / dbms_logmnr.mine_value(undo_value,'test_user.tt.city') >1.1;
关闭挖掘会话
可以显示或隐式的方式结束。
显示则是调用 dbms_logmnr.end_lognr 存储过程。
隐式方式则是 调用 dbms_logmnr.add_logfile 存储过程时对 options 参数传入 dbms_logmnr.new 常量
begin
DBMS_LOGMNR.ADD_LOGFILE(logfilename=>'log_path',
options=>dbms_logmnr.new);
----即使用隐式方式时还将logfilename 参数指定的日志更换为注册的日志。
end;