Oracle logminer 分析redo log(TOAD与PLSQL)
Oracle logminer 分析redo log
Oracle 11g r2 RAC centos 6.5
设置时间格式
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') date_format from dual ;
查看数据库是否开启补全日志功能
select
SUPPLEMENTAL_LOG_DATA_MIN,
SUPPLEMENTAL_LOG_DATA_PK,
SUPPLEMENTAL_LOG_DATA_UI,
SUPPLEMENTAL_LOG_DATA_FK,
SUPPLEMENTAL_LOG_DATA_ALL from v$database;
开启补全日志
alter database add supplemental log data;
alter database add supplemental log data (primary key, unique,foreign key) columns;
再次查询检查是否开启
开启归档--详细见归档的开启
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination +FRA/bol/arch
Oldest online log sequence 93
Next log sequence to archive 95
Current log sequence 95
配置LogMiner工具
SQL> show parameter UTL_FILE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string
1 利用toad自带的工具logminer
dml 操作
select *from TESTYHQ;
insert into TESTYHQ(id1,name1)values (2,'hq');
commit;
利用toad的logminer直接分析redo
select * from V$LOGFILE;
select group#,sequence#,bytes,members,status from v$log;
toad-database-diagnose-logminer
选择online logs,输入redo文件全路径,比如
+DATA/bol/onlinelog/group_2.258.990861405
再选择时间范围,选择过大的话,日志会有很多,完成后点击finish,直接生成记录
可以用sql进行筛选查看
select scn,timestamp,operation,seg_owner,seg_name,
table_space,row_id,username,os_username,machine_name,
session#,serial#,sql_redo,sql_undo from v$logmnr_contents where seg_owner='SDE';
几个关键字段,username,machine_name,session#,serial#,sql_redo,sql_undo,可以清楚的看见
scn,时间,操作内容,表名,操作的机器名字,和操作语句,以及undo内容
2 利用plsql进行分析
[root@rac1 /]# mkdir u02
[root@rac1 /]# chown oracle:oinstall /u02
alter system set utl_file_dir='/u02' scope=spfile; --需要重启db
SQL> show parameter UTL_FILE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir string /u02
[root@rac1 admin]# ls dbmslm*
dbmslmd.sql dbmslm.sql dbmslms.sql
[root@rac1 admin]# pwd
/u01/app/11.2.0/grid/rdbms/admin
SQL> @/u01/app/11.2.0/grid/rdbms/admin/dbmslmd.sql
SQL> @/u01/app/11.2.0/grid/rdbms/admin/dbmslm.sql
SQL> @/u01/app/11.2.0/grid/rdbms/admin/dbmslms.sql
SQL> execute dbms_logmnr_d.build(dictionary_filename =>'dfdict.data',dictionary_location =>'/u02');
PL/SQL procedure successfully completed.
--- 如果报错,请检查目录及权限
*
ERROR at line 1:
ORA-01336: specified dictionary file cannot be opened
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 6110
ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 6200
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 12
ORA-06512: at line 1
--
insert into TESTYHQ(id1,name1)values (444,'hq');
commit;
select group#,sequence#,bytes,members,status from v$log;
select * from V$LOGFILE;
SQL> alter system switch logfile;
----
因为这里只有一个日志,那么只需要添加一个就好了(第一个日志用new“=>dbms_logmnr.new”)
execute dbms_logmnr.add_logfile(options =>dbms_logmnr.new,logfilename =>'/u01/app/oracle/oradata/or11g/redo01.log');
如果是有多个日志,那么就继续添加(添加其他日志用add“=>dbms_logmnr.addfile”):
execute dbms_logmnr.add_logfile(options =>dbms_logmnr.addfile,logfilename=>'/u01/app/oracle/oradata/or11g/redo02.log');
dbms_logmnr.new --用于建一个日志分析表
dbms_logmnr.addfile --用于加,入用于分析的日志文件
dbms_logmnr.removefile --用于移出,用于分析的日志文件
如果是删除日志就用removefile,如:
execute dbms_logmnr.add_logfile(options =>dbms_logmnr.removefile,logfilename =>'/u01/app/oracle/oradata/or11g/redo03.log');
---
SQL> alter system switch logfile;
System altered.
SQL> exec dbms_logmnr.add_logfile('+DATA/bol/onlinelog/group_1.257.990861405',dbms_logmnr.new);
PL/SQL procedure successfully completed.
SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'/u02/dfdict.data');
PL/SQL procedure successfully completed.
select scn,timestamp,operation,seg_owner,seg_name,
table_space,row_id,username,os_username,machine_name,
session#,serial#,sql_redo,sql_undo from v$logmnr_contents where seg_owner='SDE';
create table t01 as select scn,timestamp,operation,seg_owner,seg_name,
table_space,row_id,username,os_username,machine_name,
session#,serial#,sql_redo,sql_undo from v$logmnr_contents where seg_owner='SDE';
--v$logmnr_contents 针对于session,其他session执行该查询就会报错
ORA-01306: 在从 v$logmnr_contents 中选择之前必须调用 dbms_logmnr.start_logmnr()
select *from t01;
SQL> exec dbms_logmnr.end_logmnr;--关闭日志挖掘
PL/SQL procedure successfully completed.
select *from t01;
Oracle logminer 分析redo log(TOAD与PLSQL)的更多相关文章
- Oracle Logminer 分析重做日志RedoLog和归档日志ArchiveLog
在实际开发过程中,有时我们很有可能需要某个表的操作痕迹,或通过记录的SQL语句进行有目的性的数据恢复(此时POINT-IN-TIME恢复已经满足不了更细的粒度).或仅仅是查看: 据说Oracle8i之 ...
- Oracle Dataguard Standby Redo Log的两个实验
在Data Guard环境中,Standby Redo Log是一个比较特殊的日志类型.从最新的DG安装指导中,都推荐在Primary和Standby端,都配置Standby Redo Log. 简单 ...
- Oracle 11g的Redo Log和Archive Log的分析方法
自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日 ...
- LOGMNR分析redo log和archive log教程
自Oracle 11g起,无需设置UTL_FILE_DIR就可以使用LOGMNR对本地数据库的日志进行分析,以下是使用LOGMNR的DICT_FROM_ONLINE_CATALOG分析REDO和归档日 ...
- Oracle Redo Log 机制 小结(转载)
Oracle 的Redo 机制DB的一个重要机制,理解这个机制对DBA来说也是非常重要,之前的Blog里也林林散散的写了一些,前些日子看老白日记里也有说明,所以结合老白日记里的内容,对oracle 的 ...
- 1、图解Oracle Logminer配置使用
LogMiner配置使用手册 1 Logminer简介 1.1 LogMiner介绍 Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻 ...
- DBA_Oracle LogMiner分析重做和归档日志(案例)
2014-08-19 Created By BaoXinjian
- [Oracle]LogMiner工具小结
(一)LogMiner工具的作用Logminer工具主要用来分析redo log和archive log文件.通过该工具,可以轻松获得Oracle redo log和archive log文件的具体内 ...
- 总结:基于Oracle Logminer数据同步
第 1 页 共 20 页 出自石山园主,博客地址:http://www.cnblogs.com/shishanyuan LogMiner 配置使用手册 1 Logminer 简介 1.1 LogMin ...
随机推荐
- 算法总结之 在数组中找到出现次数 > N/K的数
题目1 给定一个整型数组arr, 打印其中出现次数大于一半的数, 如果没有这样的数,打印提示信息 进阶 给定一个整型数组arr, 再给定一个整数K, 打印所有出现次数大于 N/K的数,如果没有这样的 ...
- 中文乱码问题(页面乱码,eclipse乱码,请求响应乱码)
1.首先在开发工具eclipse中设置工作空间和文件编码格式,详情参见 http://www.cnblogs.com/lixiang1993/p/7345161.html 2.在eclipse的安 ...
- Apache Phoenix基本操作-2
1. 如何映射一个Phoenix的表到一个Hbase的表? 你可以通过Create table/create view DDL语句在一个已经存在的hbase表上创建一个Phoenix表或者视图.对于C ...
- POJ 1635 Subway tree systems (树的最小表示法)
题意:一串01序列,从一个点开始,0表示去下一个点,1表示回到上一个点,最后回到起点,遍历这棵树时每条边当且仅当走2次(来回) 给出两串序列,判断是否是同一棵树的不同遍历方式 题解:我们把每一个节点下 ...
- iOS中,Framework和.a的打包及使用
最近在做一个小项目,需要给客户一个demo测试,有一部分核心代码暂时不想让客户知道,就想到了打包成framework或.a库.库有两种: 静态库:.a和.framework 动态库:.tbd和.fra ...
- jq中append()、prepend()、after()、before()的区别详解
1.append() - 在被选元素的结尾插入内容(内容的结尾,比如说有个a标签,则是在</a>这个标签之前添加东西) 2.prepend() - 在被选元素的开头插入内容(内容的开始,比 ...
- Deep Learning(Ian Goodfellow) — Chapter1 Introduction
Deep Learning是大神Ian GoodFellow, Yoshua Bengio 和 Aaron Courville合著的深度学习的武功秘籍,涵盖深度学习各个领域,从基础到前沿研究.因为封面 ...
- 重写ddt的mk_test_name方法
一. 测试用例名字的问题 使用ddt做测试,得到的测试报告中,测试用例的名字默认以_01, _02, _03...递增的形式结尾,这时我希望用例名能够以_api_name结尾,比如注册模块,希望看到的 ...
- node.js 上传图片
依赖库 connect,gm,imagemagick,image-size connect:中间件 gm,imagemagick:用来处理图片如缩放.切割.添加文字水印等 image-szie:获取图 ...
- python sort() sorted() 与argsort()函数的区别
1.python的内建排序函数有 sort.sorted两个 sort函数只定义在list中,sorted函数对于所有的可迭代序列都可以定义. for example: ls = list([5, 2 ...