Oracle Spatial创建空间索引时遇到的ORA-29855问题
过程描述:
执行的SQL语句:CREATE INDEX GC_ROAD_SEGMENT_CH_SIDX ON GC_ROAD_SEGMENT_CH(GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
抛出的异常: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
创建索引:
a:如果都是一个类型,可以使用如下创建索引,提高速度。
CREATE INDEX geometry_index ON ix_poi(geometry) INDEXTYPE IS MDSYS.SPATIAL_INDEX
PARAMETERS ('LAYER_GTYPE=POINT');
b:重建索引
ALTER INDEX customers_sidx REBUILD ;
问题分析:
(1)使用以下语句查看创建索引结果:
select INDEX_NAME,TABLE_OWNER,TABLE_NAME,STATUS,ITYP_OWNER,ITYP_NAME,DOMIDX_STATUS,DOMIDX_OPSTATUS from user_indexes where ITYP_NAME is not null;
找到相应的记录,或者在上述查询中加入相应的条件(指定表名和索引类型)DOMIDX_OPSTATUS对应的为FAILED,说明创建空间索引失败。
oracle11g是有记录,但是无效,可以使用drop index GC_ROAD_SEGMENT_CH_SIDX; 删除索引
(2)使用以下语句查看相应元数据:
select * from user_sdo_geom_metadata
可以在查询条件中加入表名条件,缩小搜索范围,发现元数据表中无记录。
原 因:
当时创建空间表时没有创建相应的空间元数据。
解决办法:
(1)先在user_sdo_geom_metadata中使用以下语句创建相应的元数据 (SDO_DIM_ELEMENT值是固定的)
insert into user_sdo_geom_metadata(table_name,COLUMN_NAME, DIMINFO, SRID)
values(
'GC_ROAD_SEGMENT_CH',
'GEOMETRY',
MDSYS.SDO_DIM_ARRAY(
MDSYS.SDO_DIM_ELEMENT('X',-180,180,0.005),
MDSYS.SDO_DIM_ELEMENT('Y',-90,90,0.005)
),
8307
)
(2)再执行空间索引创建语句:
CREATE INDEX GC_ROAD_SEGMENT_CH_SIDX ON GC_ROAD_SEGMENT_CH(GEOMETRY) INDEXTYPE IS MDSYS.SPATIAL_INDEX;
无错误提示,问题得到解决。
总 结:
在创建空间索引时先创建相应的元数据。
相关推荐
Oracle Spatial是甲骨文公司推出的空间数据管理解决方案,其核心是一组专门针对Oracle数据库中空间元素的SQL模式、函数集以及空间索引机制。Oracle Spatial允许对空间数据进行存储、检索、更新和查询操作,是处理...
本文旨在探讨ArcGIS与Oracle Spatial之间的直接连接方法,并讨论在此过程中遇到的问题及其解决方案。 #### 二、ArcGIS与Oracle Spatial直接连接概述 **2.1 直接连接的意义** 直接连接(Direct Connect)是指ArcGIS...
标题中的“postgresql和oracle创建空间索引”涉及的是在两种主流的关系型数据库管理系统(RDBMS)中,如何为地理空间数据创建索引的技术。在处理包含地理信息的数据时,如地图坐标、地理位置等,空间索引能显著提高...
本文将详细介绍如何在 Oracle 中创建空间索引,包括创建空间索引的步骤、注意事项和常见问题。 一、 创建空间索引前的准备 在创建空间索引之前,需要先创建一个包含 sdo_geometry 数据类型的表。sdo_geometry 是 ...
接着,可以使用 SDOTopoGeometry 类来创建和操作拓扑对象,SDO_Geometry 类来处理基本的几何对象,通过 SDO_IndexInfo 来管理空间索引。此外,还可以利用 SDO_CS 类来处理坐标系统转换,以及 SDO_UTIL 类来执行各种...
根据提供的文件信息,本文将详细解释如何使用SQL语句创建Oracle Spatial中的图层,并涉及到相关的步骤与具体操作方法。 ### 如何用SQL语句创建Oracle Spatial的图层 #### 步骤一:创建表结构 首先,需要创建一个...
为了提高空间数据查询的效率,Oracle Spatial支持创建空间索引。空间索引是一种特殊的索引类型,可以显著提高涉及空间数据的操作性能。Oracle Spatial9i支持多种空间索引策略,包括R-tree索引等,以适应不同的应用...
- 支持多种空间索引类型,包括R-tree索引等,确保空间数据的高效检索。 2. **空间数据的操作与分析** - 提供了丰富的空间操作函数,例如计算两个空间对象之间的距离、判断是否相交等。 - 支持复杂的空间查询和...
为了提高空间查询的性能,Oracle Spatial提供了空间索引,如R-Tree和GIST(Generalized Indexed Search Tree)。这些索引能快速定位和比较空间对象,加速查询过程。 四、空间查询与分析 Oracle Spatial提供了丰富的...
首先,Oracle Spatial的核心概念包括空间数据类型、空间索引和空间操作。空间数据类型如MDSYS.SDO_GEOMETRY,用于存储几何对象,如点、线、面等。空间索引,如R-树或quadtree,加速了对这些空间对象的查询。空间操作...
Oracle Spatial提供了一个强大的事务机制,包括元数据管理机制、空间索引机制、查询机制等。元数据管理机制可以管理空间数据的元数据,空间索引机制可以提高查询效率,查询机制可以支持各种空间分析。 Oracle ...
《Oracle Spatial Developer's Guide》是Oracle公司为开发者提供的一份详尽指南,专注于其空间数据库解决方案——Oracle Spatial。Oracle Spatial是Oracle数据库的一个扩展模块,它提供了处理地理空间数据的能力,...
1. **空间索引**:Oracle Spatial 支持 R-树和 GIST 空间索引,这些索引能高效地处理复杂的空间查询,如邻近查询、覆盖查询和交集查询。 2. **空间数据类型**:Oracle Spatial 提供了 SDO_GEOMETRY 数据类型,用于...
- **空间索引**:提供高效的索引技术,如 R-tree,加速空间查询和操作。 - **空间查询**:支持复杂的空间关系查询,例如“附近”、“相交”、“包含”等,以及距离和方向计算。 - **空间分析**:包括地形分析、...
5. **索引与存储**:讲解了Oracle Spatial使用的空间索引技术,如R树和GIST,以及如何优化空间查询性能。 6. **空间查询**:介绍SQL语法扩展,用于执行空间查询,如距离查询、覆盖查询和邻近查询。 7. **空间分析*...
[Packt Publishing] Oracle Spatial 应用扩展 (英文版) [Packt Publishing] Applying and Extending Oracle Spatial (E-Book) ☆ 图书概要:☆ Overview Understand how to develop Oracle Spatial data models ...
- **Q: 如何解决空间索引性能问题?** - A: 定期重新构建索引,并调整 R-tree 参数以适应不同的数据分布特性。 - **Q: 如何进行大体积数据导入?** - A: 使用批量加载工具(如 SQL*Loader),并预先创建好空间索引...
【空间索引】在Oracle Spatial中,空间索引是解决大量空间数据快速查询的关键。空间索引能够加速空间操作,比如空间查询和分析。通过创建空间索引,可以提高查询性能,特别是在处理复杂的空间关系时。Oracle Spatial...
"使用Oracle Spatial对ArcSDE中的SDO_GEOMETRY类型数据进行空间操作" Oracle Spatial 是 Oracle 数据库中的一个空间数据处理组件,用于存储、管理和操作空间数据。ArcSDE 是一个空间数据引擎,用于存储和管理大规模...