以百分比形式显示会话的 Oracle CPU 使用率

2024-01-01

以下脚本返回活动会话的 CPU 使用情况。结果显示 CPU 使用率(以秒为单位)。

我需要的是相同的报告,其中包含 CPU 使用率百分比。做这个的最好方式是什么?

--
-- Show CPU Usage for Active Sessions
--

SET PAUSE ON
SET PAUSE 'Press Return to Continue'
SET PAGESIZE 60
SET LINESIZE 300

COLUMN username FORMAT A30
COLUMN sid FORMAT 999,999,999
COLUMN serial# FORMAT 999,999,999
COLUMN "cpu usage (seconds)"  FORMAT 999,999,999.0000

SELECT
   s.username,
   t.sid,
   s.serial#,
   SUM(VALUE/100) as "cpu usage (seconds)"
FROM
   v$session s,
   v$sesstat t,
   v$statname n
WHERE
   t.STATISTIC# = n.STATISTIC#
AND
   NAME like '%CPU used by this session%'
AND
   t.SID = s.SID
AND
   s.status='ACTIVE'
AND
   s.username is not null
GROUP BY username,t.sid,s.serial#
/

长话短说:您无法通过单个查询来完成此操作,您需要编写 PL/SQL 来收集有用的数据,以获得有用的信息。

Oracle 有“累积时间”统计数据,这意味着引擎会持续跟踪使用情况。您必须定义分析的开始时间和结束时间。

您可以从 V$SYS_TIME_MODEL 查询“DB CPU”

select value into t_db_cpu_i
from sys.V_$SYS_TIME_MODEL
where stat_name = 'DB CPU' ;  /* start time */ 
...
select value into t_db_cpu_f
from sys.V_$SYS_TIME_MODEL
where stat_name = 'DB CPU' ; /* end time */

如果您只有 #1 CPU 或 #8 CPU,CPU 统计数据将会受到影响。因此,您必须确定您的引擎使用了多少个 CPU。

您可以从 V$PARAMETER 查询“cpu_count”来获取该值。

select value into t_cpus
from sys.v_$parameter
where name='cpu_count' ;

然后,事情就很简单了:

最大总时间将为秒 * CPU 数量,因此如果您只有#1 CPU,则最大总时间将为“60”,但如果您有#2 CPU,则最大总时间将为“120”..#3 CPU将是“180”..等等....

因此,您可以使用 sysdate 获取分析期间的开始时间和结束时间:

t_start := sysdate ;
t_end := sysdate ;

现在您计算以下内容:

seconds_elapsed := (t_end - t_start)*24*60*60 ;
total_time := seconds_elapsed * t_cpus ; 
used_cpu := t_db_cpu_f - t_db_cpu_i ;
secs_cpu := seconds_elapsed/1000000 ;
avgcpu := (secs_cpu/total_time)*100 ;

