[网摘]如何使用Logminer来分析具体的DML操作日志
2013-04-18 11:41
866 查看
如何使用Logminer来分析具体的DML操作日志
在Oracle数据库维护中,常常需要分析原来数据库都做了哪些删除、更新、增加数据的操作,所以一般需要用到Logminer这工具来分析归档日志。
环境:AIX5.3+Oracle10.2.0.1 使用IBM的Tivoli Storage Manager把数据库数据、归档日志备份到带库中
1、确定具体时间的DML操作,把相应的归档日志从带库恢复到数据库中
2、用Logminer来分析相应的归档日志
一.在sqlplus用sys超级用户登陆数据库中,然后把当前的时间改成'yyyy-mm-dd hh24:mi:ss'格式,这样可以看清楚归档日志的起始时间:
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
二、v$log_history视图的sequence#为归档日志序列号,first_time为该归档日志的开始时间。
SQL>select sequence#,first_time from v$log_history;
记下某天的归档日志序列,比如为3988--4000
三、用rman target/ 进入数据库,把相应的归档日志从带库取到数据库中来,/oracle/oms/oradata/temp目录为放归档日志的目录。
RUN
{
SET ARCHIVELOG DESTINATION TO '/oracle/oms/oradata/temp';
RESTORE ARCHIVELOG SEQUENCE 3988;
}
注:导出多个归档日志:
RUN
{
SET ARCHIVELOG DESTINATION TO '/oracle/oms/oradata/temp';
RESTORE ARCHIVELOG SEQUENCE between 2895 and 2897;
}
注:3988为归档日志的序列号,有多个日志,需要运行多个上面的语句。
四、建立日志分析列表,把第一个归档日志放到分析列表
SQL>execute dbms_logmnr.add_logfile(logfilename=>'/oracle/oms/oradata/temp/1_3988_644336885.dbf',options=>dbms_logmnr.new);
五、把第二个归档日志放到分析列表(第二个归档日志以后都是下面的格式)
SQL>execute dbms_logmnr.add_logfile(logfilename=>'/oracle/oms/oradata/temp/1_3989_644336885.dbf',options=>dbms_logmnr.addfile);
六、启动LogMiner
SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
七、把分析出来的数据放在logminer_test表中,这样方便查询。因为表v$logmnr_contents的数据量很大,选择一个空闲的表空间
SQL>
create table logminer_test tablespace MLOG_NORM_SPACE
as
select * from v$logmnr_contents;
八、把分析日志表logminer_test的查询权限赋予给lhomsread只读的数据库用户,这样使用第三方工具很方便查询(plsql等):
SQL>grant select on logminer_test to lhomsread;
九、结束logminer
SQL> execute dbms_logmnr.end_logmnr;
在Oracle数据库维护中,常常需要分析原来数据库都做了哪些删除、更新、增加数据的操作,所以一般需要用到Logminer这工具来分析归档日志。
环境:AIX5.3+Oracle10.2.0.1 使用IBM的Tivoli Storage Manager把数据库数据、归档日志备份到带库中
1、确定具体时间的DML操作,把相应的归档日志从带库恢复到数据库中
2、用Logminer来分析相应的归档日志
一.在sqlplus用sys超级用户登陆数据库中,然后把当前的时间改成'yyyy-mm-dd hh24:mi:ss'格式,这样可以看清楚归档日志的起始时间:
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
二、v$log_history视图的sequence#为归档日志序列号,first_time为该归档日志的开始时间。
SQL>select sequence#,first_time from v$log_history;
记下某天的归档日志序列,比如为3988--4000
三、用rman target/ 进入数据库,把相应的归档日志从带库取到数据库中来,/oracle/oms/oradata/temp目录为放归档日志的目录。
RUN
{
SET ARCHIVELOG DESTINATION TO '/oracle/oms/oradata/temp';
RESTORE ARCHIVELOG SEQUENCE 3988;
}
注:导出多个归档日志:
RUN
{
SET ARCHIVELOG DESTINATION TO '/oracle/oms/oradata/temp';
RESTORE ARCHIVELOG SEQUENCE between 2895 and 2897;
}
注:3988为归档日志的序列号,有多个日志,需要运行多个上面的语句。
四、建立日志分析列表,把第一个归档日志放到分析列表
SQL>execute dbms_logmnr.add_logfile(logfilename=>'/oracle/oms/oradata/temp/1_3988_644336885.dbf',options=>dbms_logmnr.new);
五、把第二个归档日志放到分析列表(第二个归档日志以后都是下面的格式)
SQL>execute dbms_logmnr.add_logfile(logfilename=>'/oracle/oms/oradata/temp/1_3989_644336885.dbf',options=>dbms_logmnr.addfile);
六、启动LogMiner
SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
七、把分析出来的数据放在logminer_test表中,这样方便查询。因为表v$logmnr_contents的数据量很大,选择一个空闲的表空间
SQL>
create table logminer_test tablespace MLOG_NORM_SPACE
as
select * from v$logmnr_contents;
八、把分析日志表logminer_test的查询权限赋予给lhomsread只读的数据库用户,这样使用第三方工具很方便查询(plsql等):
SQL>grant select on logminer_test to lhomsread;
九、结束logminer
SQL> execute dbms_logmnr.end_logmnr;
相关文章推荐
- 理解和使用Oracle 日志分析工具-LogMiner
- 如何实现日志的集中化存储以及使用loganalyzer做日志分析 推荐
- (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法
- 理解和使用Oracle 日志分析工具-LogMiner
- LogMiner日志分析工具的使用
- 日志分析工具LogMiner使用
- ORACLE DBA学习笔记--日志文件(使用LogMiner分析日志)
- 如何使用Node.js操作redis来完成添加查询功能的具体介绍
- 使用logminer分析oracle日志
- 如何使用Logmnr方法分析数据库日志
- 如何使用Journalctl查看并操作Systemd日志
- oracle 日志分析工具logminer的安装使用
- 使用logminer进行日志分析
- winsocket使用c实现文件传输具体如何操作?
- LogMiner安装及使用来分析日志【备忘】
- 日志分析工具_logMiner的安装与使用
- 如何使用log miner分析oracle日志
- 使用Logminer工具分析DML和DDL操作
- winsocket使用c实现文件传输具体如何操作?
- [分际]如何使用EVENTLOG类操作日志