如何在数据库中查找最新的SQL语句?

Seb*_*oth 26 oracle monitoring

我喜欢在我的数据库中获取最新执行的语句以及性能指标。

因此,我想知道哪些 SQL 语句最占用 CPU/磁盘。

Seb*_*oth 17

这是完成这项工作的 SQL。开放试用。

步骤 1:确定安装 ID 和用户 ID。

SELECT inst_id,sid FROM gv$session WHERE username='<ENTER-USERNAME>';
Run Code Online (Sandbox Code Playgroud)

第2步:

SELECT 
      s.sid
     ,s.CLIENT_INFO
     ,s.MACHINE
     ,s.PROGRAM
     ,s.TYPE
     ,s.logon_time
     ,s.osuser
     ,sq.sorts
     ,sq.DISK_READS
     ,sq.BUFFER_GETS
     ,sq.ROWS_PROCESSED
     ,sq.SQLTYPE
     ,sq.SQL_TEXT
 FROM gv$session s    
    , gv$sql sq
WHERE s.SQL_HASH_VALUE = sq.HASH_VALUE
  AND s.inst_id = :inst_id -- replace with instID from above
  AND s.sid = :sid -- replace with ID from above
  AND sq.inst_id = s.inst_id
Run Code Online (Sandbox Code Playgroud)

可能会返回多个 Id 和实例 Id。因此,如何在 Web 界面等中使用这些数据取决于用户的选择。


Sat*_*hat 13

Oracles Enterprise Monitor 控制台显示了关于哪些 SQL 查询占用最大 CPU、瓶颈、数据库中的主要活动、阻塞 SQL 等的大量信息。

对于历史方法,您可以使用 Oracle 的AWR报告来确定与您有关的区域。

替代文字

在此处输入图片说明

  • 抱歉,我应该提到它 - 据我所知,AWR 需要单独的许可 - [Oracle Tuning &amp; Diagnostic Pack](http://download.oracle.com/docs/cd/B28359_01/license.111/b28287/options .htm#CIHFIHFG)。我更喜欢从企业管理器控制台使用 AWR - 我有幸拥有使用企业管理器控制台的特权(!)。我还 [发现](http://oracledoug.com/serendipity/index.php?/archives/1506-Real-Time-SQL-Monitoring-in-SQL-Developer.html) 你可以使用 SQL Developer 来监控 SQL ,但这需要上述许可 (2认同)