ITPub博客

首页 > IT基础架构 > 网络安全 > Logminer的使用步骤

Logminer的使用步骤

原创 网络安全 作者:witus 时间:2007-12-29 15:10:00 0 删除 编辑

Logminer的使用步骤:

1)先确定是否设置了UTL_FILE_DIR参数。

以sys用户登录系统后,执行show parameter utl_file_dir查看是否有值。如果没有,设置该参数,该参数不能在线修改:
SQL> alter system set utl_file_dir='/export/home/oracle/app/oracle/oradata/logmnr' scope=spfile;
系统已更改。
然后重启DB:
SQL>shutdown immediate;
SQL>startup;

2)导出DB的数据字典到一个文件中。
SQL> exec dbms_logmnr_d.build(dictionary_filename=>'$file', dictionary_location=>'$dir');
其中:$file是存储数据字典的文件名,可以任意取;$dir是存放$file的目录,需要和设置的UTL_FILE_DIR参数一致。
如果不导出数据字典,则在分析日志文件后,得到的语句中不能显示对象名,而只能显示16进制的东西。如:
不能显示:INSERT INTO emp(name, salary) VALUES ('John Doe', 50000);
而显示:insert into Object#2581(col#1, col#2) values (hextoraw('4a6f686e20446f65'),hextoraw('c306'));"

3)新建需要分析的log文件列表。
SQL> exec dbms_logmnr.add_logfile(logfilename=>'$logfile',options=>dbms_logmnr.new);
其中:$logfile是需要分析的log文件。

如果还需要添加其他的log文件,则:
SQL> exec dbms_logmnr.add_logfile(logfilename=>'$logfile1',options=>dbms_logmnr.addfile);

如果要从列表中删除log文件,则:
SQL> exec dbms_logmnr.add_logfile(logfilename=>'$logfile1',options=>dbms_logmnr.removefile);

4)分析log。
SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'$file');
其中:$file为存放数据字典的文件的全路径。也就是第2步的$dir$file。

可以只分析部分log文件,可以按照SCN和time来指定需要分析的log的范围。

5)查看log的分析结果。
分析结果可以从v$logmnr_contents中查处。几个比较关键的字段有operation,seg_name,sql_redo和sql_undo,它们分别表明了DML语句的操作类型,操作对象,具体的操作SQL和恢复该操作得SQL。

需要注意的是,对于象truncate和drop这样的DDL语句是无法恢复的,因为它们操作的数据不写redo log。

另外,虽然从v$logmnr_contents中我们可以查到sql_redo和sql_undo,但并不表示redo log中存放的就是这些SQL语句。Redo log中存放的是被修改的数据块在修改前和修改后的数据,从这些数据中,推导出了sql_redo和sql_undo。

[@more@]

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

请登录后发表评论 登录
全部评论
  • 博文量
    5
  • 访问量
    127269