ITPub博客

首页 > Linux操作系统 > Linux操作系统 > LogMiner用法

LogMiner用法

原创 Linux操作系统 作者:bjiokn 时间:2009-12-30 09:55:37 0 删除 编辑

---通过SQL的界面来查询redo日志的工具。

用途:ITPUB个人空间 h!y#v2|9qhy
1) 用户在误删除数据后,可以通过LogMiner来恢复;虽然也可以通过RMAN来恢复,但需要有之前的备份,要先转出再query,会比较麻烦;LogMiner比较简单;
)X c.fiK0e;t lH02) 可以进行后审计功能,LOG 日志中包含跟踪任何DML和DDL的的全部信息,可以知道执行的顺序和有谁来执行;


1dW:v5tU'} ? \;Gv0

LOGMINER通过固定视图 V$LOGMNR_CONTENTS来提供REDO LOG的信息; V$LOGMNR_CONTENTS 每个字段的信息可以参考ITPUB个人空间nl H!O_/bc
《Database Administrator Guide》。
2H} ^/V!I v"?{C Q0几个组件:ITPUB个人空间B+t q_(d!YK/k
Redo LogsITPUB个人空间D E `Zd'bvd5@
在使用LogMiner时,需要指定想要分析日志的名称; 可以通过dbms_logmnr.add_logfile来添加;
`AVH#Dw(o0需要注意的几点:
{nu2l;U"FX,Z(Y;M01) 重做日志必须是8.0或者以上版本Oracle数据库,在版本9.0.1引入的几个特性只能运用在9i或者之上版本的数据库产生的redo log。ITPUB个人空间+h{3I:_#t4YX
2) 在版本9.2引入了对LOB和LONG数据类型的支持,但只支持9.2或以后的版本的数据库产生的REDO LOG。
Y L1~\#r ip8o%D03) redo log的字符集必须和LOGMINER运行所在的数据库的字符集兼容;
y1lD"M7l h S+a3N04) 一般,分析REDO LOG需要的数据字典来自于产生REDO LOG的同一个数据库。ITPUB个人空间5kq w'P!\U+?
5) LogMiner必须运行在和产生REDO LOG的硬件平台要相同,但不要求运行在同一个系统;
7X#O'n+e4i.GP06) 运行LogMiner时要指定正确的REDO LOG ;如果省略包含一些你需要的数据的REDO LOG,那在查询v$logmnr_contents会无法得到正确的结果;ITPUB个人空间MTy)]r~6P8a
Dictionary Options
Zvl6lpb&X-g1Bj0LogMiner需要数据字典才能完整的翻译REDO LOG的内容;LOGMINER使用字典来转换内部对象标识符和数据类型为对象名称和数据格式;没有数据字典,LogMiner返回内部的对象ID和用16进制表示数据。
js0G2E)b6mm0举个例子,返回的不是如下SQL 语句:ITPUB个人空间(hrN['LlK!H
INSERT INTO emp(name, salary) VALUES ('John Doe', 50000);
|7x"OnQ1N0而是:ITPUB个人空间Q6L;m#cX2A|:Q%H
insert into Object#2581(col#1, col#2) values (hextoraw('4a6f686e20446f65'),hextoraw('c306'));"
!z[f_q F @PF0字典的信息可以来自普通文件和REDO LOG和在线目录(就是当前数据字典)。ITPUB个人空间(]NvDLSJG
可以通过EXTRACT把字典信息转出到一个普通文件和REDO LOG文件。
Xu;Z Z e0转出(Extract)字典文件的必须有相同的字符集和通过产生REDO LOG的数据库创建;但字典Extract后,可以在其他数据库上个挖掘redolog的,而不需要连接到原数据库;ITPUB个人空间HKURY\
而且转出(Extract)字典文件可以避免当前的数据字典只包含最新的表格定义时出现的问题;比如,你在搜索过去某个时间被删除的表格,然而当前的字典文件没有任何的关于该删除TABLE的信息。ITPUB个人空间i-Z4e5WT+T
Extract到普通文件:ITPUB个人空间f7eZK!W2~X
1) 在init.ora中设定参数:ITPUB个人空间4h.zu [VzS7G
UTL_FILE_DIR = /oracle/database
9I%I4s@"|_SW02) 重启服务器:ITPUB个人空间!Jsi)j~ yj~F)M
startup pfile=/oracle/data/init.ora
x(A_s)a3FsV(g03) Extract 字典信息:ITPUB个人空间%fyv3W;H U V'|
EXECUTE DBMS_LOGMNR_D.BUILD(’dictionary.ora’, -ITPUB个人空间0ER@!@-Y
’/oracle/database/’, -ITPUB个人空间/g:NB%y7W
OPTIONS => DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);

Extract到Redo log,直接执行如下SQL:ITPUB个人空间K$C#pD9gf:F
EXECUTE DBMS_LOGMNR_D.BUILD ( -ITPUB个人空间(Pkq[:Q s(G
OPTIONS=>DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);ITPUB个人空间/W ~%y"[)V(h k6M

(W Z|"[/[jK#?,P0使用当前目录作为字典的选项,会有限制。就是不能配合 DDL_DICT_TRACKING使用。ITPUB个人空间&Bn]x t;efi~
EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => -ITPUB个人空间e7RVE}Z
DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

一般的操作步骤:ITPUB个人空间*\p1meCt
1) 添加 redo log文件ITPUB个人空间%n8R3B5WxV H
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -ITPUB个人空间CGz']7z:P.Q@!q
LOGFILENAME => 'log1orc1.ora', -
8CmljE u,vlDf$A0OPTIONS => DBMS_LOGMNR.NEW);
k~h~nr0如果文件不止一个,那添加其他的文件:ITPUB个人空间-vpPt*o3}!hW
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -
9t3P7?4[p DE}0LOGFILENAME => 'log2orc1.ora', -ITPUB个人空间TK-B4zf6f
OPTIONS => DBMS_LOGMNR.ADDFILE);

如果有很多的REDO LOG需要添加到LOGMINER,那可以通过以下SQL的输出来得到想要的结果:
M"Cg_(g,|0select 'exec dbms_logmnr.add_logfile(logfilename=>''' || name ||'''); 'ITPUB个人空间'z^4O'`'\S }
from v$archived_logITPUB个人空间/| WY)Zf{ YOD
where recid > 106;

2) 开始LogMiner:ITPUB个人空间-w(s`'J4[F-t
EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => -ITPUB个人空间.p!^7R'~u3c
DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
]['QVY|`$^ C0如果要加上时间界限:ITPUB个人空间-z IM~0J\
EXECUTE DBMS_LOGMNR.START_LOGMNR( -
~C#f-l6g^6J0OPTIONS =>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG, -
UJM5GoD qn P ZP0STARTTIME => TO_DATE('01-Jan-2008 08:30:00', 'DD-MON-YYYY HH:MI:SS'), -ITPUB个人空间,~3htI;lC#^ _:R
ENDTIME => TO_DATE('01-Jan-2008 08:45:00', 'DD-MON-YYYY HH:MI:SS'));

3) 查询v$logmnr_contenst以获得想要的内容:

SELECT SQL_REDO, SQL_UNDO FROM V$LOGMNR_CONTENTSITPUB个人空间1Q0J,I4MQ{|s
WHERE USERNAME = 'joedevo' AND SEG_NAME = 'salary';

select sql_undo, sql_redo , operationITPUB个人空间%Q C0i$X,Tt'wy
from v$logmnr_contentsITPUB个人空间 Y}\$lT*G^4X
where username='KONG' and peration ='DDL'


x Ky&C/se?#aZ:gE%D"m0建议:ITPUB个人空间ep]Z#m
使用非SYSTEM TABLESPACE来存放LogMiner的信息:ITPUB个人空间#YSt \G
EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE(’logmnrts$’);

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

上一篇: copy 和 backup
请登录后发表评论 登录
全部评论

注册时间:2009-05-31

  • 博文量
    94
  • 访问量
    113660