就是这样,“avgcpu”就是您正在寻找的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以百分比形式显示会话的 Oracle CPU 使用率 的相关文章

  • 存储过程错误 PLS-00201:必须声明标识符“UTL_HTTP”

    我正在尝试创建一个从服务请求一些 XML 数据的存储过程 我在网上找到了几个示例 它们都指向使用这个 UTL HTTP 包 但是 每次我尝试用它来编译我的存储过程时 我都会收到错误 PLS 00201 identifier UTL HTTP
  • 执行 `EXECUTE IMMEDIATE ` Oracle 语句出现错误

    我是 Oracle 的新手 当我执行以下语句时 BEGIN EXECUTE IMMEDIATE SELECT FROM DUAL END 我得到错误为 命令中从第 2 行开始出错 立即开始执行 从双选择 结尾 错误报告 ORA 00911
  • 是否可以从子查询中获取多个值?

    有没有办法让子查询在oracle db中返回多列 我知道这个特定的sql会导致错误 但它很好地总结了我想要的 select a x select b y b z from b where b v a v from a 我想要这样的结果 a
  • SQL查询json字典数据

    我的表中的 CLOB 字段包含 JSON 如下所示 a value1 b value2 c value3 我正在尝试编写一个 SQL 查询来返回一个包含键和值字段的表 如下所示 key value a value1 b value2 c v
  • 我在 MacBook M1 max 中的 nodejs 连接到数据库 oracle 时遇到问题帮助我

    Node js 中的错误消息 nodemon 启动node server js错误 错误 DPI 1047 无法找到 64 位 Oracle 客户端库 dlopen Users pitidev ldb Downloads instantcl
  • Oracle REGEXP_INSTR() 和“a-z”字符范围与预期不匹配

    我想用REGEXP INSTR 在 oracle 数据库中检查小写 大写字符 我知道 upper and lower POSIX 字符类 但我选择了a z这给了我非常奇怪的结果 我不明白 有人可以解释一下吗 SELECT REGEXP IN
  • ORA-04061: 包体“PACKAGE.NAME”的现有状态已失效,但仍然存在

    在我正在处理的一个 Oracle 数据库实例上 我在重新编译包时观察到与正常行为不同的行为 通常 如所讨论的Oracle 中频繁出现错误 ORA 04068 包的现有状态已被丢弃 https stackoverflow com questi
  • 从java运行sqlplus脚本的简单方法

    我有包含 sqlplus 特定脚本的 sql 文件 它包括 或 作为语句终止符 执行存储过程的 EXEC 等 我需要从 java jdbc 执行此脚本 而不需要 sqlplus sql ant任务 maven sql插件无法处理不同的终止符
  • C# 中的 Oracle 连接 - 连接字符串

    我目前正在尝试用 C 构建一个应用程序并将其连接到在 Oracle 11g 中运行的实时数据库 我有以下连接详细信息 Host IP 10 204 1 3 Port 1521 DB Name PROD 我的源代码 string connSt
  • ODP.Net - OracleDataReader.读取速度非常慢

    我在 ODP Net 中的 OracleDataReader 方面遇到很多麻烦 基本上 我有一个参数化查询 需要 1 5 秒的时间来运行 返回大约 450 条记录 然后需要 60 90 秒的时间来循环 甚至没有代码在循环中运行 实际上是迭代
  • 查询以查找平均加权价格

    我在 Oracle 中有一个表 每个给定部分包含多行 每行都有一个与其关联的数量和价格 还有一个给定零件的行集相加的总数量 以下是数据示例 我需要的是获得该零件的平均加权价格 例如 如果数量为 100 的零件的价格为 1 数量为 50 的零
  • 如何设计一个存储非常大数据的表?

    我需要在Oracle中设计一个表 每天将存储2 5TB的数据 它可以增长到 200TB 超过 200TB 时记录将被清除 将其保留在 OLTP 中是一个可行的选择 还是需要将其转移到数据仓库 DB 请建议我在设计该表或数据库的架构时应牢记的
  • 匹配可能存在或可能不存在的组

    我的正则表达式需要解析一个如下所示的地址 BLOOKKOKATU 20 A 773 00810 HELSINKI SUOMI 1 2 3 4 第一组 第二组和第三组将始终存在于地址中 第 4 组可能不存在 我编写了一个正则表达式来帮助我获得
  • ORA-12154: TNS: 无法解析指定的连接标识符

    当我安装服务器版本和现有的 Oracle 10g 客户端版本时 问题就开始了 背景 安装了 Oracle 客户端版本 10g 位于 c oracle 以连接到位于其他国家 地区的数据库 所以我们只能连接到它并且对它的访问权限有限 路径 gt
  • 浏览多个字段的值并将它们插入到同一列中

    我正在尝试使用重复行为我的 oracle apex 应用程序创建一个功能 假设我有一个车辆表 CREATE TABLE vehicles brand VARCHAR2 50 model VARCHAR2 50 comment VARCHAR
  • Oracle中表的列重新排序

    我有一个包含 50 多列的表 我需要交换前两列的顺序 使用 Oracle 实现此目的的最佳方法是什么 假设表名是 ORDERDETAILS 前两列是 ITEM ID 和 ORDER ID 重命名完成后 表名仍应为 ORDERDETAILS
  • 运行 Sqoop 导入和导出时如何找到最佳映射器数量?

    我正在使用 Sqoop 版本 1 4 2 和 Oracle 数据库 运行 Sqoop 命令时 例如这样 sqoop import fs
  • ORACLE 在立即执行中批处理 DDL 语句

    我正在尝试在一个 Execute Immediate 语句中运行多个 ddl 语句 我认为这会很简单 但看来我错了 想法是这样的 declare v cnt number begin select count into v cnt from
  • 如何在oracle中获取表作为输出参数

    我正在尝试将 Oracle 过程调用的 out 参数强制转换为对象 它不起作用 因为 据我了解 我需要定义一个映射 它告诉方法如何转换它 如果地图为空或未正确填充 则它默认为 STRUCT 类型的对象 在我的情况下这是错误的 我已经构建了一
  • 调整 Oracle 数据库以加快启动速度(闪回)

    我正在使用 Oracle 数据库 11 2 我有一个场景 我发出FLASHBACK DATABASE经常 似乎有一个FLASHBACK DATABASECycle 会重新启动数据库实例 大约需要 1 分钟 我的设置花了 7 秒 数据库很小

