LogMiner提供了一个处理重做日志文件并将其内容翻译成代表对数据库的逻辑操作的SQL语句的过程。LogMiner运行在Oracle版本8.1或者更高版本中。

一,如何使用Logminer:

先要安装logminer的两个包;以SYS用户运行下面两个脚本,其中第一个脚本dbmslm.sql用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本dbmslmd.sql用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN>sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on星期五4月10 17:49:02 2009

Copyright (c) 1982, 2007, Oracle.All Rights Reserved.

SQL> connsys/oracle as sysdba

已连接。

SQL>

SQL> @dbmslm.sql

程序包已创建。

授权成功。

SQL>

SQL> @dbmslmd.sql

程序包已创建。

二,创建数据字典文件

数据字典文件是一个文本文件,使用包DBMS_LOGMNR_D来创建,如果我们要分析的数据库中的表有变化(比如表结构有变化等),影响到库的数据字典也发生变化。另外一种情况是在分析另外一个数据库文件的重做日志时,也必须要重新生成一遍被分析数据库的数据字典文件。

首先需要修改参数UTL_FILE_DIR ,该参数值为服务器中放置数据字典文件的目录,10g中我们通过动态修改参数的方式来修改,然后重新启动数据库生效。其中logs_utl_file目录先期建立好。

SQL> alter system set UTL_FILE_DIR='d:\oracle\product\10.2.0\oradata\test\logs_utl_file'scope=spfile;系统已更改。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

SQL>

SQL> startup

ORACLE例程已经启动。

Total System Global Area167772160 bytes

Fixed Size1295608 bytes

Variable Size125831944 bytes

Database Buffers33554432 bytes

Redo Buffers7090176 bytes

数据库装载完毕。

数据库已经打开。

SQL>

SQL> show parameter UTL_FILE

NAMETYPE

------------------------------------ -------------

VALUE

------------------------------

utl_file_dirstring

d:\oracle\product\10.2.0\orada

ta\test\logs_utl_file

SQL>

然后创建数据字典文件:

BEGIN

dbms_logmnr_d.build(

dictionary_filename => ' logminer_dict.ora',

dictionary_location => ' D:\oracle\product\10.2.0\oradata\test\logs_utl_file');

END;

/

OK ,可以看到在logs_ult_file中已经生成了logminer_dict.ora数据字典文件。数据字典文件是可以打开的文本文件。有兴趣可以打开看看。

创建数据字典是让logminer引用实际到内部数据字典中的部分是使用对象的名称,而不是系统内部的16进制的ID.

三,创建要分析的日志文件(在线日志或归档日志)的列表

(1)分析在线的重做日志

A。建立列表

SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad

ata\test\redo01.log', ptions=>dbms_logmnr.new);

PL/SQL过程已成功完成。

B。添加其他日至文件到列表

SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad

ata\test\redo02.log', ptions=>dbms_logmnr.addfile);

PL/SQL过程已成功完成。

SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad

ata\test\redo03.log', ptions=>dbms_logmnr.addfile);

PL/SQL过程已成功完成。

(2)分析归档的重做日志

A。建立列表

SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad

ata\archive\ARC00052_0684166863.001', ptions=>dbms_logmnr.new);

PL/SQL过程已成功完成。

B。添加其他日志文件到列表

SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad

ata\archive\ARC00053_0684166863.001', ptions=>dbms_logmnr.addfile);

PL/SQL过程已成功完成。

如果你觉得不需要分析已经在列表中的在线或归档日志,可以通过removefile命令删除:

SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\orad

ata\archive\ARC00053_0684166863.001', ptions=>dbms_logmnr.removefile);

PL/SQL过程已成功完成。

四,使用Logminer进行日志分析

无限制条件:

