[英]Need To find when table was altered
我在oracle數據庫的表中找到了以前不存在的新列,是否有任何方法可以查找表何時被更改。
你可以看一下在last_ddl_time
在user_objects
,或all_objects
或dba_objects
如果你沒有連接作為所有者:
select last_ddl_time
from user_objects
where object_type = 'TABLE'
and object_name = '<your table name>'
要么
select last_ddl_time
from dba_objects
where object_type = 'TABLE'
and owner = '<your table owner>'
and object_name = '<your table name>'
這將告訴您上一次對表執行任何DDL的時間; 但是,如果以后再進行其他任何更改(例如,約束,列修改等),則可能不是添加列。 請記住,所有者和表名的大小寫必須與存儲在字典中的大小寫相同-通常為大寫(除非使用帶引號的標識符)。
快速演示:
create table t42 (id number);
Table T42 created.
select to_char(last_ddl_time, 'YYYY-MM-DD hh24:MI:SS') as last_change
from user_objects
where object_type = 'TABLE'
and object_name = 'T42';
LAST_CHANGE
-------------------
2017-05-10 11:12:18
然后過一會兒...
alter table t42 add (new_column varchar(10));
Table T42 altered.
select to_char(last_ddl_time, 'YYYY-MM-DD hh24:MI:SS') as last_change
from user_objects
where object_type = 'TABLE'
and object_name = 'T42';
LAST_CHANGE
-------------------
2017-05-10 11:14:22
聽起來像是您在追求:
SELECT last_ddl_time
FROM all_objects
WHERE object_name = 'YOUR_TABLENAME'
AND object_type = 'TABLE';
在Oracle 11G和12C中,我們可以啟用DLL日志記錄
alter system set enable_ddl_logging=true;
DDL日志文件數據以XML格式寫入位於... \\log\\ddl
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.