LOGMNR分析redo log和archive log教程
自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日志的步骤,供大家参考学习: 一、分析REDO日志的实验 1.创建测试表,并做DML操作。 SQL create table t_test
自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日志的步骤,供大家参考学习:
一、分析REDO日志的实验
1.创建测试表,并做DML操作。
SQL> create table t_test(id number,name varchar2(15));
Table created.
SQL> insert into t_test values(1,'stream');
1 row created.
SQL> insert into t_test values(2,'dbdream');
1 row created.
SQL> commit;
Commit complete.
SQL> update t_test set name='streamsong' where id=1;
1 row updated.
SQL> commit;
Commit complete.
SQL> delete from t_test;
2 rows deleted.
SQL> commit;
Commit complete.
2.查看REDO日志的路径。
SQL> select member from v$logfile;
MEMBER
------------------------------------------------
/u01/app/oracle/oradata/stream/STREAM/redo03.log
/u01/app/oracle/oradata/stream/STREAM/redo02.log
/u01/app/oracle/oradata/stream/STREAM/redo01.log
3.添加REDO日志
第一个添加的日志需指定NEW,如果确定要查询的信息在指定的REDO日志内,可以只添加那个REDO日志,而不需要再添加其他
SQL> exec dbms_logmnr.add_logfile(logfilename=>'
/u01/app/oracle/oradata/stream/STREAM/redo01.log',
options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
4.添加其他REDO日志
不是第一个添加的日志需指定ADDFILE。
SQL> exec dbms_logmnr.add_logfile(logfilename=>'
/u01/app/oracle/oradata/stream/STREAM/redo02.log',
options=>dbms_logmnr.addfile);
PL/SQL procedure successfully completed.
SQL> exec dbms_logmnr.add_logfile(logfilename=>'
/u01/app/oracle/oradata/stream/STREAM/redo03.log',
options=>dbms_logmnr.addfile);
PL/SQL procedure successfully completed.
5.开始对添加的REDO进行分析
SQL> exec dbms_logmnr.start_logmnr(options=>
dbms_logmnr.dict_from_online_catalog);
PL/SQL procedure successfully completed.
6.查看LOGMNR分析后得到的信息
LOGMNR分析后的数据会存放在v$logmnr_contents视图中,通过查询v$logmnr_contents视图就可以查询到REDO日志的信息。
SQL> select timestamp,sql_redo,sql_undo from v$logmnr_contents where username='SCOTT'and table_name='T_TEST';
TIMESTAMP SQL_REDO
--------- -----------------------------------------------------------
21-MAR-12 create table t_test(id number,name varchar2(15));
21-MAR-12 insert into "SCOTT"."T_TEST"("ID","NAME") values ('1','stream');
21-MAR-12 insert into "SCOTT"."T_TEST"("ID","NAME") values ('2','dbdream');
21-MAR-12 update "SCOTT"."T_TEST" set "NAME" = 'streamsong' where "NAME" =
'stream' and ROWID = 'AAAR7fAAEAAAADXAAA';
21-MAR-12 delete from "SCOTT"."T_TEST" where "ID" = '1' and "NAME" =
'streamsong' and ROWID = 'AAAR7fAAEAAAADXAAA';
21-MAR-12 delete from "SCOTT"."T_TEST" where "ID" = '2' and "NAME" =
'dbdream' and ROWID = 'AAAR7fAAEAAAADXAAB';
SQL_REDO就是执行的SQL语句,SQL_UNDO是回滚操作的SQL语句,也就是执行SQL_UNDO的相关SQL,就可以回滚对应的操作。
注:LOGMNR是SESSION级的,以上实验第3步到第6步需在同一个SESSION中进行,SESSION断开连接后需重新执行,否则会报以下错误提示。
SQL> select count(*) from v$logmnr_contents;
select count(*) from v$logmnr_contents
*
ERROR at line 1:
ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from
v$logmnr_contents
7.结束LOGMNR操作
由于LOGMNR是会话级的,可以用直接退出或关闭当前的终端的方式来结束LOGMNR的操作,当然,正确的结束LOGMNR操作需使用下面的命令。
SQL> exec dbms_logmnr.end_logmnr;
PL/SQL procedure successfully completed.
二、分析归档日志的实验
分析归档日志的操作和分析REDO的操作基本一样,最重要的就是准确的找到需要查找的信息在哪些归档日志内。既然是利用LOGMNR分析归档日志,数据库一定是在归档模式,要不哪来的归档日志,可以通过如下命令查看数据库是否启用归档模式。
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 15
Next log sequence to archive 17
Current log sequence 17
可以看到当前数据库已经开启归档模式,归档地址是USE_DB_RECOVERY_FILE_DEST,USE_DB_RECOVERY_FILE_DEST的具体位置可以通过下面的命令查看。
SQL> show parameter db_recove
NAME TYPE VALUE
--------------------------- ----------- -------------------------------
db_recovery_file_dest string /u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size big integer 3852M
如果数据据库开启闪回恢复区,闪回恢复区就是默认的归档地址,也是RMAN备份文件的默认存放地址,如果数据库开启闪回特性,这也是存放闪回日志的默认地址。强烈建议手动修改归档日志的存放地址,闪回恢复区的大小受db_recovery_file_dest_size大小的限制,已经遇到好多客户的数据库由于没有指定归档日志的路径,闪回恢复区满导致REDO日志无法归档,导致数据库挂起的情况。如何更改归档日志的路径,请参照《Oracle系统归档模式管理》
本实验步骤如下:
1.切换日志,使REDO日志归档。
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
2.按照归档日志的时间,找到存放需要分析信息的归档日志。
[oracle@stream 2012_03_21]$ pwd
/u01/app/oracle/flash_recovery_area/STREAM/archivelog/2012_03_21
[oracle@stream 2012_03_21]$ ll
total 32196
-rw-r----- 1 oracle oinstall 26598912 Mar 21 10:55 o1_mf_1_12_7pljs9lb_.arc
-rw-r----- 1 oracle oinstall 6206976 Mar 21 14:05 o1_mf_1_13_7plvx3bc_.arc
-rw-r----- 1 oracle oinstall 100864 Mar 21 14:07 o1_mf_1_14_7plw0bgo_.arc
-rw-r----- 1 oracle oinstall 1024 Mar 21 14:07 o1_mf_1_15_7plw0d0q_.arc
-rw-r----- 1 oracle oinstall 2048 Mar 21 14:07 o1_mf_1_16_7plw0gc1_.arc
3.将归档日志添加到LOGMNR。
SQL> exec dbms_logmnr.add_logfile(logfilename=>
'/u01/app/oracle/flash_recovery_area/STREAM/archivelog/
2012_03_21/o1_mf_1_13_7plvx3bc_.arc',options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
SQL> exec dbms_logmnr.add_logfile(logfilename=>
'/u01/app/oracle/flash_recovery_area/STREAM/archivelog/
2012_03_21/o1_mf_1_14_7plw0bgo_.arc',options=>dbms_logmnr.addfile);
PL/SQL procedure successfully completed.
4.开始分析。
SQL> exec dbms_logmnr.start_logmnr(options=>
dbms_logmnr.dict_from_online_catalog);
PL/SQL procedure successfully completed.
5.查看LOGMNR分析后的数据。
SQL> select timestamp,sql_redo from v$logmnr_contents where username='SCOTT' and table_name='T_TEST';
TIMESTAMP SQL_REDO
--------- -----------------------------------------------------------------
21-MAR-12 create table t_test(id number,name varchar2(15));
21-MAR-12 insert into "SCOTT"."T_TEST"("ID","NAME") values ('1','stream');
21-MAR-12 insert into "SCOTT"."T_TEST"("ID","NAME") values ('2','dbdream');
21-MAR-12 update "SCOTT"."T_TEST" set "NAME" = 'streamsong' where "NAME" =
'stream' and ROWID = 'AAAR7fAAEAAAADXAAA';
21-MAR-12 delete from "SCOTT"."T_TEST" where "ID" = '1' and "NAME" =
'streamsong' and ROWID = 'AAAR7fAAEAAAADXAAA';
21-MAR-12 delete from "SCOTT"."T_TEST" where "ID" = '2' and "NAME" =
'dbdream' and ROWID = 'AAAR7fAAEAAAADXAAB';
6 rows selected.
6.结束LOGMNR操作。
SQL> exec dbms_logmnr.end_logmnr;
PL/SQL procedure successfully completed.
我要分享该文章 0这篇文章很赞
本文链接:http://www.askoracle.org/oracle/ORA-errors/902.html | Ask Oracle社区
LOGMNR分析redo log和archive log教程的更多相关文章
- Oracle 11g的Redo Log和Archive Log的分析方法
自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日 ...
- 详细分析MySQL事务日志(redo log和undo log) 表明了为何mysql不会丢数据
innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...
- Oracle logminer 分析redo log(TOAD与PLSQL)
Oracle logminer 分析redo log Oracle 11g r2 RAC centos 6.5 设置时间格式 select to_char(sysdate,'yyyy-mm-dd hh ...
- DBA_Oracle日志文件 - altert / trace /audit / redo / archive log(概念)
2014-07-26 Created By BaoXinjian
- 详细分析MySQL事务日志(redo log和undo log)
innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...
- DBA_Oracle Archive Log的基本应用和启用(概念)
2014-11-15 Created By BaoXinjian
- alter system [switch logfile]与[archive log current]的区别
--alter system [switch logfile]与[archive log current]的区别 ------------------------------------------- ...
- bin log、redo log、undo log和MVVC
logs innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过 ...
- InnoDB事务日志(redo log 和 undo log)详解
数据库通常借助日志来实现事务,常见的有undo log.redo log,undo/redo log都能保证事务特性,undolog实现事务原子性,redolog实现事务的持久性. 为了最大程度避免数 ...
随机推荐
- Java中的数据类型——通过示例学习Java编程(5)
作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=15 数据类型用来定义变量可以采用的值,例如,如果变 ...
- arcgis jsapi接口入门系列(1):地图
地图相关 //地图相关demo mapFun: function () { //获取地图中心点 let center = this.mapView.center; //地图中心点坐标(同地图坐标系) ...
- Android GreenDao 深查询 n:m 的关系
在我的应用程序这样设计的关系:和我想选择至少一个用户作为一个朋友的所有聊天. 基本上,我想要执行以下查询:\ SELECT c.* FROM CHAT c, USER u, UserChats uc ...
- 关于&0xF0的一些认识
首先,要明白0xF0转换成二进制是多少 ----- 1111 0000(0xF0相当于高四位保留,低四位置为0) 我们拿麻将的一万(0x01).一条(0x11).一筒(0x21) 一万的二进制原码 ...
- 在Eclipse上运行Spark(Standalone,Yarn-Client)
欢迎转载,且请注明出处,在文章页面明显位置给出原文连接. 原文链接:http://www.cnblogs.com/zdfjf/p/5175566.html 我们知道有eclipse的Hadoop插件, ...
- Sublime Text3括号配对与代码包围效果BracketHighlighter
就这么看json等配置文件,太难了,我们需要括号匹配插件BracketHighlighter,但是装完以后只有下划线提示不明显,需要配置 Bracket Settings-Default 文件 ...
- js 判断是什么浏览器、是否为谷歌浏览器
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http ...
- 2890: C--去掉+86
2890: C--去掉+86 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 210 Solved: 91[Submit][Status][Web Bo ...
- 快学UiAutomator各种框架介绍
Monkey 编写语言:命令行 运行环境:使用adb连接PC运行测试对象:Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程 ...
- node mocha mochawesome报安装不成功
1.进行cnpm安装: npm install cnpm -g --registry=https://registry.npm.taobao.org 2.查看cnpm版本 cnpm -v 3.安装mo ...