我的编程空间,编程开发者的网络收藏夹
学习永远不晚

oracle中Logmnr如何抽取日志数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

oracle中Logmnr如何抽取日志数据

这篇文章将为大家详细讲解有关oracle中Logmnr如何抽取日志数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Logmnr,dba在事后需要审计或者查询一个误操作产生的原因,甚至是找回误操作的数据,这时,flashback不一定能帮上你的忙,因为时间可能过去很久了,还有可能是一个DDL操作,而你想知道是由哪个用户发出来的,那么,只要还有这个时间的归档日志存在,就可以利用Logmnr来分析归档日志。

1、利用logmnr,可以做以下事情

(1)、查明数据库的变更记录,或者是进行变化分析,如有的用户怀疑自己的应用有问题,产生了大量的失误,可以用logmnr来分析这些事务,看看到底发生了些什么事情。

(2)、侦察并更正用户的误操作,如有的用户一不小心误删除了某个表,但是并不承认,这个时候就可利用logmnr来分析谁执行的DML或者是DDL操作。

(3)、找回失去的数据,当不能使用flashback或使用flashback受限的时候,我们可以考虑利用logmnr来找回数据,这时候,只要有归档日志即可。

注意:logminer分析出来的元数据,如update table set a=a+10 实际影响了1000条数据,那么logmnr怎返回1000条undo语句。

2、logmnr包含的内容与数据字典

logminer包含两个PL/SQL包和几个视图

dbms_logmnr_d包:用于提取字典信息到外部平面文件或者联机日志中去。

dbms_logmnr包:包含三个过程。

(1)add_logfile:用来添加、删除用于分析的日志文件

(2)start_logmnr:用于开启日志分析,而且,可以开启很多不同的分析选项,如只分析提交信息commited_data_only等。

(3)end_logmnr:用于开启日志分析,而且,可以开启很多不同的分析选项,如只分析提交信息commited_data_only等。

如果普通用户想使用以上的包,必须先在sys中授权才能使用,如:

grant execute on dbms_logmnr to piner;

那么使用的时候,最好也带上前缀sys。如sys.dbms_logmnr。

与logminer相关的字典如下:

v$logmnr_dirctionary:logminer可能使用的数据字典信息,因logmnr可以有多个字典文件,该视图用于显示这方面的信息。

v$logmnr_parameters:当前logminer所设定的参数信息。

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

v$logmnr_contents:日志分析结果。

3、Logmnr的分析过程

(1)切换日志和建立表、并执行插入删除数据操作。

alter system archive log current;

create table test(a int);

insert into test values(1);

insert into test values(2);

insert into test values(3);

delete from test;

commit;

alter system archive log current;

(2)然后找到刚才两次切换之间的包含这些操作的归档日志。

切换的归档日志如下:/home/oracle/product/flash_recovery_area/ORCL/archivelog/2012_09_22/o1_mf_1_54_8

5tondqb_.arc

然后在线分析这个过程。

1)添加日志并分析日志

exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/product/flash_recovery_area/ORCL/archivelog/2012_09_22/o1_mf_1_54_85tondqb_.arc',options=>sys.dbms_logmnr.new);

exec sys.dbms_logmnr.start_logmnr(options=> sys.dbms_logmnr.dict_from_online_catalog);

一般如果还有其他的日志,还可以如下添加:

exec sys.dbms_logmnr.add_logfile(logfilename='/home/oracle/product/flash_recovery_area/ORCL/archivelog/2012_09_22/o1_mf_1_54_85tondqb_.arc');

(3)现在就可以查看分析结果了

select t.scn,t.timestamp,t.seg_owner,t.operation,t.sql_undo,t.sql_undo from v$logmnr_contents t where t.seg_name='TEST';

select t.scn,t.timestamp,t.seg_owner,t.operation,t.sql_undo from v$logmnr_contents t where t.seg_name='TEST';

SCN TIMESTAMP   SEG_OWNER  OPERATION  SQL_UNDO

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

1367841 2012/9/22 1 CAIWENCAN  DDL

1367848 2012/9/22 1 CAIWENCAN  INSERT     delete from "CAIWENCAN"."TEST" where "A" = '1' and ROWID = 'AAAM4wAAEAAAAG+AAA';

1367848 2012/9/22 1 CAIWENCAN  INSERT     delete from "CAIWENCAN"."TEST" where "A" = '2' and ROWID = 'AAAM4wAAEAAAAG+AAB';

1367848 2012/9/22 1 CAIWENCAN  INSERT     delete from "CAIWENCAN"."TEST" where "A" = '3' and ROWID = 'AAAM4wAAEAAAAG+AAC';

1367859 2012/9/22 1 CAIWENCAN  DELETE     insert into "CAIWENCAN"."TEST"("A") values ('1');

1367859 2012/9/22 1 CAIWENCAN  DELETE     insert into "CAIWENCAN"."TEST"("A") values ('2');

1367859 2012/9/22 1 CAIWENCAN  DELETE     insert into "CAIWENCAN"."TEST"("A") values ('3');

其中,SEG_OWNER是操作人,operation是操作方式,sql_undo是操作语句。

这里的v$logmnr_contents视图信息是session级别的,如果需要保留信息,需要创建临时存储

create table logmnr_contents as select * from v$logmnr_contents;

