Oracle 最后一次更新时间(dba

    技术2022-07-10  132

    文章目录

    场景结论演示

    场景

    想知道 表、视图、存储过程等 最后一次更新的时间?

    结论

    Oracle 12c 官方文档 - all_objects

    SELECT t.last_ddl_time, t.* FROM dba_objects t WHERE t.owner = '' AND t.object_name = '';

    请注意:

    dab_objects、 all_objects、 user_objects: DDL 语句最后一个编译的时间 1. 对象进行了编译(如: create or replace) 2. 包含 grantrevoke 语句 3. 包含 truncate 语句

    额外知识点之 truncate

    数据库的表是由:段、区、块 组成truncate 相当于 “摧毁” 之前的 ‘段头’,生成一个新的 ‘段头’ 在 dba_objects 中对应的 data_object_id(会发生改变)

    演示

    CREATE TABLE scott.table_test ( ID NUMBER, NAME VARCHAR2(30) ); -- 请注意:insert、update、delete 是 DML 语句,不会引起 last_ddl_time 变化 INSERT INTO scott.table_test(ID, NAME) VALUES(1, '瑶瑶'); INSERT INTO scott.table_test(ID, NAME) VALUES(2, '悠悠'); INSERT INTO scott.table_test(ID, NAME) VALUES(3, '倩倩'); COMMIT;

    测试语句:

    GRANT SELECT ON scott.table_test TO hr; REVOKE SELECT ON scott.table_test FROM hr; TRUNCATE TABLE scott.table_test; SELECT t.last_ddl_time, t.* FROM dba_objects t WHERE t.owner = 'SCOTT' AND t.object_name = 'TABLE_TEST';

    测试结果:

    Processed: 0.010, SQL: 9