2019独角兽企业重金招聘Python工程师标准>>>

今日收了预警邮件,发生archived log增长过快的现象。无法确定问题原因,使用LogMiner对archived log进行了分析。操作过程纲要主要来源与网络,对我来说是个学习的过程,此文记录了其详细操作。

在操作之前,先大致了解LogMiner的用途:

日志文件中存放着所有进行数据库恢复的数据,记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句。

在Oracle 8i之前,Oracle没有提供任何协助数据库管理员来读取和解释重作日志文件内容的工具。系统出现问题,对于一个普通的数据管理员来讲,唯一可以作的工作就是将所有的log文件打包,然后发给Oracle公司的技术支持,然后静静地等待Oracle 公司技术支持给我们最后的答案。然而从8i以后,Oracle提供了这样一个强有力的工具--LogMiner。

LogMiner工具既可以用来分析在线,也可以用来分析离线日志文件,既可以分析本身自己数据库的重作日志文件,也可以用来分析其他数据库的重作日志文件。

总的说来,LogMiner工具的主要用途有:
1.跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能。
2.回退数据库的变化:回退特定的变化数据,减少point-in-time recovery的执行。
3.优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式。

问题表现:
$ ls -lth
total 729M
-rw-r----- 1 oracle oinstall 39M Aug  2 11:22 1_1937_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 11:20 1_1936_775334859.dbf
-rw-r----- 1 oracle oinstall 38M Aug  2 11:17 1_1935_775334859.dbf
-rw-r----- 1 oracle oinstall 38M Aug  2 11:15 1_1934_775334859.dbf
-rw-r----- 1 oracle oinstall 38M Aug  2 11:12 1_1933_775334859.dbf
-rw-r----- 1 oracle oinstall 40M Aug  2 11:09 1_1932_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 11:07 1_1931_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 11:05 1_1930_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 11:03 1_1929_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 11:00 1_1928_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 10:58 1_1927_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 10:56 1_1926_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 10:53 1_1925_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 10:51 1_1924_775334859.dbf
-rw-r----- 1 oracle oinstall 38M Aug  2 10:49 1_1923_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 10:47 1_1922_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 10:44 1_1921_775334859.dbf
-rw-r----- 1 oracle oinstall 38M Aug  2 10:42 1_1920_775334859.dbf
-rw-r----- 1 oracle oinstall 39M Aug  2 10:39 1_1919_775334859.dbf
......

archived logs增长过快。

操作过程:

1.设置日期格式

SQL> show parameter nls_date_format;NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
nls_date_format                      string
DD-MON-RR
SQL> select sysdate from dual;SYSDATE
---------------
02-AUG-12SQL> alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;System altered.SQL>

2.添加补充日志

2.1 查看是否开启了补充日志

SQL> select SUPPLEMENTAL_LOG_DATA_MIN,SUPPLEMENTAL_LOG_DATA_PK,SUPPLEMENTAL_LOG_DATA_UI from v$database;SUPPLEMENTAL_LOG_DATA_MI SUPPLEMEN SUPPLEMEN
------------------------ --------- ---------
NO                       NO        NO

2.2 开启补充日志

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;Database altered.SQL>

3.开启归档(生产环境是必须开启的,此处略过)

3.1 archive log 存放路径

SQL> show parameter log_Archive_dest_;NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
log_archive_dest_1                   string
LOCATION=/opt/archivelog
log_archive_dest_10                  string
......

