zoukankan      html  css  js  c++  java
  • LogMiner and supplemental logging

    1.0 logminer 简介

      logminer是oracle自带的一种工具。其实它就是一系列的可以在SQLPLUS中运行的package。logminer可以挖掘oracle的redo log。简单的说,就是可以通过logminer阅读redo log。本节包括以下内容

    1.1 logminer组成介绍

      logminer的使用环境中包含如下4个元素:

    LogMiner使用环境中的4个元素
    源数据库
    源数据库就是生成redo log的数据库。这些redo log将被logminer挖掘读取。
    
    redo log文件
    这里的redo log文件就是源数据库生成的redo log。logminer将会读取这些文件
    
    logminer字典
    在redo log存储的信息都是以oracle内部标示方式标示的。比如说,order这个表,在redo log可能会被标记成002.那么用logminer读取出来的结果页是002.这给使用者造成了不便。 而logminer字典就是解决这个问题的。通过logminer字典可以把这些难以理解的标示转化成易懂的数据。
        
    mining数据库
    就是运行logminer的数据库。因为我们知道logminer是一系列的pl/sql package,所以需要有个数据库来运行它们。 源数据库也可以当做是mining数据库。

       所以,这4者的关系基本就是,源数据库生成redo log文件, redo log数据文件被传递给mining数据库。 logminer读取redo log文件并借助logminer字典把信息翻译成人类能理解的信息。

    1.2 logminer使用简介

      这里主要介绍使用logminer的大概流程。

    使用logminer的大概流程
    1. 指定logminer字典
    在这一步可以通过DBMS_LOGMNR_D.BUILD 这个存储过程来指定 logminer字典,也可以在第三步,启动logminer的时候指定
    
    2. 指定需要读取的redo log
    在这一步可以通过DBMS_LOGMNR.ADD_LOGFILE来指定redo log文件。也可以在第三步启动logminer的时候指定
    
    3。启动logminer
    使用这个存储过程DBMS_LOGMNR.START_LOGMNR
    
    4. 查询v$logmnr_content视图
    这个视图存储着刚刚logminer挖掘到的信息

    2.0 logminer字典 

      logminer字典是用来把redo log的一些不易懂信息转化成人类可读信息的。 logminer字典有三种方式指定:

    logminer字典的三种生成方式
    1. 使用oracle的数据字典。
    如果你的源数据库和mining数据库是同一个数据库。那么也许你就可以使用当前的oracle数据字典来做logminer字典。 但注意,这里说的是也许。也就是说,不是一定可以这么做的。 那么什么时候不可以呢?  如果表的列定义改变了,这种方式就不可取了。因为这时候oracle的数据字典信息也改变了,但是redo log中存储了表改变之前的信息。用现在的数据字典去翻译改变之前的表,很显然是不可能的。
    
    2. 生成一个logminer 字典并放入redo log
    如果你的mining数据库和源数据库不是同一个,很显然你不能用第一种方式。如果表的定义会改变,很显然你也不能用第一种方式。这两种情况你需要生成一个logminer字典并存入redo log。
    
    3. 生成一个logminer字典存入文件
    这只是为了向以前版本的oracle兼容

    3.0 启动logminer

    启动logminer要使用 DBMS_LOGMNR.START_LOGMN这个存储过程。在启动的时候可以使用如下option

    4.0 查询V$LOGMNR_CONTENTS

      logminer查到的信息存储在v$logmnr_contents这个表中。本节包含以下内容:

    4.1 logminer中可以查到什么内容

    logminer中可以查到什么内容
        对数据库更改的类型 INSERT, UPDATE, DELETE, 或者 DDL (OPERATION column).
    
        发生更改时刻的SCN (SCN column).
    
        commit更改时刻的SCN (COMMIT_SCN column).
    
        Transcation (XIDUSN, XIDSLT, and XIDSQN columns).
    
        表名以及表的用户名 (SEG_NAME and SEG_OWNER columns).
    
        提交SQL语句的用户名 (USERNAME column).
    
        如果是一条DML生成的redo,这里会记载一条DML语句。该语句和真实提交的DML语句不完全相同,但运行的结果是一样的 (SQL_REDO column).
    
        如果是一条DDL生成的redo,这里会记载一条DDL语句。该语句和真实提交的DDL语句完全相同 (SQL_REDO column).
    
        如果是一条DML语句生成的redo,这里会记载着其对应的UNDO语句 (SQL_UNDO column).
    
        如果是一条DDL生成的redo,这里会是NULL(SQL_UNDO column).

    4.2 v$logmnr_contents的内容是怎么来的

     v$logmnr_content这个视图与其他的系统视图不一样。其它的视图存储的数据是在oracle的表中存储的。而该视图的数据其实存储在redo log文件上。只有当你启动了logminer来挖掘redo log后,你才能查询这个视图。在你查询的时候,该视图才会包含数据。为了更有效率的查询该视图的内容,你可以考虑创建一个表,然后把该视图的内容存储进去。这样就可以采用oracle对于表的查询优化。

    4.3 使用这个视图的一些窍门

  • 相关阅读:
    「模板」 树套树
    [Luogu 3701] 「伪模板」主席树
    「模板」 可持久化平衡树
    「模板」 割点
    [Luogu 2596] ZJOI2006 书架
    省选有感。(不是游记)
    [Luogu 2604] ZJOI2010 网络扩容
    MySql聚簇索引与非聚簇索引的区别
    四层负载均衡和七层负载均衡的区别
    Redis利用Pipeline加速查询速度的方法
  • 原文地址:https://www.cnblogs.com/kramer/p/3069019.html
Copyright © 2011-2022 走看看