Oracle 启动LogMiner
ORACLE数据库LOGMINER步骤及DROP后的表如何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 只要做一次。
ORACLE日志LOGMINER安装和使用
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日志分析工具LogMiner
3 . 6
D M O M R S A T L  ̄I B S L G N . T R O R(” , ’, p i n = D M O G ’ o t o s >B S LG
MRDC RMOLN AAO) N , I T F O N IE C T L G 需要注意,此操作要求数据 库必须处于打 开状态 ,并且该方法只 能用户跟踪 D L操作 , M
(” , ’’,pin=D 1 ot0s>B 0 DSOE I EOLG) .TR NRD OS
( )总 结 四
利用 L g ie 工 具对 日志文件进行分析,能帮助数据库 oMnr 管理 员实时掌握用户对数据库的更新操作 ,一旦用户操作出 现错误 ,管理员能够执行用户操作 的反操作 ,从而将数据库 还 原 到 修 改 前 的 状态 。 【 考文献】 参
3 使用源数据库数据字典:为 了使 LG i e . O M n r使h ma K t 著 . al i 0 编程 艺术【 . 3 ]T o s ye Or e &1g c9 M】 北京: 民邮电 人
出版 社 .0 6 1 2 0 ..
【 收稿 日期 】2 1— 3 1 00 0— 2 【 作者简介 】冯军 ( 96 ) 17 一 ,男,江 苏人 ,供 职于新疆 生产建设兵 团电视 台,研 究方向为数据库技术及应 用。
不 能 跟踪 D L操 作 。 D
步骤 2 建立 日志分析列表 :日志分析列表用于指定要分 , 析的重做 日志文件或归档 日志文件 ,需要注意 ,将第一个 日 志文 件添加到 日志分析 列表 时,必须使用 d m — o  ̄ rN I b s l gn . Er 选项 ;当增加其他 日志文件时 ,使用 D M _ o  ̄ R AI IE B S L g N .D) L F
Oracle10g中LogMiner的使用
END; 使 用 START_LOGMNR 函 数 来 分 析 日 志 , options =>
dbms_logmnr.dict_from_online_catalog 表示数据自动取自在线目 录 , 否 则 logminer 解 释 出 来 的 结 果 将 是 如 下 形 式 :“insert into Object#308(col#1, col#2) &#118alues (hextoraw('c30rte567e436'), hextoraw('4a6f686e20446f65'))”, 这样用户比较难理解。
"a rchive d da y" from v¥log_his tory group by to_cha r(firs t_time ,'yymmdd')
orde r by 2 # a rchive s a rchive d da y 3 070523 2 070621 11 070726
我 们 查 看 到 05- 23、06- 21、07- 26 各 有 3、2、11 个 日 志 , 我 们选取 07- 26 的日志来分析。
⑷ 检查在线日志中包含的操作类型 s e le ct count(*) ocurre nce s ,ope ra tion
from v¥logmnr_conte nts group by ope ra tion OCURRENCES OP ERATION 7 DDL 4040 S TART 4041 COMMIT 1 ROLLBACK 268380 DELETE 4881 UP DATE 353511 INTERNAL 14424 INS ERT
Logminer安装过程
1使用logminer分析oracle日志文件的内容,具体安装过程如下:首先,以“SYS”登陆sqlplus,运行一下脚本:$ORACLE_HOME/rdbms/admin/dbmslm.sql$ORACLE_HOME/rdbms/admin/dbmslmd.sql.2.在init。
Ora设置参数添加参数UTL_FILE_DIR,:Alter system set UTL_FILE_DIR=’z:\’ scope=spfile;3.重新启动数据库4. 创建数据字典文件:exec dbms_logmnr_d.build(dictionary_filename =>'dic.ora',dictionary_location => 'z:/');5.添加需要分析的日志文件:execute dbms logmnr.add logfile(LogFileName =>'/data1/oracle/oradata/akazamdb/redo01.log',Options => dbms_logmnr.new);2、创建要分析的日志文件列表1).创建分析列表,即所要分析的日志SQL>execute dbms logmnr.add logfile(LogFileName =>'/data1/oracle/oradata/akazamdb/redo01.log',Options => dbms_logmnr.new);PL/SQL procedure successfully completeds2).添加分析日志文件,一次添加1个为宜SQL>execute dbms_ logmnr.add_ logfile(LogFileName =>'/data1/oracle/oradata/akazamdb/redo01.log',Options =>dbms_logmnr.ADDFILE);PL/SQL procedure successfully completed3、使用LogMiner进行日志分析(具体要查询什么内容可以自己修改)(1)无限制条件SQL> EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'/data1/oracle/logs/v816dict.ora ');(2)有限制条件通过对过程DBMS_LOGMNR.START_LOGMNR中几个不同参数的设置,可以缩小要分析日志文件的范围。
Oracle LogMiner 日志操作
Oracle LogMiner 日志分析OS ‘Platform SunOS solaris 5.10Oracle Version Oracle 10g Enterprise Release: 10.2.0.2.0Tester Tao. WangDate 2010/7/26Oracle LogMiner 日志分析(注,也能用于归档日志以arc结尾的情况)―――在没有设置UTL_FILE_DIR参数情况分析BPMFLOW数据库日志切换频繁的原因:数据库没有创建UTL_FILE_DIR,由于UTL_FILE_DIR参数必须重启生效,所以很不方便。
数据字典也可以从redo日志中获得,且不需要重启数据库,具体步骤如下:1、确定获取数据字典的redo log filesalter database add supplemental log data;Database altered.如无法执行,先用sysdba用户登录,然后将该包的执行权限授予用户grant execute on DBMS_LOGMNR_D to nmc3g;beginsys.DBMS_LOGMNR_D.BUILD(options=>sys.DBMS_LOGMNR_D.store_in_redo_logs);end;PL/SQL procedure successfully completed.SELECT NAME FROM V$ARCHIVED_LOG WHERE DICTIONARY_BEGIN='YES';/arch/1_11364_701472013.dbf/arch/1_11361_701472013.dbfSELECT NAME FROM V$ARCHIVED_LOG WHERE completion_time>sysdate-1/24;NAME/arch/1_11364_701472013.dbf/arch/1_11361_701472013.dbf2、添加要分析的redo log 文件(选取2011-04-23 12:45时间段产生的归档日志进行分析)beginsys.dbms_logmnr.add_logfile(LogFileName=>'/arch/1_11364_701472013.dbf',Options=>sys.dbms_log mnr.new);end;PL/SQL procedure successfully completed.beginsys.dbms_logmnr.add_logfile(LogFileName=>'/arch/1_11361_701472013.dbf',Options=>sys.dbms_log mnr.addfile);end;PL/SQL procedure successfully completed.3.查看添加的日志文件SELECT FILENAME AS name, LOW_TIME, HIGH_TIME FROM V$LOGMNR_LOGS;NAME LOW_TIME HIGH_TIME-------------------------------------------------- ------------------- ------------------- /oracle10/eas06/bpmflowar/1_8844_655225031.dbf 2010-07-23 12:44:56 2010-07-23 12:45:00/oracle10/eas06/bpmflowar/1_8845_655225031.dbf 2010-07-23 12:45:00 2010-07-23 12:45:07 /oracle10/eas06/bpmflowar/1_8846_655225031.dbf 2010-07-23 12:45:07 2010-07-23 12:45:16 /oracle10/eas06/bpmflowar/1_8847_655225031.dbf 2010-07-23 12:45:16 2010-07-23 12:45:24 /oracle10/eas06/bpmflowar/1_8848_655225031.dbf 2010-07-23 12:45:24 2010-07-23 12:45:29 /oracle10/eas06/bpmflowar/1_8849_655225031.dbf 2010-07-23 12:45:29 2010-07-23 12:45:35 /oracle10/eas06/bpmflowar/1_8850_655225031.dbf 2010-07-23 12:45:35 2010-07-23 12:45:41 /oracle10/eas06/bpmflowar/1_8851_655225031.dbf 2010-07-23 12:45:41 2010-07-23 12:45:51 Missing log file(s) for thread 1, sequence(s) 8852 2010-07-23 12:45:51 2010-07-23 16:08:41 to 9058/oradata10/admin/eas06/1_9059_655225031.dbf 2010-07-23 16:08:41 2010-07-23 16:08:44beginsys.DBMS_LOGMNR.START_LOGMNR(OPTIONS => sys.DBMS_LOGMNR.DICT_FROM_REDO_LOGS);end;PL/SQL procedure successfully completed.SQL> SELECT SQL_REDO FROM V$LOGMNR_CONTENTS WHERE SQL_REDO LIKE 'insert into "WWOAUSER"."CM_SUBNET_INFO' AND ROWNUM < 2;SQL_REDO--------------------------------------------------------------------------------insert into "WWOAUSER"."MV_ALL_TABLE_HSTAUDITINFO"("ENTITYID","APPROVEUSERID","A PPROVEUSERNAME","APPROVEPOSITIONID","APPROVEJOBNAME","APPROVEFLOWROLEID","AP PROVEHRSCOPEID","BELONGTOORG","CLIENTIP","CLIENTHOSTNAME","HANDLEUSERID","HANDL EUSERNAME","HANDLEJOBNAME","HANDLEORGFULLNAMES","ORGVERSION","ORGFULLNAMES ","ARRIVEDATE","FINISHDATE","OPINION","PROCENAME","STEPNAME","OPERATETYPE","FLOWST ATUS","RESTARTFLAG","GOBACK","PROCINDEX") values ('105091','00003795','周立','00005032','中级事务员',NULL,NULL,'16520016','10.0.7.147','','00003795','周立行','中级事务员','管理总处/管理处/全国管理部','344','管理总处/管理处/全国管理部',TO_TIMESTAMP('15-JUN-09 07.01.16 PM'),TO_TIMESTAMP('15-JUN-09 07.01.16PM'),NULL,'OVERTIME','*start*','general','apply','0',NULL,NULL);SQL> SELECT substr(sql_redo,1,25),count(*)FROM V$LOGMNR_CONTENTSgroup by substr(sql_redo,1,25)having count(*)>50COUNT(*)743810经过分析:一分钟的时间内物化视图MV_ALL_TABLE_HSTAUDITINFO插入了743810条记录,这就是日志切换频繁原因所在。
ORACLE日志分析logmnr使用
ORACLE日志v$logmnr_contents分析一、产生日志命令:分析日志脚本文件logmnr.sql如下:SQL> @c:\logmnr.sql===================================================================== ========rem ********************开始执行日志分析脚本********************** rem 设置环境参数set echo offset termout off --//显示脚本中的命令的执行结果,缺省为onset trimout on --//去除标准输出每行的拖尾空格,缺省为offset trimspool on --//去除重定向(spool)输出每行的拖尾空格,缺省为off set heading off --//输出域标题,缺省为onset pagesize 0 --//输出每页行数,缺省为24,为了避免分页,可设定为0。
set verify off --//可以关闭和打开提示确认信息old 1和new 1的显示. set linesize 800 --//输出一行字符个数,缺省为80rem 字典信息文件路径为:show parameter utlrem 创建Logminer包:@D:\oracle\ora92\rdbms\admin\dbmslmd.sqlrem 创建字典信息文件exec dbms_logmnr_d.build(dictionary_filename=>'dic.ora',dictionary_location =>'D:\oracle\oradata\zfmi');rem 增加数据库对应的重做日志文件:execdbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo01. log', options=>dbms_logmnr.new);execdbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo02. log', options=>dbms_logmnr.addfile);execdbms_logmnr.add_logfile( logfilename=>'D:\oracle\oradata\zfmi\redo03. log', options=>dbms_logmnr.addfile);select db_name,filename from v$logmnr_logs;rem 结合字典信息文件,开始分析重做日志文件execdbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oradata\zfmi\dic.or a',starttime => to_date('2008-05-06 10:00:00','YYYY-MM-DDHH24:MI:SS'),endtime => to_date('2008-05-06 20:00:00','YYYY-MM-DD HH24:MI:SS'));rem 开始保存分析结果:spool c:\zfmiLog08-05-06_10.00.00to08-05-06_20.00.00.txt;select to_char(TIMESTAMP,'YYYY-MM-DD HH24:MI:SS'), SQL_REDO fromv$logmnr_contents where USERNAME='ZFMI' order by TIMESTAMP ;spool offrem 关闭分析器Logminer!dbms_logmnr.end_logmnr;rem ********************日志分析脚本执行完毕**********************===================================================================== ===========二、视图v$logmnr_contents字段分析一下内容根据oracle官方文档部分翻译:SQL> desc v$logmnr_contents;名称类型---------------------------------------------------------------------TIMESTAMP DATE //SQL执行时间COMMIT_TIMESTAMP DATE //事务提交时间SEG_OWNER VARCHAR2(32) //被修改对象创建者SEG_NAME VARCHAR2(256) //被修改对象的名字,如表名SEG_TYPE NUMBER //被修改对象类型SEG_TYPE_NAME VARCHAR2(32) //被修改对象类型名TABLE_SPACE VARCHAR2(32) //被修改对象所属表空间ROW_ID VARCHAR2(19) //被修改行的ROWID,如果SESSION# NUMBER //执行修改的SESSION号SERIAL# NUMBER //执行修改的SESSION序号USERNAME VARCHAR2(30) //执行事务的用户名SESSION_INFO VARCHAR2(4000) //执行修改的SESSION信息,例如:login_username= client_info=OS_username=SYSTEM Machine_name=ZFMISERVER OS_terminal=ZFMISERVER OS_process_id=1812 OS_program name=ORACLE.EXETX_NAME VARCHAR2(256) //执行的事务名,当该事务被命名时ROLLBACK NUMBER //回滚标记OPERATION VARCHAR2(32) //操作类型INSERTUPDATEDELETEDDLSTARTCOMMITROLLBACKLOB_WRITELOB_TRIMLOB_ERASESELECT_FOR_UPDATESEL_LOB_LOCATORMISSING_SCNINTERNALUNSUPPORTEDOPERATION_CODE NUMBER //操作类型代码0 = INTERNAL1 = INSERT2 = DELETE3 = UPDATE5 = DDL6 = START7 = COMMIT9 = SELECT_LOB_LOCATOR10 = LOB_WRITE11 = LOB_TRIM25 = SELECT_FOR_UPDATE28 = LOB_ERASE34 = MISSING_SCN36 = ROLLBACK255 = UNSUPPORTEDSQL_REDO VARCHAR2(4000) //重做日志SQLSQL_UNDO VARCHAR2(4000) //相反操作SQLSEQUENCE# NUMBER //重做日志的序号。
oracle LogMiner的功能和使用
• 启用数据库最小日志追加 • 设置LogMIner使用的表空间
Dbms_logmnr.add_logfile
SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/oracle/logs/log1.f',OPTIONS => DBMS_LOGMNR.NEW); SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/oracle/logs/log2.f',OPTIONS => DBMS_LOGMNR.ADDFILE); SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME => '/oracle/logs/log2.f',OPTIONS => DBMS_LOGMNR.REMOVEFILE);
按scn过滤
• SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME => '/oracle/dictionary.ora', STARTSCN => 100, ENDSCN => 150);
典型的LogMiner过程
1、初始安装
2、决定采用的数据字典类别 3、指定要参与分析的日志文件
LogMiner的数据字典
LogMiner数据字典包含了该数据库自创建以来的相关数 据库信息 LogMiner的数据字典
• 数据字典文件:从日志所在数据库(源数据库)生成,可以随日 志一起移动到不同的数据库上进行分析 数据字典文件生成步骤: 1) 创建数据字典文件目录并在初始化参数文件中指定: UTL_FILE_DIR = /oracle/database 2)生成数据字典 SQL> execute dbms_logmnr_d.build('dict.ora','c:\arch',options=>dbms _logmnr_d.store_in_flat_file); •
logminer用法
LogMiner用法一、概述LogMiner是由Oracle提供的一款用于分析和恢复数据库中的事务日志的工具。
它能够解析数据库的归档日志和在线日志,并提供对事务数据的查询和分析功能。
本文将介绍LogMiner的使用方法以及一些常见的应用场景。
二、LogMiner的安装与配置1. 安装Oracle数据库并确保数据库启用了归档功能。
2. 配置LogMiner的参数,包括指定归档日志和在线日志的存储位置以及日志文件的格式等。
3. 在数据库中创建适当的目录对象,用于存储LogMiner的相关文件。
三、LogMiner的基本用法1. 启动LogMiner$ sqlplus / as sysdbaSQL> EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);2. 加载需要分析的日志文件SQL> EXECUTEDBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME =>'/path/to/archived_log_file1', OPTIONS => DBMS_LOGMNR.NEW);SQL> EXECUTEDBMS_LOGMNR.ADD_LOGFILE(LOGFILENAME =>'/path/to/archived_log_file2', OPTIONS => DBMS_LOGMNR.ADDFILE);3. 执行数据查询SQL> SELECT username, operation, table_name, sql_redo FROMv$logmnr_contents;四、LogMiner的应用场景1. 数据恢复当数据库发生故障或误操作导致数据丢失时,可以使用LogMiner 分析事务日志,找回被删除或修改的数据。
如何使用logminer分析Oracle 联机日志
应用范例二:统计表的修改次数
统计一段时间内各表的修改次数很有意义。修改特别频繁的表,即所谓的‘热点’表,数据库运行期间主要的事务都与它们有关。DBA可以据此对这些表进行优化,比如提高他们的INITRANS,MAXTRANS设置,增加PCTFREE 等,以提高修改操作的性能。甚至可以从此发现数据库性能的瓶颈。
insert into SALARY(NAME, EMPNO, SAL) delete * from SALARY
values('Sigurd',12345,2500); where EMPNO = 12345
and ROWID = ‘AAABOOAABAAEPCABA';
2 rows selected
Scn: SCN 号码
Sql_redo: 所作的sql 语句
Sql_undo: 对应sql_redo, 恢复用的sql 语句
Timestamp: sql 发出的具体时间
Operation: sql 的类型,分为INSERT, UPDATE, START(set …), COMMIT(commit), INTERNAL等
应用范例三:抢救被错误修改的数据
笔者曾遇到这样的事情:自己公司开发的一段代码,其中有个BUG, 一条UPDATE语句没有写WHERE条件。QA没有能测试出来,LANUCH 后两个小时,发现不对,数据已经被错误地修改。因为只涉及到一个表,而且数据不是太多,于是笔者就是用了logminer将数据找回。具体方法类似范例一:
本文分三部分:第一部分,介绍如何设置、使用logminer;第二部分,介绍一些logminer的实际应用;第三部分,介绍logminer 的两个特别技巧
oracle日志分析工具LogMiner使用
1oracle日志分析工具LogMiner使用1.1设置日期格式alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss' scope=spfile;select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual ;1.2添加补充日志如果数据库需要使用logminer,就应该添加,只有添加这个日志之后的才能捕获DML ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;1.3开启归档alter system set log_Archive_dest_1='location=e:\arch' scope=both;shutdown immediatestartup mountalter database archivelog;alter database open;1.4安装LogMiner工具要安装LogMiner工具,必须首先要运行下面这样两个脚本,这两个脚本必须均以SYS 用户身份运行。
其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。
第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
1.$ORACLE_HOME\RDBMS\ADMIN\dbmslm.sql2. $ORACLE_HOME\RDBMS\ADMIN\dbmslmd.sql3.$ORACLE_HOME\RDBMS\ADMIN\dbmslms.sql@E:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslm.sql程序包已创建。
授权成功。
同义词已创建。
@E:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslmd.sql程序包已创建。
OracleLogminer快速使用详解
OracleLogminer快速使⽤详解⽬录⼀、Logminer是什么?⼆、Logminer快速使⽤三、Logminer的具体使⽤1.配置Logminer2.使⽤Logminer3.Logminer字典4.指定Logminer重做⽇志⽂件5.启动LogMiner⼀、Logminer是什么?LogMiner 是Oracle公司从产品8i以后提供的⼀个实际⾮常有⽤的分析⼯具,使⽤该⼯具可以轻松获得Oracle 重做⽇志⽂件(归档⽇志⽂件)中的具体内容,LogMiner分析⼯具实际上是由⼀组PL/SQL包和⼀些动态视图组成,它作为Oracle数据库的⼀部分来发布,是oracle公司提供的⼀个完全免费的⼯具。
具体的说:对⽤户数据或数据库字典所做的所有更改都记录在Oracle重做⽇志⽂件RedoLog中,Logminer就是⼀个解析RedoLog的⼯具,通过Logminer解析RedoLog可以得到对应的SQL数据。
Oracle 中的RedoLog写⼊流程: Oracle重做⽇志采⽤循环写⼊的⽅式,每⼀个Oracle实例⾄少拥有2组⽇志组。
Oracle重做⽇志⼀般由Oracle⾃动切换,重做⽇志⽂件在当LGWR进程停⽌写⼊并开始写⼊下⼀个⽇志组时发⽣切换,或在⽤户收到发出ALTER SYSTEM SWITCH LOGFILE时发⽣切换。
如果Oracle数据库开启了归档功能,则在⽇志组发⽣切换的时候,上⼀个⽇志组的⽇志⽂件会被归档到归档⽬录⾥。
从上⾯可知 Oracle⾥的RedoLog⽂件分为两种:当前写的⽇志组的⽂件,可通过v$log和v$logfile得到归档的redoLog⽂件,可通过v$archived_log得到通过循环查找到最新符合要求的RedoLog并让Logminer加载分析,分析的数据在视图v$logmnr_contents⾥,通过读取v$logmnr_contents就可以得到 Oracle的实时数据。
Oracle 创建LogMiner使用的字典文件
Oracle 创建LogMiner使用的字典文件LogMiner只要在实例起来的情况下才可以运行。
在使用LogMiner工具分析重做日志文件之前,可以使用DBMS_LOGMNR_D包将数据字典导出为一个文本文件。
该字典文件是可选的,LogMiner使用一个字典文件来实现Oracle内部对象名称的转换,如果没有这个字典文件,则直接显示内部对象编号,这部分内容是无法直接理解的。
创建字典文件的目的就是让LogMiner引用所涉及到内部数据字典,提供他们实际的名字,而不是系统内部的对象编号。
数据字典文件是一个文本文件,用于存放表及对象ID号之间的对应关系。
当使用字典文件时,它会在表名和对象ID号之间建立一一对应的关系。
如果要分析的数据库中的表有变化,则会影响到数据库的数据字典也发生变化,这时就需要重新创建该字典文件。
如果想要使用字典文件,数据库至少应该处于MOUNT状态。
然后执行DBMS_LOGMNR_D.BUILD过程将数据字典信息提取到一个外部文件中。
下面是具体步骤如下:(1)确认设置了初始化参数UTL_FILE_DIR,并确认Oracle对改目录拥有读写权限,然后启动实例。
SQL> show parameter utlNAME TYPE V ALUE------------------------------------ ----------- -------------create_stored_outlines stringutl_file_dir string参数UTL_FILE_DIR指定的目录主要用于存放DBMS_LOGMNR_D.BUILD过程所产生的字典信息文件。
如果未设置该参数,则可以通过如下的语句修改:SQL> alter system set utl_file_dir='e:\orcldata\logminer' scope=spfile;系统已更改。
Oracle日志挖掘(LogMiner)使用详解
Oracle⽇志挖掘(LogMiner)使⽤详解Logminer依赖于2个包:DBMS_LOGMNR和DBMS_LOGMNR_D,Oracle 11g默认已安装Logminer 基本使⽤步骤<1>. Specify a LogMiner dictionary. 指定Logminer字典<2>. Specify a list of redo log files for analysis. 指定需要挖掘的redo或者archivelog⽇志⽂件<3>. Start LogMiner. 开始⽇志挖掘<4>. Request the redo data of interest. 查询V$LOGMNR_CONTENTS获取挖掘的结果<5>. End the LogMiner session. 结束⽇志挖掘⽇志挖掘使⽤⽰例:1.开启补全⽇志:SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;2.找出需要挖掘的归档⽇志⽂件路径SQL> SELECT NAME FROM V$ARCHIVED_LOGWHERE FIRST_TIME between to_date('2018-07-06 08:20:00','yyyy-mm-dd hh24:mi:ss') and to_date('2018-07-06 09:40:00','yyyy-mm-dd hh24:mi:ss') order by 1; NAME--------------------------------------------------------------------------------/u01/app/archive/1_342433_904747849.dbf/u01/app/archive/1_342434_904747849.dbf/u01/app/archive/1_342435_904747849.dbf3.指定Logminer字典 (三选⼀)Oracle 11g 指定Logminer字典有三种⽅法ing the Online Catalog 使⽤在线⽬录2.Extracting a LogMiner Dictionary to the Redo Log Files 抽取字典到redo⽇志⽂件中3.Extracting the LogMiner Dictionary to a Flat File 抽取字典到平⾯⽂件中(需要设置UTL_FILE_DIR参数,重启数据库,不推荐)EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);OREXECUTE DBMS_LOGMNR_D.BUILD( OPTIONS=> DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);OREXECUTE DBMS_LOGMNR_D.BUILD('dictionary.ora', '/oracle/database/', DBMS_LOGMNR_D.STORE_IN_FLAT_FILE);4.Logminer中添加归档⽇志⽂件EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/u01/app/archive/1_342433_904747849.dbf', OPTIONS => DBMS_LOGMNR.NEW);继续添加⽇志:EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/u01/app/archive/1_342434_904747849.dbf', OPTIONS => DBMS_LOGMNR.ADDFILE);EXECUTE DBMS_LOGMNR.ADD_LOGFILE( LOGFILENAME => '/u01/app/archive/1_342435_904747849.dbf', OPTIONS => DBMS_LOGMNR.ADDFILE);查看添加的⽇志列表:select filename from V$LOGMNR_LOGS;5.开始⽇志挖掘 (三选⼀,与步骤3对应)EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);OREXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_REDO_LOGS );OREXECUTE DBMS_LOGMNR.START_LOGMNR(DICTFILENAME =>'/oracle/database/dictionary.ora');6.获取挖掘结果SELECT username AS USR, (XIDUSN || '.' || XIDSLT || '.' || XIDSQN) AS XID,SQL_REDO, SQL_UNDO FROM V$LOGMNR_CONTENTS WHERE username IN ('HR', 'OE');把挖取结果保存到指定表格中: create table logtab as select * from v$logmnr_contents;7.结束⽇志挖掘EXECUTE DBMS_LOGMNR.END_LOGMNR;总结以上所述是⼩编给⼤家介绍的Oracle ⽇志挖掘(LogMiner)使⽤详解,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
Oracle数据库日志查看工具LogMiner的使用详解
一、Oracle日志的路径登录:sqlplus "/as sysdba"查看路径:SQL> select * from v$logfile;SQL> select * from v$logfile;(#日志文件路径)二、Oracle日志文件包含哪些内容1.control01.ctl example01.dbf redo02.log sysaux01.dbf undotbs01.dbf2.control02.ctl redo03.log system01.dbf users01.dbf3.control03.ctl redo01.log SHTTEST.dbf temp01.dbf三、Oracle日志的查看方法SQL>select * from v$sql (#查看最近所作的操作)SQL>select * fromv $sqlarea(#查看最近所作的操作)Oracle 数据库的所有更改都记录在日志中,从目前来看,分析Oracle日志的唯一方法就是使用Oracle公司提供的LogMiner来进行,因为原始的日志信息我们根本无法看懂,Oracle8i后续版本中自带了LogMiner,而LogMiner就是让我们看懂日志信息的工具,通过这个工具可以:查明数据库的逻辑更改,侦察并更正用户的误操作,执行事后审计,执行变化分析。
四、LogMiner的使用1、创建数据字典文件(data-dictionary)1).首先在init.ora初始化参数文件中,添加一个参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。
如:UTL_FILE_DIR = ($ORACLE_HOME\logs) ,重新启动数据库,使新加的参数生效:SQL> shutdown;SQL>startup;2).然后创建数据字典文件1.SQL> connect /as sysdba2.SQL> execute dbms_logmnr_d.build(dictionary_filename => 'dict.ora',dictionary_location => '/data1/oracle/logs');3.PL/SQL procedure successfully completed2、创建要分析的日志文件列表1).创建分析列表,即所要分析的日志1.SQL>execute dbms logmnr.add logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01.log',Options => dbms_logmnr.new);2.PL/SQL procedure successfully completeds2).添加分析日志文件,一次添加1个为宜1.SQL>execute dbms_ logmnr.add_ logfile(LogFileName => '/data1/oracle/oradata/akazamdb/redo01.log',Options => dbms_logmnr.ADDFILE);2.PL/SQL procedure successfully completed3、使用LogMiner进行日志分析(具体要查询什么内容可以自己修改)(1)无限制条件SQL> EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'/data1/oracle/logs/v816dict.ora ');(2)有限制条件通过对过程DBMS_ LOGMNR.START_LOGMNR中几个不同参数的设置,可以缩小要分析日志文件的范围。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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范围,这通常可以从重做日志的基本信息中获取。