如何使用log miner分析oracle日志

当我们不小心误操作致使数据库数据丢失、改变时, 需要对数据库对象做基于时间点的恢复,找到我们需要的数据,这个时间点不能认为精确确定,我们可以通过对oracle日志进行分析,而获得无操作的精确时间点。
oracle db提供了一个分析日志包logmnr
logminer 工具的使用
-------对redo log 进行挖掘,找出在某个时间点所作的DDL 或DML 操作(包括:时间点、datablock scn 、sql语句)
实验测试

SQL> select name from v$archived_log;

NAME
--------------------------------------------------
/oracle/arch1/1_2_883536782.dbf

SQL>
SQL>
SQL> delete from scott.t1;
576 rows deleted.
SQL> alter system archive log current;
System altered.
SQL> create table scott.t6 as select * from scott.emp;
Table created.
SQL> alter system archive log current;
System altered.
SQL> select name from v$archived_log;

NAME
--------------------------------------------------
/oracle/arch1/1_2_883536782.dbf
/oracle/arch1/1_3_883536782.dbf
/oracle/arch1/1_4_883536782.dbf

--启动log miner添加要分析的日志

SQL> execute dbms_logmnr.add_logfile(logfilename=>'/oracle/arch1/1_2_883536782.dbf',options=>dbms_logmnr.new);

PL/SQL procedure successfully completed.

--添加需要分析的日志

SQL> execute dbms_logmnr.add_logfile(logfilename=>'/oracle/arch1/1_3_883536782.dbf',options=>dbms_logmnr.addfile); 

PL/SQL procedure successfully completed. 

SQL> execute dbms_logmnr.add_logfile(logfilename=>'/oracle/arch1/1_4_883536782.dbf',options=>dbms_logmnr.addfile) 

PL/SQL procedure successfully completed.

--执行log miner


SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog); 

PL/SQL procedure successfully completed.

