亲测 logminer挖掘

简介:

LogMiner两种使用类型,一种是使用源数据库的数据字典分析DML操作,别一种是摘取LogMiner数据字典到字典文件分析DDL操作。
检查下suppplemental logging:
SQL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
如果是YES 或者IMPLICIT则表明已经生效了,否则需要启动:

安装LogMiner 
查看系统中是否存在运行LogMiner所需要的dbms_logmnr、dbms_logmnr_d包,如果没有需要安装LogMiner工具,必须首先要运行下面这样两个脚本:
SQL> SELECT distinct name,text,line FROM DBA_SOURCE where type = 'PACKAGE' and name = upper( 'dbms_logmnr_d');
SQL> @?$ORACLE_HOME/rdbms/admin/dbmslm.sql
SQL> @?$ORACLE_HOME/rdbms/admin/dbmslmd.sql.
-- 创建数据字典文件之前需要配置LogMiner文件夹:
SQL> select * from dba_directories;
SQL> CREATE DIRECTORY utlfile AS 'D:\oracle\oradata\practice\LOGMNR';
SQL> alter system set utl_file_dir='D:\oracle\oradata\practice\LOGMNR' scope=spfile;
SQL> SHOW PARAMETER utl_file_dir 
--创建字典文件需要以DBA用户登录,创建到上面配置好的LogMiner文件夹中:
SQL> CONN LOGMINER/ LOGMINER@PRACTICE AS SYSDBA
SQL> EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'D:\oracle\oradata\practice\LOGMNR');

SQL>alter database add supplemental log data;

Database altered.

 

SQL> select supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui from v$database;

SUPPLEME SUP SUP
-------- --- ---
YES NO NO

 

--  Oracle的LogMiner可以分析在线(online)和归档(offline)两种日志文件,加入分析日志文件使用dbms_logmnr.add_logfile过程,第一个文件使用dbms_logmnr.NEW参数,后面文件使用dbms_logmnr.ADDFILE参数


SQL> col member for a50;

SQL> select * from v$logfile;

GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
3 ONLINE /home/oracle/app/oradata/orcl/redo03.log NO
2 ONLINE /home/oracle/app/oradata/orcl/redo02.log NO
1 ONLINE /home/oracle/app/oradata/orcl/redo01.log NO

 

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

GROUP# STATUS
---------- ----------------
1 INACTIVE
2 INACTIVE
3 CURRENT

 

SQL> select name from v$archived_log where name is not null order by 1;

no rows selected

 

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/home/oracle/app/oradata/orcl/redo03.log',Options=>dbms_logmnr.new);

PL/SQL procedure successfully completed.

SQL>EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/home/oracle/app/oradata/orcl/redo03.log',Options=>dbms_logmnr.ADDFILE);

PL/SQL procedure successfully completed.

 

SQL> execute DBMS_LOGMNR.START_LOGMNR(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL procedure successfully completed.

 

 

SQL> col username for a10;
SQL> col sql_redo for a45;
SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='ANDY' order by scn;

USERNAME SCN TIMESTAMP SQL_REDO
---------- ---------- --------- ---------------------------------------------
UNKNOWN 1301179 15-OCT-14 create table andy(id int);
UNKNOWN 1301259 15-OCT-14 insert into "ANDY"."ANDY"("ID") values ('1');
ANDY 1301738 15-OCT-14 insert into "ANDY"."ANDY"("ID") values ('2');
ANDY 1301743 15-OCT-14 insert into "ANDY"."ANDY"("ID") values ('3');
ANDY 1301774 15-OCT-14 truncate table andy;

SQL> execute dbms_logmnr.end_logmnr;

文章可以转载,必须以链接形式标明出处。


本文转自 张冲andy 博客园博客,原文链接: http://www.cnblogs.com/andy6/p/6067854.html   ,如需转载请自行联系原作者
相关文章
|
11月前
|
SQL 监控 关系型数据库
Easy File Online文件管理系统0day挖掘-sql注入审计
Easy File Online文件管理系统0day挖掘-sql注入审计
|
SQL 存储 Oracle
Oracle数据库 | 基于SQL基础分析
Oracle数据库 | 基于SQL基础分析
107 0
|
Oracle 关系型数据库 索引
ORACLE关于索引是否需要定期重建争论的整理
ORACLE数据库中的索引到底要不要定期重建呢? 如果不需要定期重建,那么理由是什么? 如果需要定期重建,那么理由又是什么?另外,如果需要定期重建,那么满足那些条件的索引才需要重建呢?关于这个问题,网上也有很多争论,也一直让我有点困惑,因为总有点不得庐山真面目的感觉,直到上周看到了一些资料,遂整理于此,方便以后翻阅:   首先来看看网上关于索引需要重建的准则或标准:    一:分析(analyze)指定索引之后,查询index_stats的height字段的值,如果这个值>=4 ,最好重建(rebuild)这个索引。
1873 0
|
Oracle 关系型数据库 Unix

热门文章

最新文章