Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie groß ist ein Oracle XMLType, wenn er als BINARY XML gespeichert wird?

Das Oracle Binary XML-Format entspricht dem "Compact Schema Aware XML Format", abgekürzt als CSX. Codierte Daten, die als BLOB-Feld gespeichert werden. Einzelheiten zum binären XML-Format finden Sie in der Oracle-Dokumentation (hier ). und hier ).

Die tatsächliche Größe des Datenfelds hängt von den LOB-Speicherparametern der XMLType-Spalte ab. Z.B. if storage in row Option aktiviert, dann werden kleine Dokumente direkt mit anderen Daten und vsize() gespeichert gibt entsprechende Werte zurück.

In Wirklichkeit erstellt Oracle die zugrunde liegende BLOB-Spalte mit dem Systemnamen, der durch Abfrage von user_tab_cols gefunden werden kann Ansicht:

select table_name, column_name, data_type 
from user_tab_cols 
where 
  table_name = 'T' and hidden_column = 'YES'
  and
  column_id = (
      select column_id 
      from user_tab_cols 
      where table_name = 'T' and column_name = 'X'
  ) 

Diese Abfrage gibt den Namen der verborgenen Systemspalte zurück, die wie folgt aussieht:SYS_NC00002$ .

Danach ist es möglich, die Größe der Felder mit normalem dbms_lob.getlength() zu erhalten Aufruf gegen versteckte Spalte:

select dbms_lob.getlength(SYS_NC00002$) from t