--查询分析结果

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='T1';
USERNAME  SCN TIMESTAMP
------------------------------ ---------- -------------------
SQL_REDO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
delete from "SCOTT"."T1" where "EMPNO" = '7782' and "ENAME" = 'CLARK' and "JOB" = 'MANAGER' and "MGR" = '7839' and "HIREDATE" = TO_DATE('1981-06-09 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and "SAL" = '245
0' and "COMM" IS NULL and "DEPTNO" = '10' and ROWID = 'AAAVbSAAFAAAACXABi';

SYS  1494545 2015-06-28 04:24:44
delete from "SCOTT"."T1" where "EMPNO" = '7839' and "ENAME" = 'KING' and "JOB" = 'PRESIDENT' and "MGR" IS NULL and "HIREDATE" = TO_DATE('1981-11-17 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and "SAL" = '500
0' and "COMM" IS NULL and "DEPTNO" = '10' and ROWID = 'AAAVbSAAFAAAACXABj';

SYS  1494545 2015-06-28 04:24:44
delete from "SCOTT"."T1" where "EMPNO" = '7844' and "ENAME" = 'TURNER' and "JOB" = 'SALESMAN' and "MGR" = '7698' and "HIREDATE" = TO_DATE('1981-09-08 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and "SAL" = '1
。。。。。

--结束log miner 分析

SQL> execute dbms_logmnr.end_logmnr;

PL/SQL procedure successfully completed.

以上就是本文的全部内容,希望大家可以喜欢。

(0)

相关推荐

  • 浅谈LogMiner的使用方法

    Logminer是每个Dba都应熟悉的工具,当一天由于用户的误操作你需要做不完全的恢复时,由于你无法确定这个操作是哪个时间做的,所以这对你的恢复就带来的很大的难度,丢失的数据也不能完全恢复回来.而LogMiner就可以帮你确定这个误操作的准确时间. 我的测试环境是Aix4.3.3的操作系统,Oracle9.2.0.3的测试库. 一.LogMiner的几点说明 1.LogMiner可以帮你确定在某段时间所发的各种DML,DDL操作的具体时间和SCN号,它所依据的是归档日志文件及联机日志文件. 2.

  • 理解和使用Oracle 8i分析工具LogMiner

    正在看的ORACLE教程是:理解和使用Oracle 8i分析工具LogMiner.Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日志文件(归档日志文件)中的具体内容,特别是,该工具可以分析出所有对于数据库操作的DML(insert.update.delete等)语句,另外还可分析得到一些必要的回滚SQL语句.该工具特别适用于调试.审计或者回退某个特定的事务. LogMiner分析工具实际上是由一组PL/S

  • 如何使用log miner分析oracle日志

    当我们不小心误操作致使数据库数据丢失.改变时, 需要对数据库对象做基于时间点的恢复,找到我们需要的数据,这个时间点不能认为精确确定,我们可以通过对oracle日志进行分析,而获得无操作的精确时间点. oracle db提供了一个分析日志包logmnr logminer 工具的使用 -------对redo log 进行挖掘,找出在某个时间点所作的DDL 或DML 操作(包括:时间点.datablock scn .sql语句) 实验测试 SQL> select name from v$archiv

  • python+pandas分析nginx日志的实例

    需求 通过分析nginx访问日志,获取每个接口响应时间最大值.最小值.平均值及访问量. 实现原理 将nginx日志uriuriupstream_response_time字段存放到pandas的dataframe中,然后通过分组.数据统计功能实现. 实现 1.准备工作 #创建日志目录,用于存放日志 mkdir /home/test/python/log/log #创建文件,用于存放从nginx日志中提取的$uri $upstream_response_time字段 touch /home/tes

  • Oracle 日志挖掘(LogMiner)使用详解

    Logminer依赖于2个包:DBMS_LOGMNR和DBMS_LOGMNR_D,Oracle 11g默认已安装 Logminer 基本使用步骤 <1>. Specify a LogMiner dictionary.   指定Logminer字典 <2>. Specify a list of redo log files for analysis.   指定需要挖掘的redo或者archivelog日志文件 <3>. Start LogMiner.    开始日志挖掘

  • 使用goaccess分析nginx日志的详细方法

    最近想用goaccess来分析下nginx日志,但是苦于nginx日志配置格式不是按照正常格式来的,完全是我们按照自己的需求来写的,所以导致goaccess分析不了,需要自己重新定义下格式:但是网上虽然介绍goaccess的很多,但是大多都是就重避轻,将格式的自定义忽略掉,因此我就来把自定义这块说下. GoAccess是一款开源.实时,运行在命令行终端下的web日志分析工具.该工具提供快速.多样的HTTP状态统计,可以令管理员不再纠结于统计各类数据,和繁杂的指令以及一大堆管道/正则表达式说bye

  • ELK与Grafana联合打造可视化监控来分析nginx日志

    目录 修改nginx打印日志格式 安装logstash后,修改配置文件 配置解析: input段: filter段: output段: 安装GeoIP: 安装Grafana 配置Grafana数据源 配置Grafana 画图模版 打造一个帅气的监控需要什么: Grafana 前端数据分析平台 Elasticsearch 全文检索引擎 Logstash 日志收集处理框架 dashboard 监控面板出处 前提是elk集群和Grafana安装完毕,google上请自行搜索安装,这里不写了. 修改ng

  • 源码分析SpringMvc日志打印被忽略输出问题

    目录 1.写在前面 2.问题引出 3.截取源码分析 4.截取问题处理 1.写在前面 在java的开发过程中,涉及到java web的开发,基本上都是走spring这一套了. 我们之前一般来说,都会说mvc:Model(模型业务).View(视图界面).Controller(控制器).这个学习java开发的,应该都懂吧,这里就不多说了. 这里,我们先着重解析下Controller: Controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何

  • 使用MongoDB分析Nginx日志的方法详解

    本文我们要从日志文件中找出IP访问最多的10条记录,然后判断其是否合法,从而采取对应的措施.感兴趣的朋友们一起来看看吧. 日志解析流程 正常情况下,关于Nginx日志解析的流程如下所示: 一般情况下我们会对要解析的日志提前进行切分,常用的方式是按照日期,然后保存1个星期的日志.然后接下来就是日志的解析了,在这个过程中会使用到一些工具或编程语言,例如awk.grep.perl.python. 最后的入库和可视化处理一般视业务而定,没有强制的要求. 日志查询的解决方案 而关于Nginx日志解析的常用

  • oracle日志操作模式(归档模式和非归档模式的利与弊)

    笔者今天就谈谈自己对这两种操作模式的理解,并且给出一些可行的建议,跟大家一起来提高Oracle数据库的安全性. 一.非归档模式的利与弊. 非归档模式是指不保留重做历史的日志操作模式,只能够用于保护例程失败,而不能够保护介质损坏.如果数据库采用的是日志操作模式的话,则进行日志切换时,新的日志会直接覆盖原有日志文件的内容,不会保留原有日志文件中的数据. 这么说听起来可能比较难理解.笔者举一个简单的例子,就会清楚许多.如现在Oracle数据库中有四个日志组,日志序列号分别为11. 12.13.14.当

  • 利用python分析access日志的方法

    前言 WAF上线之后,处理最多的是误报消除. 产生误报有多种原因,比如web应用源码编写时允许客户端提交过多的cookie:比如单个参数提交的数值太大. 把误报降低到了可接受的范围后,还要关注漏报.WAF不是神,任何WAF都可能被绕过.所以还需要定位漏过的攻击,明确漏报的原因,才能update WAF的策略. 要定位漏报,就必须分析Web应用的访问日志了.一个站点,每天产生的access日志大概接近1GB,显然靠肉眼看是不现实的.这就需要用python帮助自动分析. 实现思路 拿我司某Web系统

  • shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)

    当服务器压力比较大,跑起来很费力时候.我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时. 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的. 下面是我在做优化时候,经常用到的一段shell 脚本. 这个也可以算是,统计web页面的slowpage 慢访问页面,象mysql slowquery . 以下是我的:nginx 配制 复制代码 代码如下: log_format  main  '$remote_addr - $remote_user [$ti

随机推荐