sql >> データベース >  >> RDS >> Oracle

BINARYXMLとして格納された場合のOracleXMLTypeの大きさ

    Oracle Binary XML形式は、CSXと略される「CompactSchemaAwareXMLFormat」に対応します。 BLOBフィールドとして保存されたエンコードされたデータ。 Oracleのドキュメントから入手できるバイナリXML形式の詳細(こちら およびこちら )。

    データフィールドの実際のサイズは、XMLType列のLOBストレージパラメータによって異なります。例えば。 storage in rowの場合 オプションを有効にすると、他のデータとvsize()とともに直接保存された小さなドキュメント 適切な値を返します。

    実際には、Oracleはシステム名を使用して基礎となるBLOB列を作成します。これは、user_tab_colsにクエリを実行することで見つけることができます。 ビュー:

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

    このクエリは、SYS_NC00002$のようなシステムの非表示の列名を返します。 。

    その後、通常のdbms_lob.getlength()を使用してフィールドのサイズを取得することができます。 非表示の列に対する呼び出し:

    select dbms_lob.getlength(SYS_NC00002$) from t
    


    1. BEFOREINSERTトリガーでIFEXISTS(SELECT ...)を使用する(Oracle)

    2. Microsoft Access –基本

    3. mysqldumpエラー:max_allowed_pa​​cket'より大きいパケットを取得しました

    4. PostgreSQLでのpg_sleep_for()のしくみ