当前位置:数据库 > Oracle >>

ORACLE日志挖掘器(LogMiner)

ORACLE日志挖掘器(LogMiner)
 
--日志挖掘器(LogMiner)
    日志挖掘器的3个主要组成部分:v$logmnr_contents视图、pl/sql 的 的dbms_logmnr 、dbms_logmnr_d
     v$logmnr_contents视图是 LogMiner 挖掘日志的接口,每当该视图被访问时,重做日志就会被读取,即挖掘日志实际上就是对
        该视图的查询操作,前提是必须启动日志挖掘会话。
        该视图包含的其中重要的字段有:
            1、sql_redo、2、sql_undo、3、xid、4、operation、5、seg_owner、6、seg_name、7、row_id、8、username
            9、os_username、10、machine_name、11、session_info、12、info、13、scn、14、timestamp
            
      LogMiner的基本元素: 源数据库、挖掘数据库(可以是源库也可以是其他库)、LogMiner字典、重做日志
        挖掘数据库指 启动挖掘会话的数据库,如果挖掘库与源库不是同一个数据库,那么其硬件平台和字符集必须与源库一致
            或字符集必须是源库的超集 即源库的字符集是 挖掘库的一个子集。挖掘库的版本还必须大于等于源库的版本。
         
        LogMiner字典 是指 将重做记录中的ORACLE内部对象翻译为可读信息的转换字典。在重做记录中被更改的对象被记载为编号形式,
            变更的数据被记载为ORACLE数据类型的编码形式。如无LogMiner字典的帮助,编号形式以 十进制数字显示,编码形式以十六
            进制显示。
            
        重做日志 指 由源库产生的 归档日志或在线日志。
        
        
        LogMiner 字典的位置有两种: 源库日志字典、源库在线数据字典、将字典载入一个文本文件。它们不能同时使用。
              源库日志字典是指 调用 dbms_logmnr_d.build 存储过程 将 LogMiner 字典提取至源库的重做日志里。
                sql>begin  dbms_logmnr_d.build(options=>dbms_logmnr_d.store_in_redo_logs) end;
               查看v$archived_log视图 可以确定 LogMiner 字典在哪些日志中。
               select sequence#,name ,dictionary_begin,dictionary_end
                     from v$archied_log  where dictionary_begin='YES' or dictionary_end='YES';
               如果一个归档日志文件中无法容纳LogMiner字典,Oracle会采用多个连续的归档日志作为LogMiner字典的载体。
               日志字典的好处:1、不要求挖掘库和源库是同一个库、2、DDL命令可以更新字典,这样挖掘出来的信息能够完全体现
                                            DDL命令操作的结果。
                                            
               源库在线数据字典:直接在启动挖掘会话时通过  start_logmnr 存储过程的 options 参数指定即可。
                   源库数据字典好处:挖掘库与源库为同库;DDL命令无法更新字典;
                   
              字典载入文本文件:首先将 utl_file_dir 初始化参数指定一个路径;然后重启实例;最后调用 dbms_logmnr_d.build存储过程
                                                时为 options 参数指定 store_in_flat_file常量。
                              alter system set utl_file_dir='path' scope=spfile;
                              startup force;
                              begin dbms_logmnr_d.build(dictionary_filename=>'name',
                                                                        dictionary_location=>'path',
                                                                        options=>dbms_logmnr_d.store_in_flat_file); end;
                                                                        
            注册重做日志
                分为:手动注册、自动注册
                手动注册:即手动注册需要重做日志使用 dbms_logmnr.add_logfile 存储过程。可以注册多个源库日志,并且日志不一定需要
                                    按照序号依次添加,日志序列号也不必是连续的。
                                  begin
                                    dbms_logmnr.add_logfile(logfilename=>'path',
                                    options=>dbms_logmnr.addfile);
                                   end;
                                   
                               挖掘库与源库为同库:
                               begin
                                for rec in (select name from v$archied_log where resetlogs_change#=(select resetlogs_change# from v$database) and name is not null)
                                loop
                                    DBMS_LOGMNR.ADD_LOGFILE(logfilename=rec.name,options=>dbms_logmnr.addfile);
                                    end loop;
   
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,