我试图编写一个查询来获取Oracle上的表或存储过程的最新架构更改。
这是在Sybase上执行此操作的方法:
select top 10 name from sysobjects where type = 'U' order by crdate desc
(我接受这是建立在创建日期而不是修改日期的基础上 - 我很感激能够向我展示修改日期如何在Sybase中用于表格的人,但我正在寻找的是Oracle模式现在改变日期)。
我的问题是:获取最新表或存储过程架构更改的 Oracle查询是什么?
答案 0 :(得分:2)
select * from
(SELECT * FROM user_objects ORDER BY last_ddl_time DESC)
where rownum <= 10;
user_objects
包含当前用户拥有的所有对象(=当前架构对象)
all_objects
包含用户拥有任何权限的所有对象
dba_objects
包含所有数据库对象(需要一些特殊权限才能访问)。
all_和dba_有附加列owner
您可能需要阅读does-rebuilding-an-index-update-the-last-ddl-time ...
对于查询返回的每一行,ROWNUM伪列返回a 表示Oracle从a中选择行的顺序的数字 表或一组连接的行。选中的第一行的ROWNUM为1, 第二个有2个,依此类推。
您可以使用ROWNUM来限制查询返回的行数,...
答案 1 :(得分:1)
如果您想具体了解表格或程序,可以限制如下
11g数据库
select * from
(SELECT * FROM user_objects where OBJECT_TYPE in ('TABLE','PROCEDURE') ORDER BY last_ddl_time DESC)
where rownum <= 10;
以上内容将在表格或程序中提供最新更改的对象。
而在 12c数据库中则无需使用子查询
SELECT * FROM user_objects
where OBJECT_TYPE in ('TABLE','PROCEDURE')
ORDER BY last_ddl_time DESC
FETCH FIRST 10 ROWS ONLY;