Logminer的使用步骤

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博客 ” ,链接:http://blog.itpub.net/11422417/viewspace-996169/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11422417/viewspace-996169/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值