随机推荐

  • django-tinymce 现代主题

    我在让现代主题与 django tinymce 一起使用时遇到问题 简单主题和高级主题都正确渲染 但是当我切换到现代主题时 没有任何渲染 并且在控制台中收到 static tiny mce themes modern editor temp
  • 动态内存分配有不需要的输出[重复]

    这个问题在这里已经有答案了 所以我上周开始学习C 自然地 我想熟悉整个指针和面向对象的业务等等 为此 我正在编写一个非常简单的程序来进行一些基本的矩阵计算 include
  • SQL查询中没有重复项

    我正在 MySQL 中使用内部联接进行选择 SELECT DISTINCT tblcaritem caritemid tblcar icarid FROM tblcaritem INNER JOIN tblprivatecar ON tbl
  • 每周触发通知 Swift 3

    我正在尝试制定一个时间表 其中我需要记住我上课的所有几周 例如星期一的某个时间 问题是 如果我在打印变量triggerWeekly时指定weekday 1 星期日 它会告诉我weekday 2 因此通过执行测试我不会收到此类通知 我需要知道
  • 为什么JPA实体类有一个实体名加下划线的类

    我是 JPA 新手 我创建了一个如下所示的类 package programme import javax persistence Access import javax persistence AccessType import java
  • 递减字母值

    我试图弄清楚如何将数组中的一堆字母值向下移动一步 例如 我的数组包含值 d e f g h 我想将其更改为 c d e f G 这是我正在使用的代码 function move up left x if x orientation down
  • iTextSharp 表格宽度为页面的 100%

    我正在尝试使用 iTextSharp 将表格添加到文档中 这是一个例子 Document document new Document PageSize LETTER 72 72 72 72 PdfWriter writer PdfWrite
  • 重命名所有列名称以用于大查询中的连接目的

    我需要连接两个具有完全相同列名的表 我需要在加入步骤之前重命名列 每个表包含 100 多列 我想知道是否有任何方法可以添加前缀或后缀来重命名所有列 而不是手动更改它们AS 我在 BigQuery 上使用标准 SQL 我在下面举了一个例子来说
  • 如何对集合中所有对象的属性执行 .Max() 并返回具有最大值的对象[重复]

    这个问题在这里已经有答案了 我有一个具有两个 int 属性的对象列表 该列表是另一个 linq 查询的输出 物体 public class DimensionPair public int Height get set public int
  • 为什么c#不能计算数学函数的精确值

    为什么c 不能做任何精确的操作 Math Pow Math Sqrt 2 0 2 2 0000000000000004 我知道双打是如何工作的 我知道舍入误差来自哪里 我知道它是almost正确的值 我知道你不能在有限的双精度数中存储无限的
  • 如何配置 HTML Purifier 以允许图像 src 的数据 URI?

    如何允许图像标签的 src 属性使用 Base64 数据 我看到这样的代码 config gt set URI AllowedSchemes array http gt true https gt true mailto gt true f
  • Windows批处理脚本取消隐藏被病毒隐藏的文件

    由于我看到很多人的文件被闪存驱动器病毒隐藏 因此我为他们提供了一个 Windows 命令行 使用attrib 或使用Linux 来解决当受感染的文件被删除并且它们的文件仍然 丢失 时的问题 删除文件和文件夹属性系统 隐藏和归档的命令 并非真
  • 当父线程退出时,Java 守护线程会自动终止吗?

    如果一个线程创建了一个守护线程 我可以相信当父线程退出run方法时 子线程也会终止吗 否 线程是独立的 一个线程 拥有 另一个线程并强制终止是没有意义的 如果你是really询问当应用程序中的所有非守护线程都已死亡时 您是否可以依赖进程死亡
  • 为 api 26 设置 Gradle (Android)

    由于我已将 Nexus 5x 升级到 Android O DP3 我无法测试我的应用程序 我收到错误消息是因为没有配置我的 Gradle 文件以使用新的 API 级别 26 所以我更改了它和依赖项 但我在所有支持库上不断收到错误 例如 Fa
  • Google Service Plugin 3.2.0 导致 Gradle 构建失败

    我正在尝试更新 Google 服务插件 但在 Gradle 同步期间收到错误 项目刷新失败 错误 未找到匹配项 版本 3 1 1 一切正常 但一旦我将 build gradle 更新为 classpath com google gms go
  • Angular 1.5 & ES6 - 依赖注入

    我是 Angular 新手 我正在尝试使用 ES6 我的依赖注入有问题 我无法让它工作 我的index js import index state css import angular from angular import angular
  • 无法更改 Visual Studio 2017 中程序集的默认语言

    我的应用程序支持三种语言 en es 和 fr 当我构建我的 干净的 从模板 UWP 应用程序时 我收到消息 warning PRI257 0xdef00522 Resources found for language s en es fr
  • 如何按位和 CFBitVector

    我有两个实例CFMutableBitVector 像这样 CFBitVectorRef ref1 ref2 我怎样才能对这些家伙进行按位运算 目前我只关心and 但显然xor or等了解一下会很有用 显然 我可以迭代向量中的位 但当我在位级
  • Noob to PowerShell,复制文件夹内的文件

    抱歉 如果这是一个非常简单的过程 我有一个文件夹结构 根级别有大约 4 000 个目录 空 另一个位置有另一组包含数据的文件夹 我只想将 location2 中的文件夹中的文件复制到 location1 中的文件夹 即 FolderABC1
  • 以百分比形式显示会话的 Oracle CPU 使用率

    以下脚本返回活动会话的 CPU 使用情况 结果显示 CPU 使用率 以秒为单位 我需要的是相同的报告 其中包含 CPU 使用率百分比 做这个的最好方式是什么 Show CPU Usage for Active Sessions SET PA