oracle日志挖掘工具,oracle之日志挖掘—logmnr

操作:

a.查看是否打开附加日志数据模式功能

select SUPPLEMENTAL_LOG_DATA_MIN from v$database;

b.若没有打开,则打开

alter database add supplemental log data;

c.将要挖掘的日志添加到挖掘队列

exec dbms_logmnr.add_logfile('/log/log1.log')

exec dbms_logmnr.add_logfile('/log/log2.log')

d.可以删除添加的日志

exec dbms_logmnr.remove_logfile('/log/log1.log')

e.对添加入队列的日志进行挖掘

exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

f.从v$logmnr_contents查前滚SQL和反算回来的回滚SQL

select sql_redo,sql_undo from v$logmnr_contents;

实做:

1.查看操作前的系统SCN号

SQL> conn sys/oracleStudy as sysdba;

已连接。

SQL> show user;

USER 为 "SYS"

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

2058137

2.查看当前时候开启附加日志信息功能,若没有,则开启

SQL> select supplemental_log_data_min from v$database;

SUPPLEME

--------

NO

SQL> alter database add supplemental log data;

数据库已更改。

SQL> select supplemental_log_data_min from v$database;

SUPPLEME

--------

YES

3.执行向表中插入数据的操作

SQL> conn oracleStudy/oracleStudy;

已连接。

SQL> insert into test values(1,'MM','TT');

已创建 1 行。

SQL> commit;

提交完成。

4.查看操作完成之后的SCN号

SQL> conn sys/oracleStudy as sysdba;

已连接。

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER

------------------------

2058783

5.查看当前redolog是哪一组,并且位置在哪?

SQL> select group#,status from v$log;

GROUP# STATUS

---------- --------------------

1 INACTIVE

2 INACTIVE

3 CURRENT

SQL> select member from v$logfile;

MEMBER

--------------------------------------------------

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLESTUDY\REDO0

3.LOG

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLESTUDY\REDO0

2.LOG

D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLESTUDY\REDO0

1.LOG

6.添加需要日志挖掘的日志,这里选择当前redolog

SQL> exec dbms_logmnr.add_logfile('D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLESTUDY\REDO03.log');

PL/SQL 过程已成功完成。

7.开始数据挖掘

exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog,StartScn=>2058137,EndScn=>2058783);

8.查询挖掘信息

select username,session_info,sql_redo,sql_undo from v$logmnr_contents where seg_name like '%TEST%';

SQL> /

USERNAME                       SESSION_INFO

------------------------------ ----------------------------------------

ORACLESTUDY                    login_username=ORACLESTUDY client_info=

OS_username=***** Machin

e_name=**** OS_terminal=**** OS_process_id=8068:7996 OS_program_

name=sqlplus.exe

SQL_REDO                                 SQL_UNDO

---------------------------------------- ---------------------------------------

-

insert into "ORACLESTUDY"."TEST"("ID","U delete from "ORACLESTUDY"."TEST" where

"

SERNAME","PASSWORD") values ('1','MM','T ID" = '1' and "USERNAME" = 'MM' and "PA

S

T');                                     SWORD" = 'TT' and ROWID = 'AAAMoRAAFAAA

AOAAA';

username 表示作此操作的用户名

session_info  中记录登录用户的信息,如登录PC名称、对应系统的进程号、连接oracle的工具等

sql_redo   所作的操作

sql_undo   回滚的操作,其中ORWID可以很精确的定位所操作的表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值