浅谈Oracle日志分析工具LogMiner
- 格式:pdf
- 大小:94.57 KB
- 文档页数:1
作为Oracle DBA,我们有时候需要追踪数据误删除或用户的恶意操作情况,此时我们不仅需要查出执行这些操作的数据库账号,还需要知道操作是由哪台客户端(IP地址等)发出的。
针对这些问题,一个最有效实用而又低成本的方法就是分析Oracle数据库的日志文件。
本文将就Oracle日志分析技术做深入探讨。
一、如何分析即LogMiner解释从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,Oracle数据库的所有更改都记录在日志中,但是原始的日志信息我们根本无法看懂,而LogMiner就是让我们看懂日志信息的工具。
从这一点上看,它和tkprof差不多,一个是用来分析日志信息,一个则是格式化跟踪文件。
通过对日志的分析我们可以实现下面的目的:1、查明数据库的逻辑更改;2、侦察并更正用户的误操作;3、执行事后审计;4、执行变化分析。
不仅如此,日志中记录的信息还包括:数据库的更改历史、更改类型(INSERT、UPDATE、DELETE、DDL等)、更改对应的SCN号、以及执行这些操作的用户信息等,LogMiner在分析日志时,将重构等价的SQL语句和UNDO语句(分别记录在V$LOGMNR_CONTENTS视图的SQL_REDO和SQL_UNDO中)。
这里需要注意的是等价语句,而并非原始SQL语句,例如:我们最初执行的是“delete a where c1 <>'cyx';”,而LogMiner重构的是等价的6条DELETE语句。
所以我们应该意识到V$LOGMNR_CONTENTS视图中显示的并非是原版的现实,从数据库角度来讲这是很容易理解的,它记录的是元操作,因为同样是“delete a where c1 <>'cyx';”语句,在不同的环境中,实际删除的记录数可能各不相同,因此记录这样的语句实际上并没有什么实际意义,LogMiner重构的是在实际情况下转化成元操作的多个单条语句。
ORACLE LOGMINER 步骤及DROP后的表如何LOGMINER编制许能飞,谭丽审核吴劲松批准王剑虎上海宝信软件股份有限公司2006年06月01日文档控制修改历史:日期作者或修改人版本号版本描述(修改记录)2005-04-04 许能飞,谭丽V1.0 没有前期版本2006-05-25 许能飞2006-06-01 许能飞分发记录:拷贝号姓名部门目录一、数据库LOGMINER分析步骤 (2)二、补充DROP 后的表如何LOGMINER (3)一、数据库LOGMINER分析步骤最近一钢开发数据库发现有相互之间改数据,但又不知道是谁的事情,为此ORACLE提供LOGMINER 可供分析,具体步骤为:1.set UTL_FILE_DIR = /oracle/logminer in initfile //* 或者设得和ARCIVE LOG的目录一样也可以2.build dictionary.ora file:EXECUTE DBMS_LOGMNR_D.BUILD( DICTIONARY_FILENAME =>'dictionary.ora', DICTIONARY_LOCATION => '/oracle/logminer');// *已经做了;记得RAC 要以单机板开起BUILD3.COPY 要分析的ARCHIVE LOG 到/ORACLE/LOGMINER 目录4.加进去要分析的LOG:EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/oracle/logminer/LOG_242_T1.arc',OPTIONS => DBMS_LOGMNR.NEW); //first oneEXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/oracle/logminer/LOG_242_T1.arc',OPTIONS => DBMS_LOGMNR.addfile); //add from second log file5.开始分析:EXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => '/oracle/logminer/dictionary.ora',STARTTIME => TO_DATE('25-Jun-2003 9:10:00', 'DD-MON-YYYY HH24:MI:SS'),ENDTIME => TO_DATE('30-Jun-2003 10:55:00', 'DD-MON-YYYY HH24:MI:SS'));OR:Execute DBMS_LOGMNR.START_LOGMNR(DICTFILENAME =>'/oracle/logminer/dictionary.ora');6.从分析结果读取你感兴趣的内容:如:select username ,to_char(timestamp,'dd-mon-yyyyhh24:mi:ss'),operation,sql_UNdo,sql_redo from SYS.V$LOGMNR_CONTENTSwhere seg_name='DTWPC1';注: STEP 4,STEP5,STEP6 要在同一个SESSION里.平时只要做STEP3,STEP4,STEP5,STEP6,STEP1、2 只要做一次。
LogMiner工具使用说明一、logminer的用途日志文件中存放着所有进行数据库恢复的数据,记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句.logminer工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其他数据库的重作日志文件。
总的说来,logminer工具的主要用途有:1. 跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能。
2。
回退数据库的变化:回退特定的变化数据,减少point—in—time recovery的执行。
3。
优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式。
二、安装logminer要安装logminer工具,必须首先要运行下面这样两个脚本,l、$ORACLE_HOME/rdbms/admin/dbmslm。
sql2、$ORACLE_HOME/rdbms/admin/dbmslmd.sql3、$ORACLE_HOME/rdbms/admin/dbmslms.sql这两个脚本必须均以SYS用户身份运行。
其中第一个脚本用来创建DBMS_LOGMNR 包,该包用来分析日志文件。
第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
三、使用logminer工具下面将详细介绍如何使用logminer工具.1、创建数据字典文件(data—dictionary)前面已经谈到,logminer工具实际上是由两个新的PL/SQL内建包(DBMS_LOGMNR和DBMS_ LOGMNR_D)和四个V$动态性能视图(视图是在利用过程DBMS_LOGMNR.START_LOGMNR启动logminer时创建)组成.在使用logminer工具分析redo log文件之前,必须使用DBMS_LOGMNR_D 包将数据字典导出为一个文本文件。
该字典文件是可选的,但是如果没有它,logminer解释出来的语句中关于数据字典中的部分(如表名、列名等)和数值都将是16进制的形式,我们是无法直接理解的。
logminer用法
摘要:
1.logminer 简介
2.logminer 的基本用法
3.logminer 的高级用法
4.logminer 的示例
正文:
【1.logminer 简介】
logminer 是一个开源的日志分析工具,可以帮助用户对日志文件进行高效的分析和处理。
它支持多种常见的日志格式,如syslog、rsyslog、log4j 等,并提供了丰富的配置选项,使得用户可以灵活地定制分析规则。
【2.logminer 的基本用法】
logminer 的基本用法主要包括以下几个步骤:
(1)安装logminer:用户可以根据自己的操作系统选择相应的安装包进行安装。
(2)配置logminer:安装完成后,用户需要创建一个配置文件,指定日志文件的路径、日志格式以及分析规则等。
(3)运行logminer:用户可以通过命令行或图形界面启动logminer,开始对日志文件进行分析。
【3.logminer 的高级用法】
除了基本的分析功能外,logminer 还提供了一些高级用法,如:
(1)自定义分析规则:用户可以根据自己的需求,编写自定义的分析规则,以满足不同的分析需求。
(2)实时监控:logminer 可以实时监控日志文件的变化,并及时进行分析。
(3)日志导出:logminer 支持将分析结果导出为常见的数据格式,如CSV、Excel 等。
Oracle 启动LogMiner在为LogMiner创建了字典文件,并且指定了要分析的重做日志文件列表后,就可以启动LogMiner开始分析日志文件了。
执行DBMS_LOGMNR.START_LOGMNR过程将启动LogMiner。
启动LogMiner非常方便,只需要执行DBMS_LOGMNR.START_LOGMNR过程即可。
在执行该过程时,需要为参数DICTFILENAME中指定一个已经建立的字典文件。
例如,下面的语句在执行DBMS_LOGMNR.START_LOGMNR过程时,指定了前面所创建的字典文件e:\orcldata\logminer\sqltrace.ora:SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'e:\orcldata\logminer\sqltrace.ora');PL/SQL 过程已成功完成。
如果不指定字典文件,那么生成的分析结果中将使用Oracle内部的对象标识和数据格式,这些数据的可读性非常差。
指定字典文件后,Oracle会将内部对象标识和数据类型转换为用户可读的对象名称和外部数据格式。
另外,如果在执行DBMS_LOGMNR.START_LOGMNR过程时没有指定其他参数,则在分析的结果中将包含重做日志文件的所有内容。
因此,DBA可以在启动LogMiner时,为其限定要分析的范围。
DBMS_LOGMNR.START_LOGMNR过程提供了基于分析日志时间和SCN号的参数,它们分别是:表示分析的起始/结束SCN号的STARTSCN/ENDSCN;表示分析的起始/结束时间的STARTTIME/ENDTIME。
例如,下面的语句在执行DBMS_LOGMNR.START_LOGMNR过程时,将过滤2008年5月1日以前的数据。
execute dbms_logmnr.start_logmnr(dictfilename=>'e:\orcldata\logminer\sqltrace.ora',starttime=>to_date('2008/05/01 01:00:00','yyyy/mm/dd hh:mi:ss'),endtime=>to_date('2008/05/10 10:30:00',' yyyy/mm/dd hh:mi:ss '));在使用SCN号了限定分析范围时,必须明确地知道事务的SCN范围,这通常可以从重做日志的基本信息中获取。
Connected to Oracle Database10g Enterprise Edition Release10.1.0.2.0 Connected as SYS一、如何使用logminer首先安装logminer的两个包:以sys用户运行这两个脚本:dbmslm.sql、dbmslmd.sql,第一个脚本用来创建dbms_logmnr包,第二个用来创建dbms_logmnr_d包,该包用来创建数据字典文件。
SQL>conn sys/tdt as sysdbaConnected to Oracle Database10g Enterprise Edition Release10.1.0.2.0 Connected as SYSSQL>conn sys/tdt as sysdba;Connected to Oracle Database10g Enterprise Edition Release10.1.0.2.0 Connected as SYSSQL>@dbmslm.sql;Error reading fileSQL>@D:\oracle\product\10.1.0\Db_2\RDBMS\ADMIN\dbmslm.sqlPackage createdGrant succeededSQL>@D:\oracle\product\10.1.0\Db_2\RDBMS\ADMIN\dbmslmd.sqlSession alteredPL/SQL procedure successfully completedSession alteredPackage created[在Oracle安装目录上搜索“dbmslm.sql”,找到后将其完整的物理路径拷贝过来,果然执行成功。
可能oracle版本不一样,文件所在的目录也不大一样,仿照网上的资料,还要学会变通啊,哈哈!]SQL>alter database add supplemental log data;Database altered二、创建数据字典文件数据字典文件是一个文本文件,由dbms_logmnr_d来创建。
Oracle所有的DDL,DML操作都会记录到日志文件中,日志文件直接打开我们是不能够看懂的,oracle提供了logminer来查看日志下面我们来配置logminer1、首先要知道日志文件的位置Select * from v$logfile; ------查看日志路径和名字如果使用了ASM自动存储管理,查询类似如下SQL> select member from v$logfile;MEMBER--------------------------------------------------------------------------------+DA TA/tim/onlinelog/group_3.263.742828937+DA TA/tim/onlinelog/group_2.262.742828935+DA TA/tim/onlinelog/group_1.261.742828935如果没有使用ASM自动存储管理SQL > select member from v$logfile;2、指定utl_file_dirSQL> alter system set utl_file_dir=’/opt/oracle/logs’scope=spfile;其中/opt/oracle/logs目录的用户和属组必须是oracle通过chown root:root /opt/oracle/logs命令来修改3、重启一下oracleShutdown immediate;startup4、查看一下spfile参数文件中是否已经有utl_file_dir查看参数文件位置SQL >Show parameter spfile;NAME TYPE V ALUE------------------------------------ ----------- ------------------------------spfile string /opt/oracle/product/10.2.0/db_1/dbs/spfiletim.ora Spfile参数文件是二进制文件,不能使用vi编译,但是可以通过cat 查看Cat /opt/oracle/product/10.2.0/db_1/dbs/spfiletim.ora5、创建数据字段文件executedbms_logmnr_d.build(dictionary_filename=>’dict.dat’,dictionary_location=>’/opt/oracle/logs’);其中dictionary_location参数就是指定的utl_file_dir的值6、添加日志列表把日志文件加入到logmnr中Executedbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>’/opt/oracle/redo01.log’);Executedbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>’/opt/oracle/redo02.log’);Executedbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>’/opt/oracle/redo03.log’);添加日志文件每次加一个,Logfilename参数就是最上面用v$logfile查询获得的7、启动logminer分析方法一、无条件限制EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'/opt/oracle/logs/dict.dat ');方法二:条件限制SQL> EXECUTE dbms_logmnr.start_logmnr(DictFileName => ' /data1/oracle/logs/ v816dict.ora ',StartTime => to_date('2007-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS')EndTime => to_date(''2007-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));通过设置起始时间和终止时间参数我们可以限制只分析某一时间范围的日志8、查看分析结果Logminer的分析结果都保存到v$logmnr_contents动态性能视图中Select * from v$logmnr_contents;需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在。
LogMiner简介及在CDC工具中的应用目录LogMiner简介及在CDC工具中的应用 (1)1. 什么是LogMiner (2)2. LogMiner的主要用途 (2)3. 使用LogMiner需要数据库开启归档模式 (2)3.1. 以dba身份登录 (2)3.2. 查询当前日志归档状态 (3)3.3. 关闭运行的数据库实例 (3)3.4. 启动数据库实例到mount 状态,但不要打开 (3)3.5. 设置数据库为归档日志模式 (3)3.6. 打开数据库 (3)3.7. 确认数据库是否处于日志归档模式 (4)3.8. 打开附加日志 (4)4. LogMiner用到的过程和视图 (4)4.1. 过程 (4)5. 分析日志过程 (5)5.1. 测试数据准备 (5)5.2. 使用LogMiner进行分析 (5)5.3. 观察分析的结果 (6)5.4. 调用停止分析的存储过程 (8)6. 在CDC工具中的使用 (8)6.1. LogMiner是在CDC中的运用模块(生产引擎) (8)6.2. 如何确定挖掘的区间 (9)6.3. 挖掘结果查询如何过滤 (9)6.4. 向MQ发送的消息的消息内容是什么 (9)1.什么是LogMinerOracle LogMiner是Oracle公司在8i之后推出的日志(在线日志和归档日志)的分析工具,该工具可以分析出所有对数据库操作的DML和DDL语句。
2.LogMiner的主要用途2.1.跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能。
2.2.回退数据库的变化:回退特定的变化数据,减少point-in-time recovery的执行。
2.3.优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式。
3.使用LogMiner需要数据库开启归档模式3.1.以dba身份登录sqlplus sys/sys as sysdba3.2.查询当前日志归档状态archive log list;3.3.关闭运行的数据库实例shutdown immediate3.4.启动数据库实例到mount 状态,但不要打开startup mount3.5.设置数据库为归档日志模式alter database archivelog;3.6.打开数据库alter database open;3.7.确认数据库是否处于日志归档模式archive log list;3.8.打开附加日志alter database add supplemental log data;alter database add supplemental log data (primary key,unique index) columns;4.LogMiner用到的过程和视图4.1.过程dbms_logmnr_d.build:创建一个数据字典文件dbms_logmnr.add_logfile:在类表中增加日志文件以供分析dbms_logmnr.start_logmnr:启动LogMiner分析dbms_logmnr.end_logmnr:停止LogMiner分析4.2视图:v$logmnr_dictionary:显示用来决定对象ID名称的字典文件的信息v$logmnr_logs:在LogMiner启动时显示分析的日志列表v$logmnr_contents:LogMiner启动后,可以使用该视图在SQL提示符下输入SQL语句来查询重做日志的内容5.分析日志过程5.1.测试数据准备SCN:(System Change Number 简称 SCN)是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。