oracle日志挖掘之logminer[转帖]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
5
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4452 | 回复: 4   主题: oracle日志挖掘之logminer[转帖]        下一篇 
Gavin
注册用户
等级:少校
经验:878
发帖:130
精华:1
注册:2011-7-21
状态:离线
发送短消息息给Gavin 加好友    发送短消息息给Gavin 发消息
发表于: IP:您无权察看 2011-7-21 13:26:40 | [全部帖] [楼主帖] 楼主

From: www.jiagulun.com


Logminer是oracle从8i开始提供的用于分析重做日志信息的工具,它包括DBMS_LOGMNR和DBMS_LOGMNR_D两个package,后边的D是字典的意思。它既能分析redo log file,也能分析归档后的archive log file。在分析日志的过程中需要使用数据字典,一般先生成数据字典文件后使用,10g版本还可以使用在线数据字典。

Logminer可以分析其它数据库的重做日志文件,但是必须使用重做日志所在数据库的数据字典,否则会出现无法识别的乱码。另外被分析数据库的操作系统平台最好和当前Logminer所在数据库的运行平台一样,且block size相同。

1、运行以下2个脚本安装logminer功能,一般数据库都已经安装好了:

p5b2@/u01/app/oracle/product/10.2/rdbms/admin$ ls -l dbmsl*
-rw-r--r-- 1 oracle oinstall 17246 Oct 27 2006 dbmslm.sql
-rw-r--r-- 1 oracle oinstall 4663 Oct 27 2006 dbmslmd.sql


2、要生成数据字典文件,首先要修改一个utl_file_dir参数,修改为*或者想存放数据字典文件位置的目录:

SQL> show parameter utl_file_dir
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string
SQL> alter system set utl_file_dir='*' scope=spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.


3、生成数据字典文件

SQL> show parameter utl_file_dir
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string *
SQL> EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dict20090625.dat',dictionary_location => '/orabak');
PL/SQL procedure successfully completed.


4、可以先设置使用的表空间

SQL> EXECUTE DBMS_LOGMNR_D.SET_TABLESPACE('erp')
PL/SQL procedure successfully completed.


5、填加要分析的日志文件

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/orabak/testarch/1_89802_640266118.dbf',Options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.


6、可以继续填加,用dbms_logmnr.removefile可以删除

SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/orabak/testarch/1_89807_640266118.dbf',Options=>dbms_logmnr.addfile);
PL/SQL procedure successfully completed.


7、开始分析日志

SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/orabak/dict20090625.dat');
PL/SQL procedure successfully completed.


提取特定时间的日志:

dbms_logmnr.start_logmnr(dictfilename=>'/orabak/dict20090625.dat',
starttime=>to_date('2009-06-24 09:30:00','YYYY-MM-DD HH24:MI:SS'),
endtime=>to_date('2009-06-24 12:00:59','YYYY-MM-DD HH24:MI:SS'))


使用在线数据字典:

SQL> EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
PL/SQL procedure successfully completed.


8、查看结果

select timestamp,username,session#,sql_redo,operation from v$logmnr_contents;


9、结束分析,释放PGA内存资源

SQL> exec dbms_logmnr.end_logmnr;
PL/SQL procedure successfully completed.


注意,v$logmnr_contents内容保存了日志的内容,只在当前会话有效,如果想长期保存分析,可以在当前会话用create table tablename as select * from v$logmnr_contents语句来持久保存。

另外一个windows环境的测试:

SQL> desc v$logmnr_logs;


名称 是否为空? 类型

----------------------------------------- --------
LOG_ID NUMBER
FILENAME VARCHAR2(512)
LOW_TIME DATE
HIGH_TIME DATE
DB_ID NUMBER
DB_NAME VARCHAR2(8)
RESET_SCN NUMBER
RESET_SCN_TIME DATE
THREAD_ID NUMBER
THREAD_SQN NUMBER
LOW_SCN NUMBER
NEXT_SCN NUMBER
DICTIONARY_BEGIN VARCHAR2(3)
DICTIONARY_END VARCHAR2(3)
TYPE VARCHAR2(7)
BLOCKSIZE NUMBER
FILESIZE NUMBER
INFO VARCHAR2(32)
STATUS NUMBER
SQL> select filename from v$logmnr_logs;
FILENAME
--------------------------------------------------------------------------------
E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVERY_FILE_DESTARC26_666280390_1
E:ORACLEPRODUCT10.2.0DB_2DATABASEDB_RECOVERY_FILE_DESTARC27_666280390_1
SQL> select log_id,low_scn,low_time,next_scn,high_time from v$logmnr_logs;
LOG_ID LOW_SCN LOW_TIME NEXT_SCN HIGH_TIME
---------- ---------- ------------------- ---------- -------------------
26 1576118 2008/09/26 12:56:37 1580527 2008/09/26 13:15:02
27 1580527 2008/09/26 13:15:02 1580563 2008/09/26 13:16:04
SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'E:\logmnrdict.ora',startscn=>1576118,endscn=>1580563);
SQL> select scn,timestamp , sql_redo from v$logmnr_contents where seg_owner='TEST' and seg_name='TT';




赞(0)    操作        顶端 
匿名用户
发表于: IP:您无权察看 2011-7-21 15:28:02 | [全部帖] [楼主帖] 2  楼

看看注册好了没


赞(0)    操作        顶端 
匿名用户
发表于: IP:您无权察看 2011-7-21 15:34:30 | [全部帖] [楼主帖] 3  楼

看来是已经注册好了,不过用户的基本资料修改完善,是从哪里进呢?


赞(0)    操作        顶端 
kim
注册用户
等级:中校
经验:1729
发帖:222
精华:0
注册:2011-7-21
状态:离线
发送短消息息给kim 加好友    发送短消息息给kim 发消息
发表于: IP:您无权察看 2011-7-21 15:49:02 | [全部帖] [楼主帖] 4  楼

终于,我也通过了。



赞(0)    操作        顶端