使用logminer分析oracle日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
平台:redhat linux as5oracle10glogminer

1、简单介绍:

logmineroracle提供的一个package。它主要用于分析log file文件(包括online redo log file,archived log file,log file中的信息转存到v$logmnr_contents中,从而获取对oracle数据库操作的历史信息。使用logminers可以分析特定时间段数据库数据作了些什么变更,执行了哪些语句.
本文首先介绍了redologarchive log 及它们之间的关系,然后使用logminer分析保存在redologarchivelog中的SQL语句

2.Redologarchived log

redo log fileLGWR进程从Oracle实例中的redo log buffer写入的,用户对数据库的操用先写到redolog然后才写到实体文件,所以通过查看redolog就能知道用户都做了些什么操作,默认oracle有三组redolog循环使用。也就是说一个redo log file(group) 写满后,才写下一个,当然也可以手动切换。当第三个也写满后再回头写第一个。
查看当前redolog状态
SQL> select group#,members,status from v$log;
    GROUP#    MEMBERS     STATUS
---------- ---------- ----------------
         1                  ACTIVE
         2          1         CURRENT
         3          1         INACTIVE
手工切换
SQL> alter system switch logfile;
SQL> select group#,members,status from v$log;
 
    GROUP#    MEMBERS    STATUS
---------- ---------- ----------------
         1          1       INACTIVE
         2          1       ACTIVE
         3                CURRENT
现在使用第三组
archive log是当数据库运行在归档模式下时,一个redo log file(group)写满后,由ARCn进程将重做日志的内容备份到归档日志文件下,然后这个redo log file(group)才能被下一次使用。上面提到redolog三组循环使用,所以它的大小可以确定,而归档日志是redologCP,它的大小不断的增长,所以我们要定期把归档日志取出来,以免硬盘被占满。
查看当前的归档状态
SQL> archive log list
Database log mode              Archive Mode
Automatic archival                Enabled
Archive destination                /u01/oradata/denver/archive
Oldest online log sequence          16
Next log sequence to archive         18
Current log sequence               18
SQL> ! ls /u01/oradata/denver/archive
1_10.dbf  1_12.dbf  1_14.dbf  1_16.dbf  1_1.dbf  1_3.dbf  1_5.dbf  1_7.dbf  1_9.dbf
1_11.dbf  1_13.dbf  1_15.dbf  1_17.dbf  1_2.dbf  1_4.dbf  1_6.dbf  1_8.dbf
现在为归档模式,当前日志序列为18,到归档日录下可看到有17个归档文件,当第18个归档后,系统会自动建第18个归档文件,
如下,手工切换redolog,从而触发arch进程
SQL> alter system switch logfile;
System altered.
 
SQL> archive log list
Database log mode              Archive Mode
Automatic archival                Enabled
Archive destination                /u01/oradata/denver/archive
Oldest online log sequence          17
Next log sequence to archive        19
Current log sequence              19
SQL> ! ls /u01/oradata/denver/archive
1_10.dbf  1_12.dbf  1_14.dbf  1_16.dbf  1_18.dbf  1_2.dbf  1_4.dbf  1_6.dbf  1_8.dbf
1_11.dbf  1_13.dbf  1_15.dbf  1_17.dbf  1_1.dbf   1_3.dbf  1_5.dbf  1_7.dbf  1_9.dbf

3.使用logminer

下面以”y”用户对表”t”执行update操作为例,查看如何使用logminer分析DML操作
原理:当用户对表操作后,操作过程先记录在当前使用的redolog中,通过分析当前redolog可以查看用户都作了什么操作,或操作完成后手动切换redolog,此时redolog复制到archivelog中,通过分析archivelog也可以查到用户所做的操作
本文介绍从archivelog中查看用户做过的操作
表如下所示
SQL> select * from t;
         I          V
---------- --------- ---------------- -
         1          2
         3          4
        15         10
1.在系统上建一个目录utlfile
[oracle@oracle ~]$ pwd
/home/oracle
[oracle@oracle ~]$ mkdir utlfile
2.设置utl_file_dir参数
SQL> alter system set utl_file_dir='/home/oracle/utlfile' scope=spfile;
SQL> shutdown immediate
SQL> startup
3.生成数据字典,
如果oracle没装logminers,先安装
SQL> @$ORACLE_HOME/rdbms/admin/dbmslm.sql
Package created.
Grant succeeded.
SQL> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql
Package created.
生成数据字典
SQL> execute dbms_logmnr_d.build('dirt.ora','/home/oracle/utlfile',dbms_logmnr_d.store_in_flat_file)
PL/SQL procedure successfully completed.
4.对表进行update(其它操作也可以)
SQL> update t set i=100 where v=2;
SQL> update t set v=0 where i=15;
SQL> commit;
SQL> select * from t;
         I          V
---------- ----------
       100          2
         3          4
        15          0
5.将要分析的日志文件加入要分析的log list
现在切换logfile然后我们分析最近生成的archivelog
SQL>  alter system switch logfile;
SQL> ! ls /u01/oradata/denver/archive
1_10.dbf  1_13.dbf  1_16.dbf  1_19.dbf  1_3.dbf  1_6.dbf  1_9.dbf
1_11.dbf  1_14.dbf  1_17.dbf  1_1.dbf   1_4.dbf  1_7.dbf
1_12.dbf  1_15.dbf  1_18.dbf  1_2.dbf   1_5.dbf  1_8.dbf
1_19.dbf加入到log list
SQL> execute dbms_logmnr.add_logfile('/u01/oradata/denver/archive/1_19.dbf',dbms_logmnr.new);
 
PL/SQL procedure successfully completed.
# 如果要添加更多的日志
execute dbms_logmnr.add_logfile('/u01/oradata/denver/archive/1_19.dbf',dbms_logmnr. addfile );
# 查看添加的日志
SQL> select * from v$logmnr_logs;
6.执行分析:
SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/utlfile/dirt.ora')
 
PL/SQL procedure successfully completed.
7.查询
SQL> col seg_name format a10
SQL> col sql_redo format a55
SQL> select seg_name,sql_redo,timestamp from v$logmnr_contents where seg_name='T';
 
SEG_NAME   SQL_REDO                                                TIMESTAMP
---------- ------------------------------------------------------- --------- -----------------------------------------------
T          update "SYS"."T" set "I" = '100' where "I" = '1' and RO                 05-MAY-09
           WID = 'AAAHwwAABAAALmaAAA';
 
T          update "SYS"."T" set "V" = '0' where "V" = '10' and ROW               05-MAY-09
           ID = 'AAAHwwAABAAALmaAAC';
可见对表T的操作被找出来了,如果是用户误操作就可以根据查出来的语名反推出去了
8. 关闭
当查找完成后应当把v$logmnr_contents关闭,否定它一直保存在内存中,浪费资源
SQL> execute dbms_logmnr.end_logmnr;
 
PL/SQL procedure successfully completed.
 




本文转自 vfast_chenxy 51CTO博客,原文链接:http://blog.51cto.com/chenxy/170340,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
5月前
|
存储 运维 监控
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
|
5月前
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
479 117
|
4月前
|
自然语言处理 监控 安全
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
阿里云可观测官方发布了Observable MCP Server,提供了一系列访问阿里云可观测各产品的工具能力,包含阿里云日志服务SLS、阿里云应用实时监控服务ARMS等,支持用户通过自然语言形式查询
507 0
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
|
3月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
6月前
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
262 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
6月前
|
SQL 存储 自然语言处理
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
122 1
|
7月前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
152 0
|
SQL 监控 Oracle
Oracle日志挖掘之LogMiner
Oracle日志挖掘之LogMiner 官方文档地址:http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL019 众所周知,所有对用户数据和数据字典的改变都记录在Oracle的Redo Log中,因此,Redo Log包含了所有进行恢复操作所需要的信息。
1941 0
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
2月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。

推荐镜像

更多