############################################
--数据库日志分析
--用于分析oracle 数据库归档日志或 REDO日志
--应用于分析数据库归档日志增长过快的原因或查找执行过的SQL等
--分析工具用LogMiner
#############################################
一、从备份的归档日志中抽取归档日志,如果是现成的归档日志(没有备份打包压缩过),则不用执行这一步
-
declare
-
devtype varchar2(256);
-
done boolean;
-
BEGIN
-
devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');
-
sys.dbms_backup_restore.restoreSetArchivedLog;
-
sys.dbms_backup_restore.restoreArchivedLogRange;
-
sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/home/oracle/orabak/databack/arc_20160201_onqssbnp_1_1.bak',params=>null);
-
sys.dbms_backup_restore.deviceDeallocate;
-
END;
二、安装对应的包
--创建DBMS_LOGMNR包,该包用来分析日志文件。
-
@$ORACLE_HOME/rdbms/admin/dbmslm.sql
--创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql;
-
@$ORACLE_HOME/rdbms/admin/dbmslmd.sql;
三、分析日志文件
--指定要分析的日志文件,如果有多个日志文件要分析,测可以用dbms_logmnr.new新增后,再用 dbms_logmnr.addfile 添加
-
exec sys.dbms_logmnr.add_logfile(logfilename => '/u01/app/oracle/arch/1_250_892951721.dbf',options => dbms_logmnr.new);
--添加要分析的日志文件
-
exec sys.dbms_logmnr.add_logfile(logfilename => '/u01/app/oracle/arch/1_251_892951721.dbf',options => dbms_logmnr.addfile);
--对日志文件进行分析,使用本地的在线数据字典分析归档日志;如果本地的数据字典与归档日志的数据字典并不一致(不是同一个数据库或跟产生归档日志的数据库没有关系),则要用到 DBMS_LOGMNR_D包
-
exec sys.dbms_logmnr.start_logmnr(options => sys.dbms_logmnr.dict_from_online_catalog);
--查询分析结果
-
select timestamp, session_info ,sql_redo from v$logmnr_contents where rownum<=20
--也可以在plsql-developer 工具中执行,效果是一样
-
begin
-
sys.dbms_logmnr.add_logfile(logfilename => '/u01/app/oracle/arch/1_250_892951721.dbf',options => dbms_logmnr.new);
-
sys.dbms_logmnr.add_logfile(logfilename => '/u01/app/oracle/arch/1_251_892951721.dbf',options => dbms_logmnr.addfile);
-
sys.dbms_logmnr.start_logmnr(options => sys.dbms_logmnr.dict_from_online_catalog);
-
end;
-
select timestamp, session_info ,sql_redo from v$logmnr_contents where rownum<=20
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29701030/viewspace-2127041/
,如需转载,请注明出处,否则将追究法律责任。