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

当我们需要查看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日

相关文章

  • Python连接Redis的基本配置方法

    当你要在Python中连接Redis数据库时,需要按照以下步骤进行配置: 步骤一:安装redis-py 如果你还没有安装Redis的Python客户端库redis-py,可以使用以下命令进行安装: pip install redis 步骤二:连接Redis 连接Redis需要指定Redis数据库的主机名、端口号和密码等参数,代码如下: import redi…

    database 2023年5月22日
    00
  • Oracle中TO_DATE格式介绍

    Oracle中TO_DATE格式介绍 在Oracle中,使用TO_DATE函数可以将一个字符串转换为日期类型的数据。但是,在使用TO_DATE函数时,需要指定字符串的格式,以便Oracle能够正确地将字符串转换为日期类型的数据。下面是一些常见的字符串格式及其对应的含义: 格式 含义 YYYY 四位数的年份 YY 两位数的年份 MM 月份(01到12) MON…

    database 2023年5月21日
    00
  • mysql中操作表常用的sql总结

    下面是关于“mysql中操作表常用的SQL总结”的完整攻略: MySQL中操作表常用的SQL总结 1. 创建表 MySQL中创建表的语法为: CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, …… ); 其中,table_name 表的名称,…

    database 2023年5月22日
    00
  • ftp自动上传脚本分享

    下面是关于FTP自动上传脚本分享的完整攻略。 一、什么是FTP自动上传脚本 FTP自动上传脚本是一种用于自动化将本地文件上传到FTP服务器上的脚本,通常使用Python或Shell等脚本语言编写。通过FTP自动上传脚本,可以实现自动化上传、同步或备份文件的操作,提高工作效率,降低人工错误率。 二、FTP自动上传脚本的实现方式 在实现FTP自动上传脚本时,需要…

    database 2023年5月22日
    00
  • MySQL新手入门进阶语句汇总

    MySQL新手入门进阶语句汇总 这是一个针对MySQL数据库新手的完整攻略,旨在帮助初学者快速入门和进一步掌握MySQL数据库。本攻略包含MySQL的基本语句、操作、常用函数和进阶查询等内容。 基本语句 连接数据库 要连接到数据库,需要使用MySQL客户端(如MySQL Workbench)或命令行工具。下面是连接到本地MySQL服务器的示例: mysql …

    database 2023年5月21日
    00
  • 深入理解mysql帮助命令(help)

    当我们使用MySQL客户端时,我们通常会遇到一些不熟悉的命令或者语法,此时,我们可以通过MySQL提供的帮助命令(help)来获取相关信息。下面我将会详细讲解如何深入理解MySQL帮助命令。 1. 语法 MySQL帮助命令的基本语法如下: help [command] 其中,command为要查询的命令名称,如果不指定command,则会显示所有命令的帮助信…

    database 2023年5月22日
    00
  • CentOS8下安装oracle客户端完整(填坑)过程分享(推荐)

    CentOS 8下安装Oracle客户端完整过程分享(填坑)攻略 简介 如果你已经通过yum命令安装了Oracle所需的依赖,并且选择了基本的安装模式,你会发现仍然不能成功连接到Oracle数据库。这是因为Oracle客户端并没有在环境变量中添加相应的路径,因此需要进行手动配置。接下来,我们将详细介绍如何在CentOS 8中安装并配置Oracle客户端以便成…

    database 2023年5月22日
    00
  • 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器

    针对“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器”的问题,可以采取以下步骤进行排除: 1. 检查网络连接 首先,需要确保计算机与 SQL Server 数据库服务器之间建立了正确的网络连接。可以使用 ping 命令测试一下是否能够正确地连接到服务器,如下所示: ping servername 其中,ser…

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