簡體   English   中英

需要查找表何時更改

[英]Need To find when table was altered

我在oracle數據庫的表中找到了以前不存在的新列,是否有任何方法可以查找表何時被更改。

你可以看一下在last_ddl_timeuser_objects ,或all_objectsdba_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM