logminer应用实例
http://www.oracleblog.org/working-case/dba-always-bad-luck-with-careless-customer/
http://blog.csdn.net/dream19881003/article/details/6687675
logminer工具的作用:
1,确定数据的逻辑损坏的时间
2,跟踪用户执行的事务变化操作
3,跟踪表的DML操作
指定数据文件存放路径及创建数据字典文件
alter system set utl_file_dir='/home/oracle' scope=spfile;
execute dbms_logmnr_d.build(dictionary_filename=>'dictionary.ora',dictionary_location=>'/home/oracle');
安装logminer,以sys用户执行
@$ORACLE_HOME/rdbms/admin/dbmslm.sql
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql
@$ORACLE_HOME/rdbms/admin/dbmslms.sql
为分析指定日志文件
begin
dbms_logmnr.add_logfile(
logfilename=>'+DATA/dbbox/onlinelog/group_3.266.820941003',options=>dbms_logmnr.new);
dbms_logmnr.add_logfile(
logfilename=>'+DATA/dbbox/onlinelog/group_2.262.820940763',options=>dbms_logmnr.addfile);
dbms_logmnr.add_logfile(
logfilename=>'+DATA/dbbox/onlinelog/group_1.261.820940761',options=>dbms_logmnr.addfile);
dbms_logmnr.add_logfile(
logfilename=>'+DATA/dbbox/onlinelog/group_4.267.820941005',options=>dbms_logmnr.addfile);
end;
/
tips:查询日志文件 select c.member,d.status from v$logfile c,v$log d where c.group#=d.group#;
启动LogMiner
execute dbms_logmnr.start_logmnr( dictfilename =>'/home/oracle/dictionary.ora');
分析重做日志文件内容
select scn,sql_redo,timestamp from v$logmnr.contents;
关闭LogMiner
execute dbms_logmnr.stop_logmnr;
后记:
select name,supplemental_log_data_min from v$database;是否是yes
YES为打开状态,会记录session_info,username等信息
NO为关闭状态,不会记录sesion_info,username等信息
添加
alter database add supplemental log data;
关闭
alter database drop supplemental log data;
重启数据库,这样我们刚才的两个参数就会生效;
创建登录触发器:
SQL> create or replace trigger on_logon_tigger
2 after logon on database
3 begin
4 dbms_application_info.set_client_info(sys_context('userenv','ip_address'));
5 end;
6 /
Trigger created.
我们就可以在V$SESSION视图的CLIENT_INFO列中看到新登录的客户端IP地址了。
为了节约pga的空间,当我们分析完日志后,移除不需要的日志:
SQL> begin
2 dbms_logmnr.add_logfile(
3 logfilename=>'/home/oracle/arch/arch_7_758944049_1.trc',
4 options=>dbms_logmnr.removefile);
5 end;
6 /