2

当我在 Oracle 11g (11.2.0.1.0) 中创建一个GLOBAL TEMPORARY TABLE,然后向其中添加一个新列时,Oracle 不会更新LAST_DDL_TIME系统目录视图的列(例如DBA_OBJECTS):

create global temporary table test# (foo varchar2(3));
select last_ddl_time from dba_objects where object_name='TEST#';
-- Shows created time

-- Wait a minute 

alter table test# add (bar varchar(3));
select last_ddl_time from dba_objects where object_name='TEST#';
-- Shows NO UPDATE

-- Wait a minute

alter table test# drop (bar);
select last_ddl_time from dba_objects where object_name='TEST#';
-- Shows time when column was dropped

但是,当我在 Oracle 12c (12.1.0.2.0) 中执行相同的 SQL 语句序列时,LAST_DDL_TIME 确实会反映新添加的列。

create global temporary table test# (foo varchar2(3));
select last_ddl_time from dba_objects where object_name='TEST#';
-- Shows created time

-- Wait a minute 

alter table test# add (bar varchar(3));
select last_ddl_time from dba_objects where object_name='TEST#';
-- Shows time when column was added

-- Wait a minute

alter table test# drop (bar);
select last_ddl_time from dba_objects where object_name='TEST#';
-- Shows time when column was dropped

这种行为似乎非常特定于将列添加GLOBAL TEMPORARY TABLESOracle 11g 和 Oracle 11g;重命名或删除列确实会LAST_DDL_TIME按预期影响。

这是一个已知的 Oracle 11g 错误吗?!如果是这样,是否有官方的 Oracle 补丁更新?

4

0 回答 0