暂无图片
dba_hist_active_sess_history 这个里面的数据是怎么来的?
我来答
分享
Y
YanLang
2024-03-08
dba_hist_active_sess_history 这个里面的数据是怎么来的?
暂无图片 5M

dba_hist_active_sess_history 这个里面的数据是怎么来的? 为什么在v$sql 中查得到的sql_id 在 dba_hist_active_sess_history  里面没有?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
lianR

dba_hist_active_sess_history  视图中的数据来自于  Oracle  的自动工作负载存储库  (AWR)。这个存储库定期收集数据库的性能统计信息,包括活动会话历史  (ASH)  数据。ASH  数据提供了数据库中的会话活动的样本,每秒收集一次。

v$sql  视图中的数据则是数据库中当前活动的  SQL  语句的信息。

因此,如果你在  v$sql  中找到一个  SQL  语句,但在  dba_hist_active_sess_history  中找不到,可能有以下几个原因:

1.  SQL  语句执行的时间可能在  AWR  的采样间隔之外。例如,如果  SQL  语句在两次  AWR  快照之间执行并完成,那么你可能在  ASH  数据中找不到它。

2.  AWR  只保留一段时间的数据。默认情况下,AWR  保留  8  天的数据。如果  SQL  语句执行的时间超过了这个时间范围,那么你在  ASH  数据中也找不到它。

3.  AWR  可能没有收集到所有的  SQL  语句。AWR  的采样率可能不足以捕获所有的  SQL  语句,特别是那些执行时间非常短的  SQL  语句。

4.  如果数据库在执行  SQL  语句时没有足够的活动会话,那么这个  SQL  语句可能不会出现在  ASH  数据中。因为  ASH  数据是基于活动会话的,所以如果没有活动会话,那么  SQL  语句就不会被记录下来。

暂无图片 评论
暂无图片 有用 2
打赏 0
广州_老虎刘

oracle 后台进程每秒对v$session 做快照, 把状态是ACTIVE的记录临时存放到v$active_session_history;

每隔10秒的v$active_session_history记录会保存到dba_hist_active_sess_history (AWR)

如果你的SQL执行时间超过10秒, 应该会出现在dba_hist_active_sess_history(超过awr保留期的历史SQL除外)

如果你的SQL执行时间比较短, 执行次数比较少, 被v$active_session_history采集到的概率就比较小, 即使被v$active_session_history采集到, 也可能是没有保存到dba_hist_active_sess_history的那9/10 . 

如果SQL执行比较频繁, 即使时间很短, 也很有可能被dba_hist_active_sess_history捕获到

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle 数据库 有个需求每天要SQL导出成excel,可不可以写个脚本放在系统后台定时执行。每天去取excel ?
回答 4
比较简单的方式:使用sqluldr2工具,在脚本中指定查询sql和导出文件格式,定时通过crontab导出即可。
Oracle undo表空间满了,怎么手动释放?
回答 1
已采纳
主要看看你空间里面使用率是多少。可能是被撑大的,没有回收。如果你强烈要回收,需要再建立一个新的undo,改一下指向。有点繁琐。如果空间够用就放着吧。可以多存一些闪回要查的数据。
Oracle 一个查询只要0.5s,带上了工程框架自带的rownum<=10分页之后,就要执行1分钟,这是什么原因?
回答 1
需要排序
oracle创建临时表是不是必须加Temporary?
回答 2
已采纳
必须的~,不然怎么确定表空间类型?默认是永久表空间,可以缺省PERMANENT;
Oracle关键字DETERMINISTIC的意义?
回答 12
已采纳
关键字DETERMINISTIC声明了:函数在给定相同的输入时,总会返回完全相同的输出。如果我们要用一个用户自定义函数来创建索引,那么这个关键字是必不可少的。通过这个关键字,Oracle就可以相信这个
oracle 一个表和一个视图联合更新,表的索引字段和视图的对应字段类型一样,但是最大长度不一样,索引还有效果吗?
回答 1
已采纳
类型一致就行。看执行计划就行。前提是要有有效的where条件就行。
AWR分析报告问题求助:运行卡顿
回答 2
硬件配置高,&nbsp;SQL执行效率低,SQL优化能解决问题.
关于oracle11g数据库服务器使用plsql的问题
回答 2
已采纳
不需要额外安装了,安装plsql后,配置首选项里的oci
oracle表设置nologging
回答 1
已采纳
可以,但是要注意是否有dg,ogg等,dg,ogg是需要forcelogging的,此时nologging是无效的
Oracle执行查询语句后,如何获取查询到的记录的条数?
回答 2
已采纳
在executeQuery()方法执行SELECT语句后,查询结果会返回给ResultSet对象,而该对象没有定义获取结果集中记录条数的方法。如果需要知道记录的条数,就需要使用循环读取的方法来计算记录