首页 > 数据库 >Oracle数据库 oracle八大性能视图

Oracle数据库 oracle八大性能视图

时间:2024-07-19 20:01:37浏览次数:17  
标签:time 视图 Oracle session SQL oracle WHERE SELECT

V$SYSSTAT

V S Y S S T A T 视图中列出了数据库的大量系统级统计信息,包括缓冲区命中率、 I / O 请求次数、排序操作、锁等待事件和 S Q L 执行次数等。这些统计数据可用于检测和调整性能问题。以下是查询 V SYSSTAT视图中列出了数据库的大量系统级统计信息,包括缓冲区命中率、I/O请求次数、排序操作、锁等待事件和SQL执行次数等。这些统计数据可用于检测和调整性能问题。以下是查询V SYSSTAT视图中列出了数据库的大量系统级统计信息,包括缓冲区命中率、I/O请求次数、排序操作、锁等待事件和SQL执行次数等。这些统计数据可用于检测和调整性能问题。以下是查询VSYSSTAT视图的示例SQL

SELECT name, value
FROM v$sysstat
WHERE name IN ('db block gets', 'consistent gets', 'physical reads', 'physical writes');

V$SESSTAT

V$SESSTAT视图是从用户级别收集的系统统计信息,主要记录了当前活跃会话的统计信息。

例如,可以使用V S E S S I O N 视图,查看当前用户的连接数和会话 I D ,然后使用 V SESSION视图,查看当前用户的连接数和会话ID,然后使用V SESSION视图,查看当前用户的连接数和会话ID,然后使用VSESSTAT视图查看查询、排序、数据读取等统计信息。

SELECT s.sid, s.serial#, s.username, s.machine, s.osuser, ss.name, ss.value
FROM v$session s,v$sesstat ss
WHERE s.sid = ss.sid and s.serial# = ss.serial#
AND ss.name = 'sorts (disk)';

V$SQL

V$SQL视图包含了SQL查询的执行状态和SQL执行的性能指标,例如执行计划、执行时间和I/O操作次数等。这些信息可以被用于检测性能问题,以及识别低效的SQL查询。

SELECT sql_text, executions, elapsed_time, buffer_gets
FROM v$sql
WHERE buffer_gets > 100000;

V$SESSION事件视图

V$SESSION_EVENT视图中列出了所有正在等待事件的会话,以及等待事件的名称。这些信息可以用于检测会话等待问题,帮助理解会话被阻塞的原因。

SELECT s.sid, s.serial#, l.event, l.wt_time, l.seconds_in_wt 
FROM v$session s, v$session_wt l 
WHERE s.sid = l.sid AND l.event != 'SQL*Net message from client';

V$SESSION_WT_CLASS

V$SESSION_WT_CLASS视图提供了等待事件的分类信息,这些分类较为抽象,例如“CPU”,“I/O”,“Network”,“Concurrency”等。这可以帮助识别不同类型的等待事件,并为进一步分析提供指导。

SELECT wt_class, COUNT(*)
FROM v$session_wt_class
GROUP BY wt_class
ORDER BY 2 DESC;

V$SYSTEM_EVENT

V$SYSTEM_EVENT视图中包含了Oracle实例中所有系统事件的统计信息,这些事件可以是I/O事件、等待事件或其他类型的事件。

SELECT event, total_wts, total_timeouts, time_wted
FROM v$system_event
WHERE event LIKE '%db file%';

V$ACTIVE_SESSION_HISTORY (ASH)

V$ACTIVE_SESSION_HISTORY (ASH)视图主要用于捕获数据库活动的快照,以便进行开销较大的性能故障排除,例如系统级性能问题,锁等待事件和会话等待事件。

ASH视图提供了详细的实时性能数据,以便诊断和解决各种性能问题。ASH数据可以用于查找诸如死锁、长时间等待、数据库连接池过载等问题。在分析问题时,ASH数据还可以用于确定性能问题是由高CPU使用率还是由等待事件(例如IO、网络、锁等)造成的。

-- 采用时间一小时前的数据
SELECT s.inst_id, s.sample_time, s.session_id, s.user_id, s.event
FROM gv$active_session_history s
WHERE s.sample_time > SYSDATE-1/24;


-- 查找活动用户
SELECT DISTINCT s.username, s.sid, s.serial#, s.program
FROM v$active_session_history h, v$session s
WHERE h.session_id = s.sid
AND h.session_serial# = s.serial#
AND h.sample_time BETWEEN SYSDATE-1/24 AND SYSDATE
ORDER BY 1,2;


-- 查找等待事件
SELECT event||'-'||wt_class AS event, COUNT(*) AS wts
FROM v$active_session_history
WHERE sample_time BETWEEN SYSDATE-1/24 AND SYSDATE
GROUP BY event,wt_class;


-- 查找锁等待
SELECT owner||'.'||OBJECT_NAME AS object_name, count(*) as wt_count
FROM v$session a,v$active_session_history b,dba_objects c
WHERE a.sid = b.session_id
AND a.last_call_et >= 60 and b.wt_class = 'Application'
AND b.sample_id = c.data_object_id
GROUP BY a.username,c.owner,c.object_name
HAVING count(*) >=5
ORDER BY count(*) DESC;

