环境:
OS:Red Hat Linux As 5
DB:10.2.0.4
 
我们知道数据的任何操作都会记录到redo日志文件中,在8i以前我们是没有办法查看redo文件里面的内容的,但在9i以后,Oracle推出了logminer,通过logminer分析我们可以很清楚查看Oracle所做的任何操作,比如我删除一个表,在logminer中可以看到很详细的操作记录.
 
1.使用logminer需要运行如下两个文件
$ORACLE_HOME/rdbms/admin/dbmslm.sql
$ORACLE_HOME/rdbms/admin/dbmslmd.sql
SQL> connect sys/sys as sysdba 
Connected.
SQL> @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/dbmslm.sql
Package created.
SQL> @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/dbmslmd.sql
Package created.
 
2.修改初始化参数utl_file_dir,指定分析数据的存放处
SQL>alter system set utl_file_dir='/u01/logmine_dir' scope=spfile;
SQL>shutdown immediate
SQL>startup
 
3.创建数据字典文件
begin
sys.dbms_logmnr_d.build(dictionary_filename =>'mylogmine.ora',dictionary_location =>'/u01/logmine_dir',options>=>dbms_logmnr_d.store_in_flat_file);
end;
mylogmine.ora是给字典文件起的文件名(可任意),字典文件的作用是将Oralce内部处理使用的对象编码和内部数据类型转换为可读的对象名称和类型.例如这个SQL
INSERT INTO HR.JOBS(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)  VALUES('IT_WT','Technical Writer', 4000, 11000);
若没有创建数据字典文件的文件的话,logminer出来的记录内容如下:
insert into "UNKNOWN"."OBJ# 45522"("COL 1","COL 2","COL 3","COL 4") values
(HEXTORAW('45465f4748'),HEXTORAW('546563686e6963616c20577269746572'),
HEXTORAW('c229'),HEXTORAW('c3020b'));
 
4.这个时候我们使用某个用户登录数据库后删除某个表
SQL>connect app_user/hxl
SQL>drop table tb_test;
SQL>conect / as sysdba
SQL>alter system switch logfile;
这个时候会产生一个归档日志文件,刚才删除表的操作就在这个文件里
 
5.分析归档日志
创建列表
begin
  sys.dbms_logmnr.add_logfile(LogFileName => '/u01/arch_log/1_13_787769576.dbf',
                              Options     => dbms_logmnr.new);
end;
这里的归档日志文件1_13_787769576.dbf就是我们刚才switch生成的日志文件.
当然还可以添加其他归档日志,看分析的需要,我们这里只分析一个归档日志文件.
添加其他归档日志分析的过程如下:
begin
  dbms_logmnr.add_logfile(LogFileName => '/u01/arch_log/1_12_787769576.dbf',
                          Options     => dbms_logmnr.addfile);
end;
6.开始使用LogMiner进行日志分析
 
分析整个日志文件(没有任何条件)
begin
  sys.dbms_logmnr.start_logmnr(DictFileName =>'/u01/logmine_dir/mylogmine.ora');
end;
 
若大概知道某个操作发生的时间,可以按照需要时间分析的过程如下:
begin
  sys.dbms_logmnr.start_logmnr(DictFileName =>'/u01/logmine_dir/mylogmine.ora',
                              startTime => to_date('2012-07-04 15:00:00','YYYY-MM-DD HH24:MI:SS'),
                              endTime => to_date('2012-07-04 16:00:00','YYYY-MM-DD HH24:MI:SS')
                              );
end;
我们这里分析的是整个日志文件,分析完成后,查看V$LOGMNR_CONTENTS试图的内容就是我们刚才分析得到的内容.注意V$LOGMNR_CONTENTS的内容是保留在PGA中的,查看这个试图需要在跟执行分析的过程在一个session中,否则在另外开一个session是查看不到的,而且会报ORA-01306错误.
从V$LOGMNR_CONTENTS视图中可以查看得到我们刚才删除表的操作:
SQL>select sql_redo from V$LOGMNR_CONTENTS 
    where upper(sql_redo) like '%TB_TEST%'
SQL_REDO
-----------------------------------
ALTER TABLE "APP_USER"."TB_TEST" RENAME TO "BIN$w/uEl9lUoujgQAB/AQAW2w==$0" ;
"drop table tb_test AS ""BIN$w/uEl9lUoujgQAB/AQAW2w==$0"" ;"
 
7.结束分析
begin
  sys.dbms_logmnr.end_logmnr;
end;
 
