从10点到12点数据库中对象块变化排名靠前的对象

select to_char(begin_interval_time,'YYYY_MM_DD HH24:MI') snap_time,

dhsso.object_name,

sum(db_block_changes_delta)

from dba_hist_seg_stat dhss,

dba_hist_seg_stat_obj dhsso,

dba_hist_snapshot dhs

where dhs.snap_id = dhss.snap_id

and dhs.instance_number = dhss.instance_number

and dhss.obj# = dhsso.obj#

and dhss.dataobj# = dhsso.dataobj#

and begin_interval_time between

to_date('2018_12_25 10','YYYY_MM_DD HH24') and

to_date('2018_12_25 13','YYYY_MM_DD HH24')

GROUP BY to_char(begin_interval_time,'YYYY_MM_DD HH24:MI'),

dhsso.object_name

order by 3 desc;

ZQF_LYJ_D42_USR这张表最近几个snap间隔的变化量

select to_char(begin_interval_time,'YYYY_MM_DD HH24:MI') snap_time,

sum(db_block_changes_delta)

from dba_hist_seg_stat dhss,

dba_hist_seg_stat_obj dhsso,

dba_hist_snapshot dhs

where dhs.snap_id = dhss.snap_id

and dhs.instance_number = dhss.instance_number

and dhss.obj# = dhsso.obj#

and dhss.dataobj# = dhsso.dataobj#

and dhsso.object_name = 'ZQF_LYJ_D42_USR'

GROUP BY to_char(begin_interval_time,'YYYY_MM_DD HH24:MI');

历史SQL中关于ZQF_LYJ_D42_USR

select to_char(begin_interval_time,'YYYY_MM_DD HH24'),

dbms_lob.substr(sql_text,4000,1),

dhss.instance_number,

dhss.sql_id,

executions_delta,

dhss.rows_processed_delta

from dba_hist_sqlstat dhss,dba_hist_snapshot dhs,dba_hist_sqltext dhst

where upper(dhst.sql_text) like '%ZQF_LYJ_D42_USR%'

and dhss.snap_id = dhs.snap_id

and dhss.instance_number = dhs.instance_number

and begin_interval_time between

to_date('2018_12_25 10','YYYY_MM_DD HH24') and

to_date('2018_12_25 13','YYYY_MM_DD HH24')

and dhss.sql_id=dhst.sql_id;

SQL: How to Find Sessions Generating Lots of Redo or Archive logs (文档 ID 167492.1)

***Checked for relevance on 13-Oct-2015***

goal: How to find sessions generating lots of redo

fact: Oracle Server - Enterprise Edition 8

fact: Oracle Server - Enterprise Edition 9

fact: Oracle Server - Enterprise Edition 10

fix:

To find sessions generating lots of redo, you can use either of the following

methods. Both methods examine the amount of undo generated. When a transaction

generates undo, it will automatically generate redo as well.

The methods are:

1) Query V$SESS_IO. This view contains the column BLOCK_CHANGES which indicates

how much blocks have been changed by the session. High values indicate a

session generating lots of redo.

The query you can use is:

SQL> SELECT s.sid, s.serial#, s.username, s.program,

i.block_changes

FROM v$session s, v$sess_io i

WHERE s.sid = i.sid

ORDER BY 5 desc, 1, 2, 3, 4;

Run the query multiple times and examine the delta between each occurrence

of BLOCK_CHANGES. Large deltas indicate high redo generation by the session.

2) Query V$TRANSACTION. This view contains information about the amount of

undo blocks and undo records accessed by the transaction (as found in the

USED_UBLK and USED_UREC columns).

The query you can use is:

SQL> SELECT s.sid, s.serial#, s.username, s.program,

2  t.used_ublk, t.used_urec

3  FROM v$session s, v$transaction t

4  WHERE s.taddr = t.addr

5  ORDER BY 5 desc, 6 desc, 1, 2, 3, 4;

Run the query multiple times and examine the delta between each occurrence

of USED_UBLK and USED_UREC. Large deltas indicate high redo generation by

the session.

You use the first query when you need to check for programs generating lots of

redo when these programs activate more than one transaction. The latter query

can be used to find out which particular transactions are generating redo.

