测试环境:OS:RedHat 5.5DB:Oracle11glogminer作为相关的日志分析工具集成与oracle中,我们可通过该工具清楚的分析重做相关日志和归档日志中的所有事物变化,并且可以准确的确定各种DML和DDL操作的具体时间和SCN值。
通过logminer我们可以实现:1,确定数据的逻辑损坏的时间2,跟踪用户执行的事务变化操作3,跟踪表的DML操作如果我们要分析归档日志,我们首先修改oracle归档日志的模式,我们要把默认的归档路径改成我们自己的路径:start mount;alter database archivelog;alter database open;alter system set log_archive_dest_1="location=d:oracle" scope=spfile;alter system set log_archive_format="arch_%t_%s_%r.trc" scope=spfile;查看我们修改过的归档路径:archive log list;查看归档日志:select name,dest_id from v$archived_log;如果查询的没有更改,我们需要重启一下数据库安装logminer,安装logminer需要我们安装下面的几个包:$ORACLE_HOME/rdbms/admin/dbmslm.sql$ORACLE_HOME/rdbms/admin/dbmslmd.sql$ORACLE_HOME/rdbms/admin/dbmslms.sql这几个脚本必须是sys用户运行@$ORACLE_HOME/rdbms/admin/dbmslm.sql@$ORACLE_HOME/rdbms/admin/dbmslmd.sql@$ORACLE_HOME/rdbms/admin/dbmslms.sql添加数据字典,需要添加参数utl_file_dir,alter system set utl_file_dir="/home/oracle/dir" scope=spfile;添加supplement logging首先查看select name,supplemental_log_data_min from v$database;是否是yesYES为打开状态,会记录session_info,username等信息
NO为关闭状态,不会记录sesion_info,username等信息添加alter database add supplemental log data;关闭alter database drop supplemental log data;重启数据库,这样我们刚才的两个参数就会生效;查看数据字典:show parameter utl;添加数据字典:SQL> begin
2 dbms_logmnr_d.build(
3 dictionary_filename=>"logminer_dict.dat",
4 dictionary_location=>"/home/oracle/logminer");
5 end;
6 /PL/SQL procedure successfully completed.或是:execute dbms_logmnr_d.build(dictionary_filename=>"logminer_dict.dat",dictionary_location=>"/home/oracle/logminer");创建登录触发器:
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地址了。那么现在就可以在添加要分析的归档日志文件SQL> begin
2 dbms_logmnr.add_logfile(
3 logfilename=>"/home/oracle/arch/arch_6_758944049_1.trc",options=>dbms_logmnr.new);
4 end;
5 /PL/SQL procedure successfully completed.
SQL> begin
2 dbms_logmnr.add_logfile(
3 logfilename=>"/home/oracle/arch/arch_7_758944049_1.trc",
4 options=>dbms_logmnr.addfile);
5 end;
6 /PL/SQL procedure successfully completed.
切换归档日志:alter system switch logfile;开启分析:execute dmbs_logmnr.start_logmnr(dictfilename="/home/oracle/logminer/logminer_dict.dat");或是:execute dbms_logmnr.start_logmnr;查询归档日志:SQL> select name from v$archived_log;NAME
--------------------------------------------------------------------------------
/home/oracle/arch/arch_6_758944049_1.trc
/home/oracle/arch/arch_7_758944049_1.trc
/home/oracle/arch/arch_8_758944049_1.trc 为了节约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 /PL/SQL procedure successfully completed.
查询结果在v$logmnr_contents;查询数据库上面的操作select scn,sql_redo,timestamp from v$logmnr.contents;关闭分析execute dbms_logmnr.stop_logmnr;查询的时候最好使用plsql查询。Oracle分区表 (Partition Table) 的创建及管理Oracle 配置Auto Trace监控sql执行计划相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)