Oracle 10g中的Logmnr使用实例解析

数据库 Oracle
Logmnr工具是DBA用来找回被剔除数据的好措施,那么如何使用Logmnr工具呢?本文我们主要就介绍这一部分内容,希望能够对您有所收获!

Oracle 10g中的Logmnr的使用是本文我们主要要介绍的内容,我们知道,在Oracle9i中,Logmnr工具是DBA用来找回被剔除数据的好措施,利用Logmnr能够告终以下的任务:

1、查明数据库的改变登记,可能是举行改变分析,如有的用户猜忌自己的利用有什么问题,发生了许多的失手,能够用Logmnr来分析这些事务,看看究竟发生了些什么事情。

2、查明并修改用户的误垄断,如有的用户一不当心误剔除非某个表,然而并不确认,这个时候就能够利用Logmnr来分析是谁厉行的DML可能是DDL垄断。

3、找回失落的数据,当不能利用flashback可能利用flashback受到局限的时候,能够琢磨利用Logmnr工具来找回数据,这个时候,只必需有归档日志即可。

Logmnr工具包括的内容与数据字典

dbms_logmnr_d包:用于提取字典消息到表,包括三个过程:

(1)add_logfile:用来增加/剔除用于分析的日志文件。

(2)start_logmnr:用来开启日志分析,而且在9i/10g中,能够开启许多不同的分析选项。

(3)end_logmnr:用来终止分析会话,它将回收LogMiner所挪借的内存。

万一等闲用户想利用以上的包,定然目前sys中授权能力够利用,如:

sys用户厉行授权:

SQL> grant execute on dbms_logmnr to scott;

与LogMiner相干的数据字典如下:

u v$logmnr_dictionary:LogMiner可能利用的数据字典消息。

u v$logmnr_parameters:目前LogMiner所设定的参数消息。

u v$logmnr_logs:目前用于分析的日志列表。

u v$logmnr_contents:日志分析收获。

Logmnr分析过程演示

创立一张表,然后插入一些数据,再剔除这些数据。

连接到:

  1. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production  
  2. With the Partitioning, OLAP and Data Mining options  
  3. SQL> alter system archive log current;  
  4. 系统已改动。  
  5. SQL> create table mytesttab as select * from scott.dept;  
  6. 表已创立。  
  7. SQL> insert into mytesttab values(80,'IT','WA');  
  8. 已创立 1 行。  
  9. SQL> insert into mytesttab values(90,'MGR','YR');  
  10. 已创立 1 行。  
  11. SQL> commit;  
  12. 提交告终。  
  13. SQL> delete from mytesttab;  
  14. 已剔除6行。  
  15. SQL> commit;  
  16. 提交告终。  
  17. SQL> alter system archive log current;  
  18. 系统已改动。 

然后找出垄断过程登记的日志文件

  1. D:/oracle/flash_recovery_area/MYORACLE/ARCHIVELOG/2007_08_11目录下的O1_MF_1_4_3CVHLKJM_.ARC文件,我们必需对这个文件举行分析处理。  
  2. SQL> exec sys.dbms_logmnr.add_logfile(LogFileName=>'D:/oracle/flash_recovery_area/MYORACLE/ARCHIVELO  
  3. G/2007_08_11/O1_MF_1_4_3CVHLKJM_.ARC',options=>dbms_logmnr.new);  
  4. PL/SQL 过程已获胜告终。  
  5. SQL> exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.dict_from_online_catalog);  
  6. PL/SQL 过程已获胜告终。  
  7. OK,分析告终。 