以上查询只是ASH视图使用的冰山一角,ASH视图还包含许多其他的有用信息,例如等待类别、等待时间、事件计数等。而且,我们还可以使用ASH数据提供的详细信息来创建各种自定义报告和图表。

以下是一个基于Ash数据的简单演示,它可用于监视数据库中当前运行的用户和事务数量:

-- 插入当前时间和会话信息:
INSERT INTO ash_demo
(sample_time, username, sid, serial#, program)
SELECT SYSDATE, s.username, s.sid, s.serial#, s.program
FROM v$session s
WHERE s.STATUS = 'ACTIVE';
 
-- 计算每秒的会话活动数:
SELECT COUNT(*) / (COUNT(DISTINCT TRUNC(sample_time, 'MI'))*60)
FROM ash_demo
WHERE sample_time > SYSDATE – 1/24;

-- 计算每秒的用户数量:
SELECT COUNT(DISTINCT username) / (COUNT(DISTINCT TRUNC(sample_time, 'MI'))*60)
FROM ash_demo
WHERE sample_time > SYSDATE – 1/24;

V$SQL_PLAN

V$SQL_PLAN视图提供了SQL执行计划的详细信息,这些信息可以帮助开发人员和DBA确定性能瓶颈,并诊断查询执行计划的问题。

SELECT id, operation, options, object_name, cost, cardinality
FROM v$sql_plan
WHERE operation = 'TABLE ACCESS';

标签:time,视图,Oracle,session,SQL,oracle,WHERE,SELECT
From: https://blog.csdn.net/weixin_tank88921/article/details/140447113

相关文章

  • Oracle RAC的坑应用分离
    RAC最大的坑就是内存融合,也不能说它是坑,只是在使用过程中,或者传统数据库升级到RAC上会带来巨大的性能下降。RAC从8时代的并行技术发展过来的,到了11G正式成熟稳定,一路走来都是解决高可用的问题,达到双机热备,不仅仅是热备而是双活,同时工作,同时对外服务,一个挂了,另外一个接过活来干。......
  • oracle数据库状态查询
    oracle数据库状态查询(表空间,表空间利用率,是否自动扩展,IOPS,MBPS,数据库总大小)排除了('SYSAUX','USERS','SYSTEM','UNDOTBS1')结果示例--查询用户自定义表空间的使用信息WITHuser_tablespacesAS(SELECTDISTINCTtablespace_nameFROMdba_segmentsWHERE......
  • Seata 1.3.0 Oracle 回滚测试验证 报错 ORA-02289: 序列不存在
    使用Seata1.3.0版本,测试A服务调用B服务,且A方法中,手动写了一个异常,测试是否正常回滚(Mysql已经测试过)发现报错:ORA-02289:序列不存在 一看就是undo_log这张表的sequence没有建立,导致数据保存不了,太久没有用oracle了,之前搜索undo_log的建表SQL是直接在网上搜索的,所以缺少了建seq......
  • oracle 存储过程造数
    BEGINFORiIN1..{count_insert}LOOPINSERTINTOIKASTRIGGER.IKAS10B(COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5,COLUMN6,COLUMN7,COLUMN8,COLUMN9,COLUMN10)......
  • ETL数据集成丨通过ETLCloud工具,将Oracle数据实时同步至Doris中
    ETLCloud是一个全面的数据集成平台,专注于解决大数据量和高合规要求环境下的数据集成需求。采用先进的技术架构,如微服务和全Web可视化的集成设计,为用户提供了一站式的数据处理解决方案。主要特点和功能包括:实时数据处理:强调实时数据集成能力,这对于需要即时数据分析和决策支持的......
  • uni-app的checkbox组件有些情况下视图层不更新解决方案
    应用场景问题:在使用uniapp的复选框组件checkbox实现列表的全选跟不全选功能时发现,列表的checkbox视图层在某些情况下不生效    解决方法 解决方案1:利用  this.$set改变数据,即 this.$set(item,'checked',false),这个时候视图层跟数据都一起更新了,但是在上面那种......
  • Java中如何将一个 List 类型的参数传入存储过程(Oracle数据库)
    Java中如何将一个List类型的参数传入存储过程(Oracle数据库)步骤简述存储过程TYPE模型映射对象JAVA代码链接转换可能出现的错误步骤简述定义好存储过程,Java中的数组对象建立数据库映射对象来映射List类型的数据Java中调用存储过程传入List类型的参数存储过......
  • 达梦数据库的系统视图v$rapply_sys
    达梦数据库的系统视图v$rapply_sys在达梦数据库(DMDatabase)中,V$RAPPLY_SYS是一个系统视图,用于显示数据库的实时应用(Real-timeApply)系统信息。实时应用是一种数据库复制技术,允许将一个数据库的更改实时应用到另一个数据库中,通常用于数据同步、数据分发和灾难恢复等场景。......
  • Linux下数据库学习过程之索引视图(持续更新中)
    1视图创建视图的目的:使得查询操作更加便捷视图的语法CREATE[ORREPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}][DEFINER=user][SQLSECURITY{DEFINER|INVOKER}]VIEWview_name[(column_list)]ASselect_statement[W......
  • Android开发 - 视图布局属性解析
    LinearLayout:主要以水平或垂直方式来排列界面中的控件。并将控件排列到一条直线上。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件RelativeLayout:称作相对布局,非常常用的一种布局。和LinearLayout的排列规则不同,RelativeLayout显......