阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Oracle的Logminer工具进行日志挖掘

107次阅读
没有评论

共计 2521 个字符,预计需要花费 7 分钟才能阅读完成。

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 语句来持久保存。

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-11/148504.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2521字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中