Oracle查看逻辑读、物理读资源占用排行的SQL语句

yizhihongxing

当我们需要查看Oracle数据库中占用资源比较高的SQL语句时,可以通过查询逻辑读、物理读等IO资源占用排行来进行分析和优化。下面是查询逻辑读和物理读资源占用排行的SQL语句的详细攻略,包含以下步骤:

1. 获取系统级别的物理和逻辑 IO 统计信息

我们需要先获取系统级别的物理和逻辑IO统计信息,这可以通过如下SQL语句来获取:

SELECT a.value + b.value phy_reads,
       c.value + d.value / 1024 / 1024 mb_served
FROM v$statname s,
     v$mystat a,
     v$mystat b,
     v$mystat c,
     v$mystat d
WHERE s.statistic# = a.statistic#
  AND s.name LIKE '%physical reads%'
  AND s.statistic# = b.statistic#
  AND b.name LIKE '%physical reads direct%'
  AND s.statistic# = c.statistic#
  AND c.name LIKE '%db block gets%'
  AND s.statistic# = d.statistic#
  AND d.name LIKE '%db block gets from cache%'

其中:

  • VALUE 列的第一行是物理读取操作数,第二行是逻辑读取操作数。
  • 第二行中,将逻辑读取操作数除以1024并除以1024可以将其转换为MB,以更好地理解它所代表的场景。

2. 查询逻辑和物理 IO 统计信息的排行

在获取系统级别的物理和逻辑IO统计信息之后,我们可以通过如下SQL语句来查询逻辑和物理IO统计信息的排行:

SELECT name, value
FROM v$statname s,
     v$mystat
WHERE s.statistic# = statistic#
  AND s.name IN ('physical reads', 'db block gets')
ORDER BY value DESC;

该查询会返回当前占用物理和逻辑IO资源最多的SQL语句列表,可以通过该列表来进一步分析和优化相关SQL语句。

示例说明

以下是两个示例,演示如何使用以上SQL语句来查询逻辑和物理IO资源占用排行:

示例一

假设我们的Oracle数据库遇到频繁的物理读取操作,我们可以使用上述的SQL语句来查找导致物理读取操作的SQL语句。

首先,我们可以使用SQL语句获取系统级别的统计信息:

SELECT a.value + b.value phy_reads,
       c.value + d.value / 1024 / 1024 mb_served
FROM v$statname s,
     v$mystat a,
     v$mystat b,
     v$mystat c,
     v$mystat d
WHERE s.statistic# = a.statistic#
  AND s.name LIKE '%physical reads%'
  AND s.statistic# = b.statistic#
  AND b.name LIKE '%physical reads direct%'
  AND s.statistic# = c.statistic#
  AND c.name LIKE '%db block gets%'
  AND s.statistic# = d.statistic#
  AND d.name LIKE '%db block gets from cache%';

该查询返回如下结果:

PHY_READS   MB_SERVED
---------- ----------
  21946658  55366.70

可以看到,将逻辑读取操作数除以1024并除以1024可以将其转换为MB,上述结果中,物理读取操作数是21946658,处理的数据量是55366.70 MB。

接下来,我们可以使用如下SQL查询语句来获取当前正在占用物理IO资源最多的SQL语句列表:

SELECT name, value
FROM v$statname s,
     v$mystat
WHERE s.statistic# = statistic#
  AND s.name IN ('physical reads', 'db block gets')
ORDER BY value DESC;

该查询返回如下结果:

NAME                             VALUE
-------------------------------- -----
db block gets                  195200
physical reads                   1200
db block gets from cache          690

由此可以看出,当前正在占用物理IO资源最多的SQL语句是“select * from big_table where column = 'some_value'”,这个SQL语句产生了195200个逻辑读取操作。

示例二

假设我们的Oracle数据库遇到频繁的逻辑读取操作,我们可以使用上述的SQL语句来查找导致逻辑读取操作的SQL语句。

首先,我们可以使用SQL语句获取系统级别的统计信息:

SELECT a.value + b.value phy_reads,
       c.value + d.value / 1024 / 1024 mb_served
FROM v$statname s,
     v$mystat a,
     v$mystat b,
     v$mystat c,
     v$mystat d
WHERE s.statistic# = a.statistic#
  AND s.name LIKE '%physical reads%'
  AND s.statistic# = b.statistic#
  AND b.name LIKE '%physical reads direct%'
  AND s.statistic# = c.statistic#
  AND c.name LIKE '%db block gets%'
  AND s.statistic# = d.statistic#
  AND d.name LIKE '%db block gets from cache%';

该查询返回如下结果:

PHY_READS   MB_SERVED
---------- ----------
  21946658  55366.70