SQL> execute dbms_logmnr.start_logmnr(DictFileName=> 'D:\oracle\product\10.2.0\o

radata\test\logs_utl_file\logminer_dict.ora') ;

PL/SQL过程已成功完成。

有限制条件:

通过对过程DBMS_LOGMNR.START_LOGMNR中的时间或者SCN参数的设置,可以缩小分析日志文件的范围:

如我们仅仅分析2009年2月23日到2005年7月26日的日志:

SQL> execute dbms_logmnr.start_logmnr(

DictFileName => ' D:\oracle\product\10.2.0\o

radata\test\logs_utl_file\logminer_dict.ora ',

StartTime => to_date('2009-2-23 00:00:00','YYYY-MM-DD HH24:MI:SS')

EndTime => to_date(''2009-2-26 23:59:59','YYYY-MM-DD HH24:MI:SS '));

相关的参数如下:

参数参数类型默认值含义

StartScn数字型0分析重作日志中SCN≥StartScn日志文件部分

EndScn数字型0分析重作日志中SCN≤EndScn日志文件部分

StartTime日期型1998-01-01分析重作日志中时间戳≥StartTime的日志文件部分

EndTime日期型2988-01-01分析重作日志中时间戳≤EndTime的日志文件部分

DictFileName字符型字典文件该文件包含一个数据库目录的快照。

使用该文件可以使得到的分析结果是可以理解的文本形式,

而非系统内部的16进制

Options BINARY_INTEGER 0系统调试参数,实际很少使用

五,得到分析结果:

到现在为止,我们已经分析得到了重作日志文件中的内容。动态性能视图v$logmnr_contents包含LogMiner分析得到的所有的信息。

SELECT sql_redo FROM v$logmnr_contents;

如果我们仅仅想知道某个用户对于某张表的操作,可以通过下面的SQL查询得到,该查询可以得到用户TONY对表R_WIP_TST所作的一切工作。

SQL>; SELECT sql_redo FROM v$logmnr_contents WHERE username='TONY' AND tablename='R_WIP_TST';

需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在(如果执行了DBMS_LOGMNR.END_LOGMNR分析结果将消失)。这是因为所有的LogMiner存储都在PGA内存中,所有其他的进程是看不到它的,同时随着进程的结束,分析结果也随之消失。

如果需要,可以通过removefile命令删除日志分析文件。

SQL> execute dbms_logmnr.add_logfile(LogFileName=>'d:\oracle\product\10.2.0\oradata\archive\ARC00052_0684166863.001', ptions=>dbms_logmnr.removefile);

六,使用DBMS_LOGMNR.END_LOGMNR结束日志分析过程,释放内存。

最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。

SQL> execute dbms_logmnr.end_logmnr;

oracle10g的rat模拟,Oracle 10g Logminer 研究及测试相关推荐

  1. oracle10g密码不对,谈谈Oracle 10g 密码文件

    谈谈Oracle 10g 密码文件 Oracle 10g实例搜索密码文件时默认是搜索$ORACLE_HOME/dbs目录下面的orapw$ORACLE_SID文件,当orapw$ORACLE_SID文 ...

  2. oracle10g索引不生效,oracle 10g分区表索引失效测试

    一.测试环境 SQL> select * from v$version; BANNER ----------------------------------------------------- ...

  3. oracle10g sys密码忘记,Oracle 10g忘记system,sys密码的解决办法。

    C:\Documents and Settings\Administrator>sqlplus /nolog SQL*Plus: Release 10.1.0.2.0 - Production ...

  4. oracle10g有exp吗,Oracle 10G中 EXP对象时报ORA-00932

    用户在使用exp对数据库的表做备份时,出现ORA-00932报错,如下: EXP-00056: ORACLE error 932 encountered ORA-00932: inconsistent ...

  5. oracle10g删除asm组,Oracle 10G RAC 删除已有节点

    如果现在在RAC集群中有三个节点c1.c2.c3: 如果想要卸载c3节点. 1.在c1或者c2上删除c3实例 运行dbca 然后选择Oracle Real Application Clusters d ...

  6. oracle10g重新配置crs,Oracle 10G RAC一节点系统重做后修复

    Linux操作系统中运行Oracle RAC 10.2.0.4双节点(ora1和ora2).ora1的两块盘损坏导致系统故障,剩下一个ora2正常运行并继续对外提供服务.重做完系统后,如何保证在应用不 ...

  7. oracle10g如何导出dmp,Oracle 10g dmp文件的导入导出

    Oracle数据导入dmp文件可以是"某个用户下的数据库",也可以是"某张表",这里以导入数据库为例说明 : 1.用SYS用户名,以DBA的身份在ie中登入到数 ...

  8. oracle10g生成awr报告,oracle 10g awr报告生成步骤及awr报告分析

    3. io:如果需要的数据在内存中没有,则需要到磁盘中去取,就会用到物理io了,还有表之间的连接数据太多,以及排序等操作内存放不下的时候,也需要用到临时表空间,也就用到物理io了 这里有一点说明的是, ...

  9. oracle10g精简版配置,oracle 10g 精简版安装步骤分享

    今天遇到个软件要求安装oracle client端,于是考虑装精简版本的,就从http://www.oracle.com/technology/software/tech/oci/instantcli ...

最新文章

  1. 新僵尸病毒猖獗 Facebook成攻击目标
  2. python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围
  3. java面试第十五天
  4. Scenario 7 – HP C7000 VC FlexFabric Tunneled VLANs and SUS A/A vSphere
  5. wxWidgets:wxBitmap类用法
  6. Java中final关键字的几种用法
  7. SCRUM 12.03
  8. 防抖 节流_【前端面试】节流与防抖
  9. gradle和maven区别
  10. Flutter中消息传递
  11. NSX发布Guest Introspection虚拟机时,主机报错的解决方法
  12. Redis 笔记之 Java 操作 Redis(Jedis)
  13. ca锁登录显示服务器验签失败,网上报名CA登录失败解决办法
  14. 极客时间学习笔记:03芯片分类
  15. 如何理解混淆矩阵,以及预测少数类的评估指标?
  16. 传奇世界最好的版本:
  17. 关机程序源代码——千万不要点运行!!!hahaha
  18. 按照实际案例用常用的查壳去壳和加壳工具说明使用方法
  19. FarmersWorld 农民世界—同时体验农耕乐趣和赚钱
  20. 激光测距仪传感器,基于EFM32控制器开发设计_方案

热门文章

  1. python bool转string_Python:可以返回boolean和string吗?
  2. 算术运算导致溢出_CPU的控制器与运算器
  3. C语言动态数组建立方法
  4. b500k带开关电位器内部构造_R138带开关大功率大电流电位器 B10K B500K
  5. java合并两个有序链表_JS实现的合并两个有序链表算法示例
  6. html5测试题整理--针对标签的概念性
  7. vue 扫码页面限制区域_Vue.js 单页面多路由区域操作的实例详解
  8. stream 过滤俩个字段_Java8 Stream:2万字20个实例,玩转集合的筛选、归约、分组、聚合...
  9. vue-cli使用说明
  10. 登录界面点击登录后如何延迟提示成功的div的显示时间并跳转