==前提条件
1、开启归档
2、参数RLOG_APPEND_LOGIC不能等于0,如果值为0,则无法查询出结果,该参数为动态参数,可以在线修改
检查归档与记录逻辑操作功能:
select para_name,para_value from v$dm_ini where para_name='RLOG_APPEND_LOGIC';
select para_name,para_value from v$dm_ini where para_name='ARCH_INI';
参数解释:
RLOG_APPEND_LOGIC:是否启用在日志中记录逻辑操作的功能,取值范围 0、1、2、3、4
0:不启用;1、2、3、4 启用。(默认值)
1:如果有主键列,记录 UPDATE 和 DELETE 操作时只包含主键列信息,若没有主键列则包含所有列信息;
2:不论是否有主键列,记录 UPDATE 和 DELETE 操作时都包含所有列的信息;
3:记录 UPDATE 时包含更新列的信息以及 ROWID,记录 DELETE 时只有 ROWID;
4:只生成事务以及 DDL 相关的逻辑日志
=开启归档
alter database mount;
alter database add archivelog 'DEST=/dm/arch(位置),TYPE=local,FILE_SIZE=1024,space_limit=10240';
alter database archivelog;
alter database open;
select para_name,para_value from v$dm_ini where para_name='ARCH_INI';
=设置RLOG_APPEND_LOGIC
sp_set_para_value(1,'RLOG_APPEND_LOGIC',2);
select para_name,para_value from v$dm_ini where para_name='RLOG_APPEND_LOGIC';
=重启数据库生效
==日志挖掘
日志挖掘前,建议切换当前日志文件,防止要挖掘的信息存放在redo日志中。
=切换命令
alter system switch logfile;
1、查询时间范围内数据库日志,最好将第一步查询时间往前几分钟查询
select NAME,FIRST_TIME from v$archived_log where FIRST_TIME >'2023-12-05 10:00:08';
2、 加载查询日志
call dbms_logmnr.add_logfile('/dm8/dmarch/ARCHIVE_LOCAL1_0x1CAC5C38_EP0_2023-12-05_10-01-56.log');
3、 启动日志挖掘
call dbms_logmnr.start_logmnr(
options => 2128
,starttime=> to_date('2023-12-05 10:00:08','yyyy-mm-dd hh24:mi:ss')
,endtime => sysdate
);
4、查询v$logmnr_contents表中的信息
select sql_redo from v$logmnr_contents where sql_redo like '%T%' ORDER BY timestamp;
5、结束日志挖掘
call dbms_logmnr.end_logmnr();