4.安装LogMiner工具
LogMiner工具实际上是由两个新的PL/SQL内建包(DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四个V$动态性能视图(视图是在利用过程DBMS_LOGMNR.START_LOGMNR启动LogMiner时创建,即:v$logmnr_dictionary、v$logmnr_parameters、v$logmnr_logs、v$logmnr_contents)组成。在使用LogMiner工具分析redo log文件之前,可以使用DBMS_LOGMNR_D 包将数据字典导出为一个文本文件。该字典文件是可选的,但是如果没有它,LogMiner解释出来的语句中关于数据字典中的部分(如表名、列名等)和数值都将是16进制的形式,我们是无法直接理解的。
要安装LogMiner工具,必须首先要运行下面这样两个脚本,这两个脚本必须均以SYS用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
$ORACLE_HOME/rdbms/admin/dbmslm.sql
$ORACLE_HOME/rdbms/admin/dbmslmd.sql
$ORACLE_HOME/rdbms/admin/dbmslms.sql

SQL> @/opt/oracle/product/11.2.0/rdbms/admin/dbmslm.sql
Package created.
Grant succeeded.
Synonym created.SQL>SQL> @/opt/oracle/product/11.2.0/rdbms/admin/dbmslmd.sql
Package created.
Synonym created.SQL> @/opt/oracle/product/11.2.0/rdbms/admin/dbmslms.sql
Package created.
No errors.
Grant succeeded.SQL>

5.使用LogMiner工具

5.1、设置参数UTL_FILE_DIR

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

在ORACLE8I的时候,首先在init.ora初始化参数文件中,指定数据字典文件的位置,也就是添加一个参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:

SQL> show parameter UTL_FILE_DIR ;NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
utl_file_dir                         stringSQL>SQL> alter system set UTL_FILE_DIR ='/tmp/test' scope=spfile;SQL> shutdown immediate
SQL> STARTUP

ORACLE9I后,推荐使用SPFILE启动,可以动态调整参数:

SQL> show parameter spfile;NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
spfile                               string
/opt/oracle/product/11.2.0/dbs
/spfileDCGF.oraSQL> show parameter utl_file_dir;NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
utl_file_dir                         string
/tmp/test
SQL>

5.2创建数据字典文件

$ vi dbms_logmnr_d.build.txtBEGIN
dbms_logmnr_d.build(
dictionary_filename => 'logminer_dict.ora',
dictionary_location => '/tmp/test');
END;
/
SQL> conn / as sysdba
Connected.
SQL> @dbms_logmnr_d.build.txtPL/SQL procedure successfully completed.SQL>

5.3 创建要分析的日志文件列表
Oracle的重作日志分为两种,在线(online)和离线(offline)归档日志文件,我这里主要分析归档日志,在线日志原理一样。

----离线(offline)归档日志文件

SQL> BEGINdbms_logmnr.add_logfile('/opt/archivelog/1_1955_775334859.dbf',DBMS_LOGMNR.new );end;/PL/SQL procedure successfully completed.SQL>

###说明:
dbms_logmnr.new --用于建一个日志分析表
dbms_logmnr.addfile --用于加入用于分析的日志文件
dbms_logmnr.removefile --用于移出,用于分析的日志文件

5.4启动LogMiner进行分析
5.4.1无限制条件

SQL> BEGINdbms_logmnr.start_logmnr(dictfilename => '/tmp/test/logminer_dict.ora');END;/PL/SQL procedure successfully completed.SQL>

5.4.2 限制条件

BEGIN
dbms_logmnr.start_logmnr(
dictfilename => '/tmp/test/logminer_dict.ora',
StartTime => to_date('2012-08-02 16:40:26','YYYY-MM-DD HH24:MI:SS'),
EndTime => to_date('2012-08-02 16:44:41','YYYY-MM-DD HH24:MI:SS ')
);
END;
/

5.5 观察分析结果(v$logmnr_contents)

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

SQL> SELECT sql_redo FROM v$logmnr_contents;

6.关闭LogMiner

可以把v$logmnr_contents视图的内容创建一个永久的数据库表将非常有帮助

SQL> create table logmnr_contents as select * from v$logmnr_contents;

当完成了重做日志的检查,运行dbms_logmnr 中的end_logmnr

SQL> execute dbms_logmnr.end_logmnr();

参考来源:

http://blog.csdn.net/yangzhawen/article/details/7525283

http://www.cnblogs.com/einyboy/archive/2012/06/16/2551972.html

转载于:https://my.oschina.net/liuliufa/blog/70477

使用Oracle LogMiner分析archived log相关推荐

  1. toad查看oracle的plsql包,Oracle logminer 分析redo log(TOAD与PLSQL)

    Oracle logminer 分析redo log Oracle 11g r2 RAC centos 6.5 设置时间格式 select to_char(sysdate,'yyyy-mm-dd hh ...

  2. oracle表分析都分析什么,oracle表分析

    analyze table tablename compute statistics; analyze index indexname compute statistics; 对于使用CBO很有好处, ...

  3. oracle的日志分析工具,oracle日志分析工具LogMiner使用(实战)

    要安装LogMiner工具,必须首先要运行下面这样两个脚本,这两个脚本必须均以SYS用户身份运行.其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件.第二个脚本用来创建DBMS_LO ...

  4. plsql查看oracle归档日志,Oracle 日志分析工具LogMiner的安装使用

    测试环境: OS:RedHat 5.5 DB:Oracle11g logminer作为相关的日志分析工具集成与oracle中,我们可通过该工具清楚的分析重做相关日志和归档日志中的所有事物变化,并且可以 ...

  5. oracle logminer全解析

    今天写篇原创的,把在工作中遇到的logminer问题总结下 (1)简介: logminer 工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其 ...

  6. Oracle Logminer 做数据恢复 说明示例

    在IBM DBA 小荷的blog上看到一个用Logminer 做数据恢复的例子. 虽然对Logminer 也了解一点,但是用Logminer 做恢复还真没用过,所以也测试一下. 原文链接地址如下: 客 ...

  7. Oracle Logminer 说明

    一.  Logminer 说明 Oracle LogMiner 的官网说明: Using LogMiner to Analyze Redo Log Files http://download.orac ...

  8. 3、使用Oracle Logminer同步Demo

    使用Oracle Logminer同步Demo 1 Demo介绍 1.1 Demo设想 前面介绍了Oracle LogMiner配置使用以及使用LogMiner进行解析日志文件性能,在这篇文章中将利用 ...

  9. oracle logminer java_Oracle logminer

    一.logminer的用途日志文件中存放着所有进行数据库恢复的数据,记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句.logminer 工具即可以用来分析在线,也可以用来分析离线日 ...

最新文章

  1. Oracle weblogic线程Thread status分类和总结
  2. Oracle的逻辑结构(表空间、段、区间、块)——Oracle数据块(一)
  3. Sql注入式攻击和一些防范技巧
  4. Team Task:DP
  5. Qt编程之QTreeWidget使用方法
  6. 6 有序集合ZSet(Sorted Set)
  7. STM32 的 BOOT 概述
  8. VTK:Utilities之FilenameFunctions
  9. 操作系统线程互斥,锁死机制的简单介绍
  10. sftp服务器存放机密文件,cetos 6.6搭建sftp服务
  11. 移动Web—CSS为Retina屏幕替换更高质量的图片
  12. 协程(Python)
  13. 操作系统学习笔记(一) 进程与线程模型
  14. spss20安装许可证代码_SPSS 22下载安装教程
  15. 苹果4如何添加时间插件_越狱后如何备份已添加的插件以及源?
  16. Premiere Elements 2021 安装教程【电脑配置要求较高】
  17. 你真的了解行盒模型吗?
  18. X3D代码理解之demo(cfg)
  19. 帝豪gs车机系统wince_用销量告诉你答案 选帝豪GS准没错
  20. EventBus介绍

热门文章

  1. SLAM学习--2D激光SLAM--入门学习
  2. tiny cc在云服务centos上运行
  3. 中南林科大c语言程序设计,2017年中南林业科技大学计算机与信息工程学院802C语言与数据结构之C程序设计考研题库...
  4. php pdo.dll不存在,php pdo.dll没有找到怎么办
  5. GetLBText()和GetWindowText()区别
  6. java 找不到方法,已经定义的方法找不到
  7. 用友二次开发_详解ERP系统与MES系统的数据传递——永康用友
  8. linux 微信 开源,Makefile · 李光春/微信开发者工具 Linux版 - Gitee.com
  9. 第四范式获信通院尖峰开源项目及开源人物双料大奖
  10. 【推荐系统】双塔模型中的负采样