数据库是Oracle。目标是在以下代码中执行状态检查:
为了满足这些不同的要求,我提出了以下问题:
SELECT NULL FROM VIEW_NAME WHERE NULL IS NOT NULL
所以让我们分解一下:
SELECT NULL
是尝试"杠杆" SQL result caching明确指定值。FROM VIEW_NAME
将失败。WHERE NULL IS NOT NULL
试图避免表扫描,返回0记录等任何想法,改进,建议等都将不胜感激。我特别想知道这个查询或方法是否存在任何可想到的问题。
答案 0 :(得分:1)
最好在您连接的用户下检查VALID对象。
select count(*) from user_objects where status != 'VALID';
或者如果您要在DB中查找所有有效对象,则:
select count(*) from obj$ where status != 'VALID';
确保查询不会经常运行 - 例如每分钟50次。
更好的方法是保持乐观并尝试操作 - 选择/更新/插入/删除您要对数据库执行的操作。
无效的对象会导致错误(无论如何都需要在代码中处理),因此请专注于在应用程序中进行强大的错误处理,并且不要担心建立连接只是为了确定是否一切正常。 DB。
您检查DB对象状态的测试可能会通过,但是下一个瞬间,DB对象可能无效。