今天花时间 把oracle 日志分析一下 , 这里简单分析一下心得
首先 配置环境, 这里简单说说:
1 安装logminer
2 创建数据字段文件
show parameter utl_file_dir
如果是 null 需要配置 alter system set utl_file_dir='d:\oracle\logmnr' scope=both;
3 配置 字典文件
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary1.ora', dictionary_location =>'D:\oracle\logmnr');
4 设置日志扩展模式
select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
alter database add supplemental log data;
select SUPPLEMENTAL_LOG_DATA_MIN from v$database; --- YES
show parameter utl_file_dir
添加 日志分析文件
exec dbms_logmnr.add_logfile('D:\OR ACLE\APP\QIULONG\ORADATA\ORCL\REDO01.LOG', dbms_logmnr.new);
select * from v$logmnr_logs;
开始分析日志
exec dbms_logmnr.start_logmnr( dictfilename=>'D:\oracle\logmnr\dictionary.ora');
select filename from v$logmnr_dictionary;
查询分析结果
select operation,sql_redo,sql_undo from v$logmnr_contents where seg_owner='ROOT' and seg_name='EMP1';
查询的结果 。。。
delete from "ROOT"."EMP1" where "EMPNO" = '7566' and "ENAME" = 'JONES' and "JOB" = 'MANAGER' and "MGR" = '7839' and "HIREDATE" = TO_DATE('02-4月 -81', 'DD-MON-RR') and "SAL" = '2975' and "COMM" IS NULL and "DEPTNO" = '20' and ROWID = 'AAASPiAAEAAAAKTAAD';
insert into "ROOT"."EMP1"("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") values ('7566','JONES','MANAGER','7839',TO_DATE('02-4月 -81', 'DD-MON-RR'),'2975',NULL,'20');
redo 和 undo 是对应的, 我是删除数据做测试的... 所以一个 delete。。。 一个是 insert
这个对我们的数据恢复很重要, 查询数据变化过程也很好...
退出
exec dbms_logmnr.end_logmnr;
这个就在上周 我们的数据库数据出错了, 是 mysql , 我mysql 数据恢复, 我还不太会的.... 但是我想到了 oracle, 要是 oracle 我倒是 可以找找的..