如何通过查询DBA_OBJECTS表的CREATED字段来获取Oracle数据库中各段的创建时间?
- 内容介绍
- 文章标签
- 相关推荐
本文共计807个文字,预计阅读时间需要4分钟。
相关专题:
oracle 中段(segment)的创建时间,本质上就是其对应数据库对象(如表、索引、lob等)的创建时间,直接查 dba_objects 的 created 字段即可——但必须注意:这不是段物理分配时间,而是对象首次 ddl 成功执行的时间,且该字段不会随 truncate、move 或高水位调整而更新。
为什么不能直接查 DBA_SEGMENTS 的 CREATED 字段
DBA_SEGMENTS 视图里根本没有 CREATED 列。它只提供段的物理属性(如 BYTES、EXTENTS、SEGMENT_NAME、SEGMENT_TYPE),不记录元数据时间戳。试图 SELECT CREATED FROM DBA_SEGMENTS 会报 ORA-00904: "CREATED": invalid identifier 错误。
DBA_OBJECTS.CREATED 是最可靠来源
只要对象属于段类型(SEGMENT_TYPE IN ('TABLE', 'INDEX', 'LOBSEGMENT', 'LOBINDEX', 'TABLE PARTITION', 'INDEX PARTITION' 等),它的 CREATED 值就代表该段首次被创建的时间点。
本文共计807个文字,预计阅读时间需要4分钟。
相关专题:
oracle 中段(segment)的创建时间,本质上就是其对应数据库对象(如表、索引、lob等)的创建时间,直接查 dba_objects 的 created 字段即可——但必须注意:这不是段物理分配时间,而是对象首次 ddl 成功执行的时间,且该字段不会随 truncate、move 或高水位调整而更新。
为什么不能直接查 DBA_SEGMENTS 的 CREATED 字段
DBA_SEGMENTS 视图里根本没有 CREATED 列。它只提供段的物理属性(如 BYTES、EXTENTS、SEGMENT_NAME、SEGMENT_TYPE),不记录元数据时间戳。试图 SELECT CREATED FROM DBA_SEGMENTS 会报 ORA-00904: "CREATED": invalid identifier 错误。
DBA_OBJECTS.CREATED 是最可靠来源
只要对象属于段类型(SEGMENT_TYPE IN ('TABLE', 'INDEX', 'LOBSEGMENT', 'LOBINDEX', 'TABLE PARTITION', 'INDEX PARTITION' 等),它的 CREATED 值就代表该段首次被创建的时间点。