(4)分析完成以后,可以清空session内存信息。

exec sys.dbms_logmnr.end_logmnr;

(5)如果要恢复,可以编写pl/sql进行回滚恢复。

declare

mysql varchar2(4000);

num number :=0;

begin

from c_tmp in (select sql_undo  from logmnr_contents where operation='DELETE') loop

mysql:=replace(c_tmp.sql,':','');

execute immediate mysql;

num:=num+1;

if mod(num,1000)=0 then

commit;

end if;

end loop;

commit;

exception

when others then

....异常处理

end;

(6)如果要更改logmnr的特定表空间,

这里是更改空间为users空间。

exec sys.dbms_logmnr_d.set_tablespace('users');

v$logmnr_dirctionary:logminer可能使用的数据字典信息,因logmnr可以有多个字典文件,该视图用于显示这方面的信息。

v$logmnr_parameters:当前logminer所设定的参数信息。

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

v$logmnr_contents:日志分析结果。

关于“oracle中Logmnr如何抽取日志数据”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

oracle中Logmnr如何抽取日志数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle数据库如何清理日志

Oracle数据库的日志文件主要包括归档日志和在线重做日志。清理日志的操作主要是针对归档日志进行的。以下是清理归档日志的方法:1. 查看归档日志的状态:使用以下命令可以查看当前归档日志的状态:```sqlSELECT * FROM V$AR
2023-09-13

oracle数据库如何开启审计日志

目录1 审计功能由参数 audit_trail 进行控制2 以 DBA 的身份登陆SQL plus2.1 查看 audit_trail 的值2.2 执行以下语句关闭数据库审计功能2.3 重启数据库2.4 验证审计是否已经被关闭2.5 开启审
oracle数据库如何开启审计日志
2024-10-09

oracle数据库日志满了如何处理

当Oracle数据库的日志满了时,可以采取以下几种处理方式:增加日志文件的大小:可以通过增加redo log文件的大小来扩容日志空间,这样可以延长数据库日志满的时间。增加redo log文件的数量:可以增加redo log文件的数量,这样可
oracle数据库日志满了如何处理
2024-04-12

如何进行MySQL和Oracle的元数据抽取分析

如何进行MySQL和Oracle的元数据抽取分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言最近接到个任务是抽取mysql和Oracle的元数据,大致就是
2023-06-22

Kettle 抽取Oracle数据到HDFS发生串行如何解决

在做离线数仓开发的时候,很多时候我们都是将业务数据库数据抽取到数据仓库的ODS层,在抽取过程中,有时候会发现数据条数变多,这种情况下很有可能是数据库内容中有特殊字符导致,常见的导致数据串行的特殊字符有制表符(chr(9)),换行符(chr(10))和回车符(c
Kettle  抽取Oracle数据到HDFS发生串行如何解决
2016-01-08

sqlserver数据库日志如何查询

在SQL Server中,可以通过以下几种方式来查询数据库日志:使用SQL Server Management Studio(SSMS):打开SSMS,连接到目标数据库实例,选择要查询的数据库,然后选择“管理” -> “SQL Server
sqlserver数据库日志如何查询
2024-04-12

mysql数据库日志如何查看

在MySQL数据库中,主要有两种日志:错误日志和查询日志。以下是如何查看这两种日志的方法:错误日志:MySQL的错误日志记录了数据库服务启动、关闭、错误和警告等信息。错误日志通常存储在MySQL的数据目录下,文件名为hostname.err
mysql数据库日志如何查看
2024-04-09

sqlserver数据库日志如何查看

在 SQL Server 中查看数据库日志有两种常用的方法:使用 SQL Server Management Studio (SSMS):打开 SSMS 并连接到需要查看日志的数据库实例。在对象资源管理器中,展开 “管理” -> “SQL
sqlserver数据库日志如何查看
2024-04-09

Oracle数据库中的日志文件是什么

在Oracle数据库中,日志文件主要包括重做日志文件和归档日志文件。重做日志文件(Redo Log Files):重做日志是一种记录数据库发生的所有修改操作(如插入、更新、删除)的文件,它记录了数据库的变化,以便在数据库发生故障时对数据库进
Oracle数据库中的日志文件是什么
2024-03-02

Oracle中redo日志大小如何设置

OracleRedo日志大小设置Redo日志大小影响数据库可靠性和性能。设置大小时,应考虑负载、WAL模式、归档模式和RTO。建议使用自动调整功能或手动调整,单个日志文件大小应为在线重做日志缓冲区的2-3倍。定期监控Redo日志使用情况,包括大小、存档状态和切换频率,以确保Redo日志大小合适。
Oracle中redo日志大小如何设置
2024-05-12

Numpy中如何创建矩阵并等间隔抽取数据

目录Numpy创建矩阵并等间隔抽取数据1、利用Numpy创建向量和二维矩阵1.2 创建二维矩阵2、等间隔抽取数据3、N维矩阵抽取同理对Numpy数据多个维度上等间隔取值总结Numpy创建矩阵并等间隔抽取数据1、利用Numpy创建向量和二维
2023-05-12

springBoot之如何获取接口请求数据和返回数据实现日志

这篇文章主要介绍了springBoot之如何获取接口请求数据和返回数据实现日志问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-14

编程热搜

目录