问题描述
嗨,汤姆,
我们正在计划从basicfile迁移到securefile lob存储 (Oracle数据库19c)。
数据库还包含一些空间层,在具有本地空间索引的分区表中。这些表/分区是在Oracle 11中定义的,没有为sdo_geometry varray元素 (sdo_elem_info和sdo_ordinates) 明确指定存储子句。正如我从Oracle文档中了解到的那样 (https://docs.oracle.com/en/database/oracle/oracle-database/19/adlob/introduction-to-large-objects.html#GUID-9B66BC56-A427-4C1B-B185-8E004CF4B2F7),这些varray仅存储为basicfile LOB,以防其大小超过约4kB。较小几何形状的varray元素存储为内联的原始值。
当我们要迁移到securefile lob (使用表重新定义) 时,我们有两个选项来定义sdo_geometry varrays
1.带有显式存储子句:
2.没有明确的storoge子句在这种情况下,只有较大的几何图形varrays将使用securefiles存储为LOB。其他varray将内联存储为
原始值。
我的问题是在空间查询性能方面什么选项是可取的?
谢谢。
最好的问候
我们正在计划从basicfile迁移到securefile lob存储 (Oracle数据库19c)。
数据库还包含一些空间层,在具有本地空间索引的分区表中。这些表/分区是在Oracle 11中定义的,没有为sdo_geometry varray元素 (sdo_elem_info和sdo_ordinates) 明确指定存储子句。正如我从Oracle文档中了解到的那样 (https://docs.oracle.com/en/database/oracle/oracle-database/19/adlob/introduction-to-large-objects.html#GUID-9B66BC56-A427-4C1B-B185-8E004CF4B2F7),这些varray仅存储为basicfile LOB,以防其大小超过约4kB。较小几何形状的varray元素存储为内联的原始值。
当我们要迁移到securefile lob (使用表重新定义) 时,我们有两个选项来定义sdo_geometry varrays
1.带有显式存储子句:
VARRAY "SPATIAL_COLUM"."SDO_ELEM_INFO" STORE AS SECUREFILE LOB (CACHE ENABLE STORAGE IN ROW) VARRAY "PERC_GEOMETRIE_PERCEEL"."SDO_ORDINATES" STORE AS SECUREFILE LOB (CACHE ENABLE STORAGE IN ROW) ENABLE ROW MOVEMENT
2.没有明确的storoge子句在这种情况下,只有较大的几何图形varrays将使用securefiles存储为LOB。其他varray将内联存储为
原始值。
我的问题是在空间查询性能方面什么选项是可取的?
谢谢。
最好的问候
专家解答
我认为这不会有任何区别。来自您提到的doc链接的通知:
"If the VARRAY storage clause is not specified, and the declared size of varray data is more than 4000 bytes"
spatial中的VARRAY通常声明为 “VARRAY(1048576)”,这意味着它们可以容纳超过4000个字节,因此无论如何,它们都将存储为lob,例如
我认为您不会看到任何原始值-它们都将被存储为lob
"If the VARRAY storage clause is not specified, and the declared size of varray data is more than 4000 bytes"
spatial中的VARRAY通常声明为 “VARRAY(1048576)”,这意味着它们可以容纳超过4000个字节,因此无论如何,它们都将存储为lob,例如
SQL> select * from user_lobs
2 where table_name in ('T','T1')
3 @pr
==============================
TABLE_NAME : T
COLUMN_NAME : SD
SEGMENT_NAME : SYS_LOB0000156852C00001$$
TABLESPACE_NAME : USERS
INDEX_NAME : SYS_IL0000156852C00001$$
CHUNK : 8192
PCTVERSION :
RETENTION :
FREEPOOLS :
CACHE : YES
LOGGING : YES
ENCRYPT : NO
COMPRESSION : NO
DEDUPLICATION : NO
IN_ROW : YES
FORMAT : ENDIAN NEUTRAL
PARTITIONED : NO
SECUREFILE : YES
SEGMENT_CREATED : YES
RETENTION_TYPE : DEFAULT
RETENTION_VALUE :
==============================
TABLE_NAME : T1
COLUMN_NAME : SD
SEGMENT_NAME : SYS_LOB0000156856C00001$$
TABLESPACE_NAME : USERS
INDEX_NAME : SYS_IL0000156856C00001$$
CHUNK : 8192
PCTVERSION :
RETENTION :
FREEPOOLS :
CACHE : YES
LOGGING : YES
ENCRYPT : NO
COMPRESSION : NO
DEDUPLICATION : NO
IN_ROW : YES
FORMAT : ENDIAN NEUTRAL
PARTITIONED : NO
SECUREFILE : YES
SEGMENT_CREATED : YES
RETENTION_TYPE : DEFAULT
RETENTION_VALUE :
PL/SQL procedure successfully completed.
我认为您不会看到任何原始值-它们都将被存储为lob
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




