如何使用Oracle SQL查询Oracle数据库最近1小时内创建的表名
原语句错误原因
- 语法错误:WHERE子句中多写了冗余的
table_name字段,导致过滤条件语法不合法,无法正常匹配数据 - 元数据视图使用错误:
user_tables视图仅存储表的存储属性、参数等信息,不存储表的创建时间,表的创建时间存储在user_objects视图中,需要筛选对象类型为TABLE的记录
正确查询方案
查询当前用户下1小时内创建的表
优先推荐关联视图查询,避免非表对象的干扰:
SELECT t.table_name FROM user_tables t INNER JOIN user_objects o ON t.table_name = o.object_name WHERE o.object_type = 'TABLE' AND o.created >= SYSDATE - 1/24;
也可以直接查询user_objects视图获取结果:
SELECT object_name AS table_name FROM user_objects WHERE object_type = 'TABLE' AND created >= SYSDATE - 1/24;
扩展说明
- 如果需要查询全库所有用户1小时内创建的表,将视图替换为
dba_objects即可,需要当前账号拥有dba_objects的查询权限 - 如果需要查询1小时内修改过结构的表,将
created字段替换为last_ddl_time字段即可
内容的提问来源于stack exchange,提问作者user14937341
相关产品推荐
相关产品推荐