使用logminer的一些说明:
1.分析日志所在的数据库平台必须跟产生日志的数据库平台保持一致;
2.分析日志所在的数据库可以跟产生日志的数据库完全独立,或者是两者是同一个数据库;
3.分析日志所在的数据库的版本比如高于产生日志的数据库的版本;
4.分析日志所在的数据库的字符集必须跟产生日志的数据库的字符集保持一致;
5.logminer数据字典文件必须在产生日志的数据库生成.
 
-- The End --

如何使用logminer查看日志内容相关推荐

  1. 如何快速查看日志内容

    一.cat 选项与参数: -A :相当于-vET的整合,可列出一些特殊字符而不是空白而已: -b :列出行号,仅针对非空白行做出行号显示,空白行不标行号: -E :将结尾的换行符$显示出来: -n : ...

  2. Linux 实时查看日志文件的 4 种方法

    来源 | GOPS 全球运维大会 2021 · 上海站 在 Linux 下如何才能实时查看日志内容呢?有很多工具可以帮助我们在文件持续修改的同时输出文件内容,最常用的莫过于 tail 命令了. 1. ...

  3. log4日志内容换行_Linux 下 4 种实时监控日志文件的方法,总有一种适合你

    「 读者福利!2 TB 各类技术资源免费赠送 」 在 Linux 下如何才能实时查看日志内容呢?有很多工具可以帮助我们在文件持续修改的同时输出文件内容,最常用的莫过于 tail 命令 了. 1. ta ...

  4. linux查看文件内容常用命令

    一.查看文件类型 1.file命令: file file_name 二.查看文本内容 查看全部文本内容: 1.cat命令 cat file_name #输出所有文本内容3.cat -n file_na ...

  5. linux 日志内容过滤

    ​ 需求:之前有某个项目忘记配置tomcat日志切割,导致日志文件太大,无法通过正常方法查看日志内容. 查询2022年1月5日,凌晨1点到下午15:30分之间的所有日志,*号代表任何文字 sed -n ...

  6. linux view查看日志命令,linux查看日志文件内容命令tail、cat、tac、head、echo、vi

    linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log 你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, --------- ...

  7. java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...

    [Java教程][Linux]linux查看日志文件内容命令tail.cat.tac.head.echo 0 2017-11-14 12:00:29 linux查看日志文件内容命令tail.cat.t ...

  8. mysql查看binlog日志内容

    2019独角兽企业重金招聘Python工程师标准>>> (一) binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变,并以二进制的形式保存在磁盘中: 它可以用来查 ...

  9. linux view查看日志命令,【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...

    linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log 你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, --------- ...

最新文章

  1. csv文件与字典,列表等之间的转换小结【Python】
  2. 好久没有看到这么有建设性德文章,由衷地赞叹《知其所以然地学习(以算法学习为例)》-By 刘未鹏(pongba)
  3. qt系统托盘显示、无主窗体
  4. JavaScript事件绑定
  5. Junit4小技巧-测试基类
  6. 展示29个美丽的iPhone壁纸
  7. (转) shiro权限框架详解04-shiro认证
  8. [转贴] PHP 编程标准
  9. Linux学习总结(28)——Linux主机加固
  10. 带你彻底明白 Android Studio 打包混淆
  11. Codeforces Round #723 (Div. 2)B. I Hate 1111(完全背包)
  12. 苹果Mac重复文件清理工具:​​​​Tidy Up
  13. 系列教程丨用 Docker 探索开源软件 —— Elasticsearch(一)
  14. 未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。
  15. .reg注册表文件的编写
  16. 学了这么久的编程,编程语言创始人你知道几个?
  17. RST 和 Markdown
  18. Right-BICEP要求设计四则运算2
  19. 前端面试题:如何画一条0.5px的线
  20. DELL笔记本BIOS密码破解

热门文章

  1. pdm生成mysql sql语句_如何用Powerdesigner的PDM生成数据库
  2. 以股票RSI指标为例,学习Python发送邮件功能(含RSI指标确定卖点策略)
  3. [TCP/IP] 三次握手过程中有哪些不安全性
  4. 解析xml数据存入bean映射到数据库的 需求解决过程
  5. [BZOJ 4827][Hnoi2017]礼物
  6. bzoj 1684: [Usaco2005 Oct]Close Encounter【数学(?)】
  7. Spring MVC上传文件原理和resolveLazily说明
  8. ArcGIS Android工程迁移到其他电脑不能打开的问题
  9. sqlite 数据类型 全面
  10. java请模拟出双重定时器_Java多线程基础 - osc_czmaebyq的个人空间 - OSCHINA - 中文开源技术交流社区...