`
txf2004
  • 浏览: 6868884 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle logmnr 日志挖掘一例

 
阅读更多
1. 执行删除操作
SQL> drop table t ;



Table dropped.


SQL> select * from tab ;


TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BIN$wWGJJd0UCrDgRAAMKRcWyg==$0 TABLE
TTS SYNONYM
TTSS SYNONYM


SQL> purge table t;


Table purged.


使用logmnr来挖掘日志中的信息
2. 查看操作目录


SQL> show parameter utl_file_dir



NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string


没有指定,那么指定一个文件夹用来存放logmnr的字典文件
-bash-3.00$ mkdir /gwrs/logmnr


SQL> alter system set utl_file_dir='/gwrs/logmnr' scope=spfile ;

System altered.


重启一下数据库


-bash-3.00$ srvctl stop database -d prod
-bash-3.00$ srvctl start database -d prod


3. 建立字典文件
SQL> execute dbms_logmnr_d.build ('dict.ora','/gwrs/logmnr',dbms_logmnr_d.store_in_flat_file);

PL/SQL procedure successfully completed.


4. 分析日志
将可能相关的日志都加入分析
begin
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_1_35_7wjflz93_.arc',options=>dbms_logmnr.new) ;
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_2_31_7wjfngtq_.arc',options=>dbms_logmnr.addfile) ;
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_2_32_7wjfnkbr_.arc',options=>dbms_logmnr.addfile) ;
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_1_36_7wjgg4dh_.arc',options=>dbms_logmnr.addfile) ;
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_1_37_7wjlnoxr_.arc',options=>dbms_logmnr.addfile) ;
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_1_38_7wjmwbcs_.arc',options=>dbms_logmnr.addfile) ;
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_2_33_7wjmwjfj_.arc',options=>dbms_logmnr.addfile) ;
dbms_logmnr.start_logmnr(dictfilename=>'/gwrs/logmnr/dict.ora');
end ;
/
5. 分析操作记录
注意, 这里的logmnr记录日志只在本次会话中生效,如果需要在其他会话分析这些日志需要创建一个表来保存它
create table logmnr_tmp tablespace users as select * from v$logmnr_contents ;


接下来就可以分析日志了。
SQL> col seg_name for a10
SQL> col sql_redo for a50
SQL> col seg_owner for a10
SQL> col table_name for a10
select scn , timestamp , seg_owner, seg_name , table_name , sql_redo from logmnr_tmp where table_name='T' ;

SCN TIMESTAMP SEG_OWNER SEG_NAME TABLE_NAME SQL_REDO
---------- --------- ---------- ---------- ---------- --------------------------------------------------
1823865 01-JUN-12 DEX T T ALTER TABLE "DEX"."T" RENAME TO "BIN$wWGJJd0UCrDgR
AAMKRcWyg==$0" ;


1823868 01-JUN-12 DEX T T drop table t AS "BIN$wWGJJd0UCrDgRAAMKRcWyg==$0"
;


1823953 01-JUN-12 DEX T T purge table "BIN$wWGJJd0UCrDgRAAMKRcWyg==$0" ;
如果发现username , os_username , machine_name 等为unknow 或者 null 的状态 这是一个bug 当你重复执行同一个logmnr使用相同的参数的时候就可能会出现这种状况(第一次不会)BUG:10129774
链接地址 https://support.oracle.com/CSP/main/article?cmd=show&type=BUG&id=10129774
打补丁 10129774








或者提前使用补充日志


我们再来试一下


SQL> alter database add supplemental log data;



Database altered.


SQL> set time on
15:00:41 SQL>


15:01:16 SQL> select log_mode, supplemental_log_data_min from v$database;



LOG_MODE SUPPLEME
------------ --------
ARCHIVELOG YES


15:02:18 SQL> create table t (x int primary key ) ;


Table created.




15:02:32 SQL> drop table t purge ;


Table dropped.


begin
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_2_36_7wjtbo2y_.arc',options=>dbms_logmnr.new) ;
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_1_46_7wjtbsns_.arc',options=>dbms_logmnr.addfile) ;
dbms_logmnr.start_logmnr(dictfilename=>'/gwrs/logmnr/dict.ora');
end ;
/


create table log_tmp tablespace users as select * from v$logmnr_contents ;




15:15:59 SQL> set lines 150
15:13:15 SQL> col username for a20
15:15:50 SQL> col os_username for a10
15:15:50 SQL> col machine_name for a10
15:15:50 SQL> col sql_redo for a50
15:15:51 SQL> select username , os_username , machine_name , sql_redo from logmnr_tmp where table_name='T' ;

USERNAME OS_USERNAM MACHINE_NA SQL_REDO
-------------------- ---------- ---------- --------------------------------------------------
DEX oracle sol1 create table t (x int primary key ) ;
DEX oracle sol1 drop table t purge ;


ok 了, 再执行一次看一下bug是否依旧存在。


15:16:11 SQL> exec dbms_logmnr.end_logmnr() ;




begin
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_2_36_7wjtbo2y_.arc',options=>dbms_logmnr.new) ;
dbms_logmnr.add_logfile(logfilename=>'/gwrs/PROD/archivelog/2012_06_01/o1_mf_1_46_7wjtbsns_.arc',options=>dbms_logmnr.addfile) ;
dbms_logmnr.start_logmnr(dictfilename=>'/gwrs/logmnr/dict.ora');
end ;
/




15:17:53 SQL> select username , os_username , machine_name , sql_redo from v$logmnr_contents where table_name='T' ;



USERNAME OS_USERNAM MACHINE_NA SQL_REDO
-------------------- ---------- ---------- --------------------------------------------------
DEX oracle sol1 create table t (x int primary key ) ;
DEX oracle sol1 drop table t purge ;

ok 没有问题。
分享到:
评论

相关推荐

    logmnr日志挖掘技术

    logmnr日志挖掘,分析redo里面做了哪些操作,可以显示出语句

    在oracle中Logmnr进行日志挖掘

    在oracle中Logmnr进行日志挖掘

    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. ...

    加强数据库oracle日志的记录

    Oracle数据库使用LOGMINER来分析日志。...其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。  二、使用LogMiner工具 ……

    oracle使用logmnr找回误删数据.rar

    oracle使用logmnr找回误删数据

    [保留] 日志分析logmnr使用方法_分享 - ChinaUnix_net

    oracle 日志

    LOGMNR详解

    LOGMNR

    dbms_logmnr使用

    dbms_logmnr使用

    ORACLE日志丢失的恢复

    1.切换当前日志到新的日志组 alter system switch logfile; alter system switch logfile; 2.删除旧的日志组 alter database drop logfile group 1; alter database drop logfile group 2; alter database drop...

    logmnr来分析归档日志操作.txt

    数据库必须是归档模式,使用本地的在线数据字典分析归档日志

    如何使用log miner分析oracle日志

    oracle db提供了一个分析日志包logmnr logminer 工具的使用 ——-对redo log 进行挖掘,找出在某个时间点所作的DDL 或DML 操作(包括:时间点、datablock scn 、sql语句) 实验测试 SQL> select name from v$...

    Oracle Logminer

    Logminer是oracle从8i开始提供的用于分析重做日志信息的工具,它包括DBMS_LOGMNR和DBMS_LOGMNR_D两个package,后边的D是字典的意思。它既能分析redo log file,也能分析归档后的archive log file。在分析日志的过程...

    DBMS_LOGMNR中的常量选项

    隐式调用DBMS_LOGMNR.END_LOGMNR存储过程结束当前的logminer session然后创建一个新的session。新session从指定的redo日志文件开始,分析要重做的新的日志文件列表 ADDFILE 将指定的redo log文件添加到要分析的...

    Oracle9i的init.ora参数中文说明

    Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...

    精通Oracle.10g.PLSQL编程

    使用Oracle系统包 17.1 DBMS_OUTPUT 17.2 DBMS JOB 17.3 DBMS PIPE 17.4 DBMSAIERT 17.5 DBMS TRANSACTION 17.6 DBMS SESSION 17.7 DBMS ROWID 17.8 DBMSRLS 17.9 DBMS DDL ...

    ORACLE之常用FAQ V1.0(整理)

    [Q]执行exec dbms_logmnr_d.build('Logminer.ora','file 34 [Q]执行execute 34 第四部分、性能调整 35 [Q]如果设置自动跟踪 35 [Q]如果跟踪自己的会话或者是别人的会话 36 [Q]怎么设置整个数据库系统跟踪 36 [Q]怎么...

    Oracle通过LogMiner实现数据同步迁移

    写在前面 最近在研究如何实现...在服务器上创建/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR目录来存储数据库的字典信息,如下所示。 mkdir -p /home/oracle/tools/oracle11g/oradata/orcl/LOGMNR 2.配置LogM

    DB_monitor.rar

    EXECUTE dbms_logmnr.add_logfile(LogFileName=>'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ABC\REDO03.LOG',Options=>dbms_logmnr.new); 添加其它文件 EXECUTE dbms_logmnr.add_logfile(LogFileName=>'D:\ORACLE\...

    通过LogMiner包监控正在运行的sql

    一、安装Oracle LogMiner包: $sqlplus '/as sysdba' SQL> @?/rdbms/admin/dbmslm.sql --用来创建DBMS_LOGMNR包,该包用来分析日志文件。 SQL> @?/rdbms/admin/dbmslmd.sql --用来创建DBMS_LOGMNR_D包,该包用来...

    Oracle系统包详细使用方法

    Oracle系统包 一.dbms_output 二.dbms_job 三.dbms_pipe 四.dbms_alert 五.dbms_transaction 六.dbms_session 七.dbms_rowid 八.dbms_rls 九.dbms_ddl 十.dbms_shared_pool 十一.dbms_random 十二.dbms_logmnr 十三....

Global site tag (gtag.js) - Google Analytics