当前位置: 首页 > 知识库问答 >
问题:

获取在Oracle中过去几个小时内执行的所有sql查询

韩佐
2023-03-14

我需要一种方法来收集在Oracle DB(Oracle数据库11g)中执行的所有查询在过去的几个小时内,无论查询有多快(这将用于计算sql覆盖率后,对我的应用程序运行测试,其中有几个点执行查询)。

我不能使用像V$SQL这样的表,因为不能保证查询会在那里保持足够长的时间。我似乎可以使用DBA_HIST_SQLTEXT,但是我没有找到过滤掉当前测试运行前执行的查询的方法。

所以我的问题是:我可以使用什么表来获得在给定时间内(最多2小时)执行的绝对所有查询,以及我应该调整什么样的数据库配置来达到我的目标?

共有2个答案

茹正祥
2023-03-14

最后,我按照Justin Cave的建议,使用OracleJDBC驱动程序收集所有执行的查询,并在运行测试后将它们全部转储到一个文件中。

游乐池
2023-03-14

"我需要查询本身,因为我需要了解在测试期间执行应用程序中编码的所有查询中的哪些查询"

捕获所有执行的查询的最简单方法是对所有数据库表启用细粒度审计。可以使用数据字典在每个应用程序表上生成策略。

请注意,即使在写入OS文件时,这样多的策略也会对数据库产生很大影响,并会增加运行测试所需的时间。因此,您应该只使用这些策略来评估您的测试覆盖率,并在其他测试运行中禁用它们。

了解更多。

 类似资料:
  • 问题内容: 我有一个简单的MySQL表,其中包含类别列表,级别由parent_id确定: 我正在尝试进行面包屑跟踪。因此,我有孩子的“身份证”,我想让所有可用的父母(重复链,直到我们达到0“家”)。可能有任意数量或子行达到无限深度。 目前,我正在为每个父母使用SQL调用,这很麻烦。SQL中有一种方法可以对一个查询执行全部操作吗? 问题答案: 从这里改编: 该行是当前页面的页码。结果如下:

  • 我要拿到过去24小时的所有资料。我已经做了一些谷歌搜索,它似乎不容易做与Dynamodb。 我在想,是否可以创建一个二级索引,使用一个公共散列键和一个时间戳字段作为排序键。因此,我可以使用条件timestamp>(datetime.now-24h)查询时间戳。请问这是一个可行的方法还是另有想法? 实际上,我只需要我的表中不超过24小时的项目。所以另一个想法是每小时清理一次表,删除所有超过24小时的

  • 问题内容: 我需要选择数据库中上个月创建的所有行。 例如,如果当前月份是一月,那么我想返回在十二月创建的所有行,如果月份是二月,那么我想返回在一月份创建的所有行。我的数据库中有一列,其中列出了以此格式创建的日期:。 问题答案:

  • 问题内容: 这个问题已经在这里有了答案 : 使用Oracle分页 (6个答案) 6年前关闭。 请帮助我在Oracle数据库中编写一个SQL查询。有一个名为tbl的表,它有12行。我想先选择前4行,然后选择下4行和后4行。 任何人都可以告诉我如何在Informix中执行此操作。 问题答案: 您可以使用: 如果您正在使用子句,请使用(documentation)

  • 问题内容: 获取Oracle中所有表的列表? 问题答案: 假设您有权访问DBA_TABLES数据字典视图。如果您没有这些特权但需要它们,则可以请求DBA显式授予您对该表的特权,或者请求DBA授予您该SELECT ANY DICTIONARY特权或SELECT_CATALOG_ROLE角色(这两者都将允许您查询任何数据字典表) )。当然,您可能希望排除某些模式,例如SYS和模式,SYSTEM而这些模

  • 问题内容: 我正在尝试编写一条SQL语句,该语句将允许我检索在9月份创建的所有订单,但运气不佳。 无法运作: 工作但时间太长: 问题答案: 怎么样: 您应该尽量保持不变,以确保可以很好地利用索引。