察看日志登记的内容

  1. SQL> select t.scn,t.timestamp,t.seg_owner,t.operation  
  2. 2 from v$logmnr_contents t where t.seg_name='MYTESTTAB';  
  3. SCN TIMESTAMP SEG_OWNE OPERATION  
  4. ---------- -------------- -------- ----------  
  5. 5483840 11-8月 -07 SYS DDL  
  6. 5483863 11-8月 -07 SYS INSERT  
  7. 5483874 11-8月 -07 SYS INSERT  
  8. 5483885 11-8月 -07 SYS DELETE  
  9. 5483885 11-8月 -07 SYS DELETE  
  10. 5483885 11-8月 -07 SYS DELETE  
  11. 5483885 11-8月 -07 SYS DELETE  
  12. 5483886 11-8月 -07 SYS DELETE  
  13. 5483886 11-8月 -07 SYS DELETE  
  14. 已抉择9行。  
  15. SQL> select t.SQL_REDO from v$logmnr_contents t where t.seg_name='MYTESTTAB';  
  16. SQL_REDO  
  17. ----------------------------------------------------------------------------------------------------  
  18. create table mytesttab as select * from scott.dept;  
  19. insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values ('80','IT','WA');  
  20. insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values ('90','MGR','YR');  
  21. delete from "SYS"."MYTESTTAB" where "DEPTNO" = '10' and "DNAME" = 'ACCOUNTING' and "LOC" = 'NEW  
  22. YORK  
  23. delete from "SYS"."MYTESTTAB" where "DEPTNO" = '20' and "DNAME" = 'RESEARCH' and "LOC" = 'DALLAS' an  
  24. delete from "SYS"."MYTESTTAB" where "DEPTNO" = '30' and "DNAME" = 'SALES' and "LOC" = 'CHICAGO' and  
  25. delete from "SYS"."MYTESTTAB" where "DEPTNO" = '40' and "DNAME" = 'OPERATIONS' and "LOC" = 'BOSTON'  
  26. delete from "SYS"."MYTESTTAB" where "DEPTNO" = '80' and "DNAME" = 'IT' and "LOC" = 'WA' and ROWID =  
  27. delete from "SYS"."MYTESTTAB" where "DEPTNO" = '90' and "DNAME" = 'MGR' and "LOC" = 'YR' and ROWID =  
  28. 已抉择9行。  
  29. SQL> select t.SQL_UNDO from v$logmnr_contents t where t.seg_name='MYTESTTAB';  
  30. SQL_UNDO  
  31. ----------------------------------------------------------------------------------------------------  
  32. delete from "SYS"."MYTESTTAB" where "DEPTNO" = '80' and "DNAME" = 'IT' and "LOC" = 'WA' and ROWID =  
  33. delete from "SYS"."MYTESTTAB" where "DEPTNO" = '90' and "DNAME" = 'MGR' and "LOC" = 'YR' and ROWID =  
  34. insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values ('10','ACCOUNTING','NEW YORK');  
  35. insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values ('20','RESEARCH','DALLAS');  
  36. insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values ('30','SALES','CHICAGO');  
  37. insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values ('40','OPERATIONS','BOSTON');  
  38. insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values ('80','IT','WA');  
  39. insert into "SYS"."MYTESTTAB"("DEPTNO","DNAME","LOC") values ('90','MGR','YR');  
  40. 已抉择9行。 

关于Oracle 10g中的Logmnr的使用实例的介绍就到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. Oracle 10g正则表达式REGEXP_LIKE简介
  2. Oracle 10g监听listener不能启动的解决方案总结
  3. Oracle 10g利用utlsampl.sql创建scott用户及样本数据
  4. Oracle 10g透明网关访问SQL Server 2000之配置监听
  5. Oracle 10g透明网关访问SQL Server 2000之创建DB Link
责任编辑:赵鹏 来源: 新浪博客
相关推荐

2010-04-07 09:39:18

Oracle 10G

2011-03-25 16:10:58

oraclenagios

2010-05-07 18:28:36

Oracle 10g

2011-04-15 09:53:37

Oracle 10gSQL优化

2010-04-14 16:09:51

Oracle 10g归

2010-03-30 19:31:25

Oracle 10g

2011-07-27 14:22:41

Oracle 10g DBA账户

2011-08-23 18:04:16

Oracle 10g数据泵

2010-04-30 17:50:25

2010-04-14 14:40:32

Oracle 10g

2011-05-13 11:21:51

linuxoracle 10g安装

2010-04-29 15:50:35

2009-04-27 13:26:41

Oracle 10gRAC链接错误

2010-05-07 09:35:25

Oracle 10g

2011-08-30 15:57:15

Oracle 10gUNDO_RETENT

2010-08-04 09:03:53

PerlOracle 10g

2010-04-26 10:32:55

Oracle 10g

2011-08-17 14:19:43

Oracle 10gShrink Tablshrink spac

2009-11-19 10:32:41

Oracle 10g服

2010-04-13 10:07:19

Oracle 10G
点赞
收藏

51CTO技术栈公众号