sql >> Base de Datos >  >> RDS >> Oracle

¿Qué tan grande es un XMLType de Oracle cuando se almacena como XML BINARIO?

El formato XML binario de Oracle corresponde al "Formato XML compatible con esquemas compactos" abreviado como CSX. Datos codificados almacenados como campo BLOB. Detalles sobre el formato XML binario disponible en la documentación de Oracle (aquí y aquí ).

El tamaño real del campo de datos depende de los parámetros de almacenamiento LOB de la columna XMLType. P.ej. si storage in row opción habilitada luego pequeños documentos almacenados directamente con otros datos y vsize() devuelve valores apropiados.

En realidad, Oracle crea una columna BLOB subyacente con el nombre del sistema, que se puede encontrar consultando user_tab_cols ver:

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'
  ) 

Esta consulta devuelve el nombre de la columna oculta del sistema que se parece a SYS_NC00002$ .

Después de eso, es posible obtener el tamaño de los campos con dbms_lob.getlength() regulares llamar contra columna oculta:

select dbms_lob.getlength(SYS_NC00002$) from t