How To Determine The Cause Of Lots Of Redo Generation Using LogMiner (Doc ID 300395.1)
How To Determine The Cause Of Lots Of Redo Generation Using LogMiner (Doc ID 300395.1)
APPLIES TO:
Oracle Database - Enterprise Edition - Version 8.1.7.4 to 10.2.0.5 [Release 8.1.7 to 10.2]
Oracle Database - Enterprise Edition - Version 11.2.0.1 and later
Oracle Database Cloud Schema Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Oracle Database Exadata Cloud Machine - Version N/A and later
Information in this document applies to any platform.
NOTE: In the images and/or the document content below, the user information and data used represents fictitious data. Any similarity to actual persons, living or dead, is purely coincidental and not intended in any manner.
GOAL
This article provides guidelines DBAs can use to determine which OPERATION codes are generating lots of redo information.
本文提供了DBA可用来确定哪些 OPERATION 代码正在生成大量 redo 的准则。
This article is intended for DBAs. The article assumes the reader is familiar with LogMiner and has basic skills in mining redo logs.
本文适用于DBA。 本文假定读者熟悉 LogMiner,并且具有挖掘redo日志的基本技能。
SOLUTION
--- How to determine the cause of lots of redo generation using LogMiner ---
Using OPERATION Codes to Understand Redo Information 使用 OPERATION 了解 Redo 信息
There are multiple operation codes which can generate the redo information, using following guide lines you can identify the operation codes which are causing the high redo generation and you need to take an appropriate action on it to reduce the high redo generation.
有多种操作代码可以生成redo信息,使用以下指南,您可以识别导致高redo生成的操作代码,并且需要对其采取适当的措施以减少高redo生成。
Redo records are not all equally sized. So remember that just because certain statements show up a lot in the LogMiner output, this does not guarantee that you have found the area of functionality generating the excessive redo.
What are these OPERATION codes ? 这些操作代码是什么?
- INSERT / UPDATE / DELETE -- Operations are performed on SYS objects are also considered as an Internal Operations. 对SYS对象执行的操作也被视为内部操作。
- COMMIT -- This is also "Internal" operation, you will get line "commit;" in the column sql_redo. 这也是“内部”操作,您将 在sql_redo列中 获得“ commit;”行 。
- START -- This is also "Internal" operation, you will get line "set transaction read write;" in sql_redo INTERNAL -- Dictionary updates 这也是“内部”操作,您将在 sql_redo INTERNAL -- Dictionary updates获得"set transaction read write;"
- SELECT_FOR_UPDATE - This is also an Internal operation and oracle generates the redo information for "select" statements which has "for update" clause. 这也是一个内部操作,并且oracle为具有 "for update" 子句的 "select" 语句生成redo信息。
In general INTERNAL operations are not relevant, so to query the relevant data, use "seg_owner=' in the "where" clause.
通常,INTERNAL操作无关紧要,因此要查询相关数据,请在"where" 子句中使用"seg_owner=' 。
Examples:
How to extract relevant information from the view v$logmnr_contents?
如何从视图 v$logmnr_contents 中提取相关信息
1. This SQL lists operations performed by user SCOTT 该SQL列出了用户SCOTT执行的操作
SQL> select distinct operation,username,seg_owner from v$logmnr_contents where seg_owner='SCOTT'; OPERATION USERNAME SEG_OWNER
-------------------------- ------------------------- ---------------------
DDL SCOTT SCOTT
DELETE SCOTT SCOTT
INSERT SCOTT SCOTT
UPDATE SCOTT SCOTT
2. This SQL lists the undo and redo associated with operations that user SCOTT performed
此SQL列出与用户SCOTT执行的操作相关的undo和redo
SQL> select seg_owner,operation,sql_redo,sql_undo from v$logmnr_contents where SEG_owner='SCOTT'; SCOTT DDL
create table LM1 (c1 number, c2 varchar2(10)); SCOTT INSERT
insert into "SCOTT"."LM1"("C1","C2") values ('101','AAAA');
delete from "SCOTT"."LM1" where "C1" = '101' and "C2" = 'AAAA'
and ROWID = 'AAAHfBAABAAAMUqAAA'; SCOTT UPDATE update "SCOTT"."LM1" set "C2" = 'YYY'
where "C2" = 'EEE' and ROWID = 'AAAHfBAABAAAMUqAAE';
update "SCOTT"."LM1" set "C2" = 'EEE' where "C2" = 'YYY'
and ROWID = 'AAAHfBAABAAAMUqAAE';
INSERT / UPDATE / DELETE -- Operations are performed on SYS objects are also considered as an Internal Operations. 对SYS对象执行的操作也被视为内部操作
3. This SQL lists undo and redo generated for UPDATE statements issues by user SCOTT 此SQL列出了用户SCOTT为UPDATE语句问题生成的undo和redo
SQL> select username, seg_owner,operation,sql_redo,sql_undo from v$logmnr_contents where operation ='UPDATE' and USERNAME='SCOTT'; UNAME SEG_OW OPERATION SQL_REDO SQL_UNDO
---------- ---------- ------------ -----------------------------------
SCOTT SYS UPDATE update "SYS"."OBJ$" set "OBJ#" = '1'..... update ....
SCOTT SYS UPDATE update "SYS"."TSQ$" set "GRANTO..... update .......
SCOTT SYS UPDATE update "SYS"."SEG$" set "TYPE#" = '5'.. update......
As per above result user SCOTT has updated SYS objects so, if you query on USERNAME, you may get incorrect result. So, better to query v$logmnr_contents on SEG_OWNER.
根据上述结果,用户SCOTT已更新了SYS对象,因此,如果您在USERNAME上进行查询,则可能会得到错误的结果。因此,最好在SEG_OWNER上查询 v$logmnr_contents。
4. Identifying Operation Counts 识别操作计数
Run the following query to see the OPERATION code row count from v$logmnr_contents, to understand which OPERATION code has generated lots of redo information.
运行以下查询以查看 v$logmnr_contents 中的 OPERATION 代码行计数,以了解哪个 OPERATION 代码已生成大量redo信息。
SQL> select operation,count(*) from v$logmnr_contents group by operation; OPERATION COUNT(*)
-------------------- ----------
COMMIT 22236
DDL 2
DELETE 1
INSERT 11
INTERNAL 11
SELECT_FOR_UPDATE 32487
START 22236
UPDATE 480 8 rows selected
5. Identifying User Counts 识别用户数
Run the following query to check user activity and operation counts: 运行以下查询以检查用户活动和操作计数
SQL> select seg_owner,operation,count(*) from v$logmnr_contents group by seg_owner,operation; SEG_OWNER OPERATION COUNT(*)
-------------------- ---------------- ---------
SCOTT COMMIT 22236
SCOTT DDL 2
SCOTT DELETE 1
...
BILLY COMMIT 12899
BILLY DDL 5
BILLY DELETE 2
...
NOTE:
Be aware of next known issue: 请注意下一个已知问题
If you are not using "select for update" statements often in your application and yet find a high operation count for operation code "SELECT_FOR_UPDATE" then you might be hitting a known issue.
如果您不经常在应用程序中使用 "select for update" 语句,却发现操作代码 "SELECT_FOR_UPDATE" 的操作计数很高,那么您可能遇到了一个已知问题。
To confirm this check whether SQL_REDO shows select,update statements on AQ$_QUEUE_TABLE_AFFINITIES and AQ$_QUEUE_TABLES.
要确认此检查,SQL_REDO 是否在 AQ$_QUEUE_TABLE_AFFINITIES and AQ$_QUEUE_TABLES 上显示 select,update 语句。
If you see these selects and updates, then check the value of the Init.ora parameter AQ_TM_PROCESSES. The default value is AQ_TM_PROCESSES = 0 meaning that the queue monitor is not created.
如果看到这些 selects and updates,请检查Init.ora参数AQ_TM_PROCESSES的值。 缺省值为AQ_TM_PROCESSES = 0表示未创建队列监视器。
If you are not using Advanced Queuing, then set AQ_TM_PROCESSES back to zero to avoid lots of redo generation on objects AQ$_QUEUE_TABLE_AFFINITIES and AQ$_QUEUE_TABLES.
如果不使用高级队列,则将AQ_TM_PROCESSES设置回零,以避免在对象 AQ$_QUEUE_TABLE_AFFINITIES and AQ$_QUEUE_TABLES 上产生大量redo。
REFERENCES
NOTE:291686.1 - LogMiner Utility Release 8i - 11g
How To Determine The Cause Of Lots Of Redo Generation Using LogMiner (Doc ID 300395.1)的更多相关文章
- How to Determine the Version of Oracle XML Publisher for Oracle E-Business Suite 11i and Release 12 (Doc ID 362496.1)
Modified: 29-Mar-2014 Type: HOWTO In this DocumentGoal Solution 1. Based upon an output file gen ...
- 如何追踪产生大量REDO的来源
从10点到12点数据库中对象块变化排名靠前的对象 select to_char(begin_interval_time,'YYYY_MM_DD HH24:MI') snap_time, dhsso.o ...
- LogMiner Utility Release 8i - 11g (Doc ID 291686.1)
LogMiner Utility Release 8i - 11g (Doc ID 291686.1) APPLIES TO: Oracle Database Exadata Cloud Machin ...
- Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name"
Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name&q ...
- Configuring HugePages for Oracle on Linux (x86-64)
Introduction Configuring HugePages Force Oracle to use HugePages (USE_LARGE_PAGES) Disabling Transpa ...
- Click to add to Favorites Troubleshooting: High Version Count Issues (Doc ID 296377.1)
Copyright (c) 2018, Oracle. All rights reserved. Oracle Confidential. Click to add to Favorites Trou ...
- 官方推荐的MySQL参数设置值
这oracle官方推荐的在OLTP环境下,MySQL参数设置的最佳实践. 下面的参数设置,对系统的性能会很有帮助.但是建议大家还是结合实际情况使用. APPLIES TO: MySQL Server ...
- 转 如何诊断和解决high version count 10.2.0.4 and 11.2.0.4
转自 http://blog.csdn.net/notbaron/article/details/50927492 在Oracle 10g以上的版本,High version count可谓是一个臭名 ...
- Master Note: Undo 空间使用率高 (Doc ID 1578639.1)
Master Note: High Undo Space Usage (Doc ID 1578639.1) APPLIES TO: Oracle Database Cloud Schema Servi ...
随机推荐
- C语言笔记 04_运算符
运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 算术运算符 ...
- Java基础语法06-面向对象-继承
七.继承 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类中无需再定义这些属性和行为,只需要和抽取出来的类构成继承关系. 继承的好处 提高代码的复用性. 提高代码的扩展性. 类与 ...
- .net core 获取树莓派的机器码,唯一ID,唯一串号
今天在实际开发树莓派程序的时候,碰到了一个问题,需要获取到树莓派的唯一串号信息.必须在.net core的环境下: 那么如何实现呢?我们先查找树莓派的基本信息是储存在哪里的? 我们在下面的路径里找到了 ...
- c++多个文件中共用一个全局变量 变量跨文件使用
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12047602.html 虽然很多博客都写过这个了 但是 我还是继续补充的详细一点吧 毕竟很多 ...
- .NET面试题解析(9)-SQL语言基础及数据库基本原理
见面试题 1. 索引的作用?她的优点缺点是什么? 2. 介绍存储过程基本概念和 她的优缺点? 3. 使用索引有哪些需要注意的地方? 4. 索引碎片是如何产生的?有什么危害?又该如何处理? 5. 锁的目 ...
- 初识NLP 自然语言处理
接下来的一段时间,要深入研究下自然语言处理这一个学科,以期能够带来工作上的提升. 学习如何实用python实现各种有关自然语言处理有关的事物,并了解一些有关自然语言处理的当下和新进的研究主题. NLP ...
- JavaWeb入门——在Windows环境下安装Tomcat服务器
JavaWeb入门——在Windows环境下安装Tomcat服务器 摘要:本文主要学习如何在Windows环境中下载并安装Tomcat服务器. 下载 获取安装包 推荐去官网上下载Tomcat: htt ...
- VUE程序调试的方法
目录 VUE程序调试的方法 1.写本文的背景 2.调试与测试 3.Console调试法 3.1 添加console.log指令 3.2 调出温度界面如下 3.3 Google浏览器的Console窗口 ...
- bootstrap-table 常用总结-树形结构
关于树形结构,上篇文章如果还是不能理解的话,请看这一篇.把其他的没有用到的功能都去掉,只留最基础的树形结构! 废话不多说,直接上代码!所有的数据都是走的本地,如果大家想改的话可以自己改,但是需要注意的 ...
- iOS利用剪切板在app中传递信息
利用iOS剪切板在app中传递信息 App1 中添加URLSchemes app1 App2 中国添加URLSchemes app2 App1中进入app2: UIApplication.sh ...