13.10 SDO_GEOR_UTL.emptyBlocks

形式

SDO_GEOR_UTL.emptyBlocks(
     georaster     IN OUT SDO_GEORASTER, 
     bgValues      IN SDO_NUMBER_ARRAY DEFAULT NULL,
     parallelParam IN VARCHAR2 DEFAULT NULL);

説明

指定した背景値のみを含むすべてのブロックを空のLOBに切り捨てて、それらを空のブロックにします。GeoRaster記憶域に必要とされるディスク領域を削減するために使用できます。

パラメータ

georaster

GeoRasterオブジェクトを指定します。

bgValues

ブロックを空のラスター・ブロックにするかどうかを決定する背景値を指定します。SDO_NUMBER_ARRAYオブジェクト内の要素の数は、1つ(すべてのレイヤーに同じ入力値を使用)またはレイヤー次元のサイズ(各レイヤーにそれぞれ異なる入力値を使用)のいずれかであることが必要です。たとえば、SDO_NUMBER_ARRAY(1,5,10)では、1番目のレイヤーに1を、2番目のレイヤーに5を、3番目のレイヤーに10を含むブロックが空のブロックになります。このパラメータがNULLの場合、bgValuesがデフォルト値になります(単一要素のSDO_NUMBER_ARRAY(0))。

parallelParam

操作の並列度を指定します。指定する場合、parallel=nという形式である必要があります(ここでのn1より大きい)。データベース・オプティマイザでは、このパラメータによって指定された並列度を使用します。指定しない場合、デフォルトでパラレル処理は行われません。詳細は、GeoRasterでのパラレル処理を参照してください。

使用上のノート

georasterがNULLの場合、このプロシージャは処理を実行しません。

このプロシージャの実行後、次のようにALTER TABLE文を使用してLOB記憶域を縮小できます。

ALTER TABLE <rdt_table_name> MODIFY LOB (rasterblock)(SHRINK SPACE);

詳細は、Oracle Database SQL言語リファレンスALTER TABLEを参照してください。

このプロシージャは、指定した背景値を使用してすべての空のブロックに入力するSDO_GEOR_UTL.fillEmptyBlocksとは対照的です。

次の例では、セル値が背景値(255,0,0)であるブロックを空にします。

DECLARE
  geor  SDO_GEORASTER;
BEGIN
  SELECT georaster INTO geor FROM georaster_table WHERE georid = 3 FOR UPDATE;
  SDO_GEOR_UTL.emptyBlocks(geor, SDO_NUMBER_ARRAY(255,0,0));
  UPDATE georaster_table SET georaster = geor WHERE georid = 3;
  COMMIT;
END;
/