低影响端到端数据库连接&查询测试

时间:2016-02-05 17:55:21

标签: sql database oracle integration-testing end-to-end

数据库是Oracle。目标是在以下代码中执行状态检查

  • 鲁棒
  • 端到端(健康连接并不意味着健康的对象,即具有脱机表的视图)
  • 为调用应用程序创建最小的开销

为了满足这些不同的要求,我提出了以下问题:

SELECT NULL FROM VIEW_NAME WHERE NULL IS NOT NULL

所以让我们分解一下:

  • SELECT NULL是尝试"杠杆" SQL result caching明确指定值。
  • 如果数据库中没有 VIEW_NAME (即端到端),则
  • FROM VIEW_NAME将失败。
  • WHERE NULL IS NOT NULL试图避免表扫描,返回0记录等

任何想法,改进,建议等都将不胜感激。我特别想知道这个查询或方法是否存在任何可想到的问题。

1 个答案:

答案 0 :(得分:1)

最好在您连接的用户下检查VALID对象。

select count(*) from user_objects where status != 'VALID';

或者如果您要在DB中查找所有有效对象,则:

select count(*) from obj$ where status != 'VALID';

确保查询不会经常运行 - 例如每分钟50次。

更好的方法是保持乐观并尝试操作 - 选择/更新/插入/删除您要对数据库执行的操作。

无效的对象会导致错误(无论如何都需要在代码中处理),因此请专注于在应用程序中进行强大的错误处理,并且不要担心建立连接只是为了确定是否一切正常。 DB。

您检查DB对象状态的测试可能会通过,但是下一个瞬间,DB对象可能无效。