接下来,我们可以使用如下SQL查询语句来获取当前正在占用逻辑IO资源最多的SQL语句列表:

SELECT name, value
FROM v$statname s,
     v$mystat
WHERE s.statistic# = statistic#
  AND s.name IN ('physical reads', 'db block gets')
ORDER BY value DESC;

该查询返回如下结果:

NAME                             VALUE
-------------------------------- -----
db block gets                  195200
physical reads                   1200
db block gets from cache          690

由此可以看出,当前正在占用逻辑IO资源最多的SQL语句是“select * from big_table where column = 'some_value'”,这个SQL语句产生了195200个逻辑读取操作。

以上就是查询逻辑和物理IO资源占用排行的SQL语句的详细攻略,希望可以对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Oracle查看逻辑读、物理读资源占用排行的SQL语句 - Python技术站

(1)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • SQL中ISNULL函数使用介绍

    当我们在编写SQL语句时,有时候需要处理NULL值的情况。为了解决这个问题,SQL中提供了ISNULL函数。ISNULL函数用于判断某个字段是否为NULL值,如果是NULL则返回指定的值。下面详细讲解ISNULL函数的使用方法和示例。 ISNULL函数的基本语法 ISNULL (check_expression, replacement_value) ISN…

    database 2023年5月21日
    00
  • SQL 从不固定位置提取字符串的元素

    当我们需要从字符串中提取指定的元素时,通过在SQL中使用一些内置的函数,例如SUBSTRING()和CHARINDEX()函数,可以轻松完成这个任务。 在下面的示例中,我将向您展示如何从不同位置提取字符串中的元素: 示例1:从起始位置提取字符串的元素 假设我们有以下这个字符串 “Hello World”,现在我们想要从字符串的起始位置提取前4个字符。可以通过…

    database 2023年3月27日
    00
  • SQL Server 2000“设备激活错误”的解决方法

    下面是详细讲解“SQL Server 2000“设备激活错误”的解决方法”的完整攻略: 问题描述 在使用 SQL Server 2000 数据库时,有时候会出现“设备激活错误”的问题。该问题会导致数据无法正常备份或还原,给工作带来不便。下面是具体的错误信息: 设备激活错误:ERROR: 0 : HRESULT = 0x80004002 解决方法 出现“设备激…

    database 2023年5月18日
    00
  • linux 命令中的大于号、小于号的作用及代表的意思

    简介 在 Linux 命令行中,< 和 > 分别代表重定向标准输入和输出。这意味着可以将命令的输出重定向到文件中,或者从文件中获取输入数据。 大于号 > 大于号 > 表示输出重定向,即将命令的输出写入文件或设备。当我们用 > 把命令的输出重定向到文件时,如果文件不存在,会自动创建文件;如果文件已经存在,会将原有内容覆盖,使用 &…

    database 2023年5月22日
    00
  • Mybatis注解方式操作Oracle数据库详解

    Mybatis注解方式操作Oracle数据库详解 1. 前言 Mybatis 是一种优秀的持久化框架,可以使数据访问层代码变得简洁而有扩展性。在Mybatis中,有两种配置方式(xml映射和注解映射),其中注解配置方式简单,直观,快速,特别适合针对简单的语句进行编程。 本文主要介绍在Oracle数据库中使用 Mybatis 注解方式的详细步骤。 2. 添加依…

    database 2023年5月21日
    00
  • MySql中sql语句执行过程详细讲解

    MySql中sql语句执行过程详细讲解 1. 概述 MySql是一种关系型数据库管理系统,在使用MySql时,我们经常使用sql语句来与数据库进行交互,包括查找、插入、修改、删除等。那么sql语句在MySql中是如何执行的呢?在这里,我们将详细介绍MySql中sql语句的执行过程。 2. 执行过程 在MySql中,当我们提交一条sql语句到服务器时,它将按照…

    database 2023年5月21日
    00
  • Microsoft Sql server2005的安装步骤图文详解及常见问题解决方案

    Microsoft SQL Server 2005 安装步骤 准备工作 在安装 SQL Server 2005 之前,需要确保系统满足以下要求: 操作系统:Windows XP SP2 或更高版本,Windows Server 2003 SP1 或更高版本,Windows Vista 或更高版本,Windows Server 2008 或更高版本。 硬件配置…

    database 2023年5月21日
    00
  • centOS安装mysql5.7详细教程

    CentOS安装MySQL 5.7详细教程 本教程介绍CentOS系统下安装MySQL 5.7的详细步骤。 环境准备 在开始安装过程前,请确保你的CentOS系统已经安装了epel-release仓库和wget工具,如果没有,请先执行以下命令进行安装: sudo yum -y install epel-release wget 下载MySQL RPM包 访问…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部