Alte Objekte im Data Dictionary

Alte Objekte im Data Dictionary

25. August 2026 0 Von Markus Flechtner

Objekte in der Datenbank, die mit „_OLD“ oder „_BACKUP“ enden, sind in den meisten Fällen Überbleibsel, Backups von irgendwelchen Applikationstabellen, die vor eiinem Applikations-Upgrade gemacht werden und die dann länger in der Datenbank bleiben als nötig (á la KUNDEN_BACKUP_20180707). Umso erstaunter war ich, als ich letztens eine „%_OLD“-View im Data Dictionary entdeckt habe.

Genauer gesagt betrifft das eine DBA-View, nämlich die DBA_SEGMENTS:

[oracle@ohm ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.3.0.0 - Production on Sun Aug 23 18:46:22 2026
Version 23.26.3.0.0
Copyright (c) 1982, 2026, Oracle.  All rights reserved.

Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.3.0.0 - Production
Version 23.26.3.0.0

SQL> column object_name format a30
SQL> select object_type,object_name from dba_objects where object_name like '%_OLD';

OBJECT_TYPE		OBJECT_NAME
----------------------- ------------------------------
VIEW			DBA_SEGMENTS_OLD
VIEW			CDB_SEGMENTS_OLD
TABLE			WRI$_ALERT_THRESHOLD
SYNONYM 		DBA_SEGMENTS_OLD
SYNONYM 		CDB_SEGMENTS_OLD

Wenn man beide Views vergleicht, dann zeigt sich, dass (wie zu erwarten war), dass die „neue“ DBA_SEGMENTS einige Spalten mehr hat:

SpalteDBA_SEGMENTSDBA_SEGMENTS_OLD
OWNERVARCHAR2VARCHAR2
SEGMENT_NAMEVARCHAR2VARCHAR2
PARTITION_NAMEVARCHAR2VARCHAR2
SEGMENT_TYPEVARCHAR2VARCHAR2
SEGMENT_SUBTYPEVARCHAR2
TABLESPACE_NAMEVARCHAR2VARCHAR2
HEADER_FILENUMBERNUMBER
HEADER_BLOCKNUMBERNUMBER
BYTESNUMBERNUMBER
BLOCKSNUMBERNUMBER
EXTENTSNUMBERNUMBER
INITIAL_EXTENTNUMBERNUMBER
NEXT_EXTENTSNUMBERNUMBER
MIN_EXTENTSNUMBERNUMBER
MAX_EXTENTSNUMBERNUMBER
MAX_SIZENUMBER
RETENTIONVARCHAR2
MINRETENTIONNUMBER
PCT_INCREASENUMBERNUMBER
FREELISTSNUMBERNUMBER
FREELIST_GROUPSNUMBERNUMBER
RELATIVE_FNONUMBERNUMBER
BUFFER_POOLVARCHAR2NUMBER
FLASH_CACHEVARCHAR2
CELL_FLASH_CACHEVARCHAR2
INMEMORYVARCHAR2
INMEMORY_PRIORITYVARCHAR2
INMEMORY_DISTRIBUTEVARCHAR2
INMEMORY_DUPLICATEVARCHAR2
INMEMORY_COMPRESSIONVARCHAR2
CELLMEMORYVARCHAR2de

Normalerweise fügt Oracle wenn neue Spalten zu einer Dictionary View hinzu kommen, diese am Ende an. Das ist auch der Grund, warum die aus meiner Sicht recht wichtige Spalte CON_ID in den CDB-Views nicht die erste Spalte ist, sondern erst weit hinten erscheint. Warum bei der DBA_SEGMENTS einige neue Spalten dazwischen eingefügt wurden, ist eine gute Frage. Und warum es diese beiden Varianten der Segment-Übersicht gibt, im ersten Moment auch.

Eine Antwort ist: DBA_SEGMENTS zeigt mehr Segment-Typen als DBA_SEGMENTS_OLD.

Lt. Dokumentation gilt:

Für die Spalte SEGMENT_TYPE gibt es in DBA_SEGMENTS_OLD folgende Möglichkeiten:

  • INDEX PARTITION
  • TABLE PARTITION
  • TABLE
  • CLUSTER
  • INDEX
  • ROLLBACK
  • DEFERRED ROLLBACK
  • TEMPORARY
  • CACHE
  • LOBSEGMENT
  • LOBINDEX

Und bei der DBA_SEGMENTS sind es einige mehr:

  • NESTED TABLE
  • TABLE
  • TABLE PARTITION
  • CLUSTER
  • LOBINDEX
  • INDEX
  • INDEX PARTITION
  • LOBSEGMENT
  • TABLE SUBPARTITION
  • INDEX SUBPARTITION
  • LOB PARTITION
  • LOB SUBPARTITION
  • ROLLBACK
  • TYPE2 UNDO
  • DEFERRED ROLLBACK
  • TEMPORARY
  • CACHE
  • SPACE HEADER
  • UNDEFINED

Links zur 26ai-Dokumentation:

Bild von Peter H viaPixabay