How To Determine The Cause Of Lots Of Redo Generation Using LogMiner (文档 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

Information in this document applies to any platform.

GOAL

This article provides guidelines DBAs can use to determine which OPERATION codes are generating lots of redo information.

This article is intended for DBAs. The article assumes the reader is familiar with LogMiner and has basic skills in mining redo logs.

SOLUTION

--- How to determine the cause of lots of redo generation using LogMiner ---

Using OPERATION Codes to Understand Redo Information

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.

NOTE:

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.

COMMIT -- This is also "Internal" operation, you will get line "commit;" in the column sql_redo.

START -- This is also "Internal" operation, you will get line "set transaction read write;" in sql_redo INTERNAL -- Dictionary updates

SELECT_FOR_UPDATE - This is also an Internal operation and oracle generates the redo information for "select" statements which has "for update" clause.

In general INTERNAL operations are not relevant, so to query the relevant data, use "seg_owner=' in the "where" clause.

Examples :

How to extract relevant information from the view v$logmnr_contents?

1. This SQL lists operations performed by user 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> 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.

3. This SQL lists undo and redo genereated for UPDATE statements issues by user SCOTT

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.

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.

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.

To confirm this check whether SQL_REDO shows select,update statements on AQ$_QUEUE_TABLE_AFFINITIES and AQ$_QUEUE_TABLES.

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.

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.

如何追踪产生大量REDO的来源的更多相关文章

  1. 【恢复,1】 redo 日志恢复的各种情况

    Recovering After the Loss of Online Redo Log Files If a media failure has affected the online redo l ...

  2. 怎么知道RTL Schematic中的instance与哪段代码对应呢

    2013-06-23 20:15:47 ISE综合后可以看到RTL Schematic,但我们知道在RTL编码时,要经常问自己一个问题“我写的这段代码会综合成什么样的电路呢”.对于一个简单的设计,比如 ...

  3. CVE-2010-2883Adobe Reader和Acrobat CoolType.dll栈缓冲区溢出漏洞分析

       Adobe Acrobat和Reader都是美国Adobe公司开发的非常流行的PDF文件阅读器. 基于Window和Mac OS X的Adobe Reader和Acrobat 9.4之前的9.x ...

  4. UAVStack的慢SQL数据库监控功能及其实现

    UAVStack是一个全维监控与应用运维平台.UAV.Monitor具备监控功能,包含基础监控.应用/服务性能监控.日志监控.业务监控等.在应用监控中,UAV可以根据应用实例画像:其中应用实例组件可以 ...

  5. 通过代码审计找出网站中的XSS漏洞实战(三)

    一.背景 笔者此前录制了一套XSS的视频教程,在漏洞案例一节中讲解手工挖掘.工具挖掘.代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完,内容有一些关联性,其中手工XSS挖掘篇地址为 ...

  6. 【Web开发】到底什么是短链接

    目录 什么是短链接 为什么使用短链接 节省发送的内容 提升用户体验 便于链接追踪,分析点击来源 一定程度上保护原始网站链接 短链接生成平台 短链接生成原理 参考 今天无意中看到一个名词--" ...

  7. Hadoop-No.11之元数据

    元数据的重要性 三个重要理由,让我们不得不在意元数据 元数据允许用户通过一张表的高一级逻辑抽象,而不是HDFS中文件的简单几何,或者HBase中的表来与数据交互.这意味着用户不比关心数据是如何存储的, ...

  8. iOS 中的 Deferred Deep Linking(延迟深度链接)

    http://www.cocoachina.com/ios/20160105/14871.html Deep Linking 其实 deep linking 并不是一个新名词,在 web 开发领域,区 ...

  9. dubbo 2.7应用级服务发现踩坑小记

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 背景 本文记录最近一位读者反馈的dubbo 2.7.x中应用级服务发现的问题,关于dubbo应 ...

随机推荐

  1. 列表生成式,迭代器&生成器

    python3中range(10)就 是迭代器 列表生成式 #列表生成式 a=[0,1,2,3,4,5] b=[] for index,i in enumerate(a): a[index]+1 pr ...

  2. Java的家庭记账本程序(G)

    日期:2019.2.24 博客期:035 星期日 啊哈!记账本虽然还是没有做完,不过,今天我的工作量应该是足够的!哦!差点忘记说啦!我是在Android Studio出现了问题之后,跑去研究微信小程序 ...

  3. python selenium Chrome模拟手机浏览器

    在做移动端页面测试时可以利用Chrome mobile emulation 辅助完成页面的适配问题,但是目前手机市场上的型号居多我们也没有办法通过人工的模式一一的去适配,所以这里考虑到通过自动化的模式 ...

  4. Tomcat 下4个配置文件详解

    Tomcat 的配置文件由4个 xml 文件构成,context.xml.web.xml.server.xml.tomcat-users.xml 这4个文件.每个文件都有自己的功能与配置方法,下列将逐 ...

  5. numpy的基础运算2-【老鱼学numpy】

    numpy的基础运算中还有很多运算,我们这里再记录一些. 最小/大值索引 前面一篇博文中我们讲述过如何获得数组中的最小值,这里我们获得最小/大值的索引值,也就是这个最小/大值在整个数组中位于第几位. ...

  6. 咸鱼入门到放弃9--jsp中使用的JavaBean

    一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...

  7. MySQL通过Navicat实现远程连接的过程

      直接使用Navicat通过IP连接会报各种错误,例如:Error 1130: Host '192.168.1.80' is not allowed to connect to this MySQL ...

  8. 反素数ant HYSBZ - 1053(数学+dfs)

    对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x ,则称x为反质数.例如,整数1,2,4,6等都是反质 ...

  9. Java虚拟机-对象的创建和访问

    一.对象的创建: 创建对象在java上面是很简单的,使用new关键字就可以了,但是其实在虚拟机中,java对象的创建是一个复杂的过程. 当java虚拟机遇到一个new的指令的时候,对象创建的程序正式启 ...

  10. __x__(29)0908第五天__高度塌陷 问题

    高度塌陷 在文档流中,父元素的高度默认是被子元素撑开的. 但是当为 子元素 设置 float 时,子元素会完全脱离文档流,无法再撑开父元素,导致父元素高度塌陷...以致于布局混乱 变成 BFC块级格式 ...