Oracle查询获取最新的表或存储过程架构的变化?

时间:2014-12-02 11:00:10

标签: oracle schema

我试图编写一个查询来获取Oracle上的表或存储过程的最新架构更改。

这是在Sybase上执行此操作的方法:

select top 10 name from sysobjects where type = 'U' order by crdate desc

(我接受这是建立在创建日期而不是修改日期的基础上 - 我很感激能够向我展示修改日期如何在Sybase中用于表格的人,但我正在寻找的是Oracle模式现在改变日期)。

我的问题是:获取最新表或存储过程架构更改的 Oracle查询是什么?

2 个答案:

答案 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 Pseudocolumn

  

对于查询返回的每一行,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;