【问题标题】:Oracle query to get latest table or stored procedure schema change?获取最新表或存储过程架构更改的 Oracle 查询?
【发布时间】:2015-01-30 14:25:23
【问题描述】:

我正在尝试编写查询以获取对 Oracle 上的表或存储过程的最新架构更改。

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

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

(我接受这是建立在创建日期而不是修改日期之上的 - 我很感激任何可以向我展示修改日期如何在 Sybase 中为表工作但我正在寻找的是 Oracle 模式更改日期的人)。

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

【问题讨论】:

    标签: oracle schema


    【解决方案1】:
    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 伪列返回一个 指示 Oracle 从 a 中选择行的顺序的数字 表或一组连接的行。选择的第一行的 ROWNUM 为 1, 第二个有 2,依此类推。

    您可以使用 ROWNUM 来限制查询返回的行数,...

    【讨论】:

      【解决方案2】:

      如果您想具体说明表格或过程,您可以像下面这样限制

      使用 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; 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 1970-01-01
        • 2018-04-07
        • 1970-01-01
        • 2011-02-14
        • 2021-01-01
        相关资源
        最近更新 更多