`

Oracle Spatial创建空间索引时遇到的ORA-29855问题

 
阅读更多

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 Spatial是甲骨文公司推出的空间数据管理解决方案,其核心是一组专门针对Oracle数据库中空间元素的SQL模式、函数集以及空间索引机制。Oracle Spatial允许对空间数据进行存储、检索、更新和查询操作,是处理...

    Oracle Spatial与ArcGIS连接

    本文旨在探讨ArcGIS与Oracle Spatial之间的直接连接方法,并讨论在此过程中遇到的问题及其解决方案。 #### 二、ArcGIS与Oracle Spatial直接连接概述 **2.1 直接连接的意义** 直接连接(Direct Connect)是指ArcGIS...

    postgresql和oracle创建空间索引

    标题中的“postgresql和oracle创建空间索引”涉及的是在两种主流的关系型数据库管理系统(RDBMS)中,如何为地理空间数据创建索引的技术。在处理包含地理信息的数据时,如地图坐标、地理位置等,空间索引能显著提高...

    Oracle为sdo_geometry创建空间索引

    本文将详细介绍如何在 Oracle 中创建空间索引,包括创建空间索引的步骤、注意事项和常见问题。 一、 创建空间索引前的准备 在创建空间索引之前,需要先创建一个包含 sdo_geometry 数据类型的表。sdo_geometry 是 ...

    oracle.spatial的jar包

    接着,可以使用 SDOTopoGeometry 类来创建和操作拓扑对象,SDO_Geometry 类来处理基本的几何对象,通过 SDO_IndexInfo 来管理空间索引。此外,还可以利用 SDO_CS 类来处理坐标系统转换,以及 SDO_UTIL 类来执行各种...

    如何用SQL语句创建Oracle Spatial的图层-MyGIS软件工作室-James MapInfo技术论坛.txt

    根据提供的文件信息,本文将详细解释如何使用SQL语句创建Oracle Spatial中的图层,并涉及到相关的步骤与具体操作方法。 ### 如何用SQL语句创建Oracle Spatial的图层 #### 步骤一:创建表结构 首先,需要创建一个...

    Oracle Spatial9i介绍

    为了提高空间数据查询的效率,Oracle Spatial支持创建空间索引。空间索引是一种特殊的索引类型,可以显著提高涉及空间数据的操作性能。Oracle Spatial9i支持多种空间索引策略,包括R-tree索引等,以适应不同的应用...

    oracle spatial的官方指南

    - 支持多种空间索引类型,包括R-tree索引等,确保空间数据的高效检索。 2. **空间数据的操作与分析** - 提供了丰富的空间操作函数,例如计算两个空间对象之间的距离、判断是否相交等。 - 支持复杂的空间查询和...

    Oracle Spatial用户指南

    为了提高空间查询的性能,Oracle Spatial提供了空间索引,如R-Tree和GIST(Generalized Indexed Search Tree)。这些索引能快速定位和比较空间对象,加速查询过程。 四、空间查询与分析 Oracle Spatial提供了丰富的...

    Oracle Spatial学生指导

    首先,Oracle Spatial的核心概念包括空间数据类型、空间索引和空间操作。空间数据类型如MDSYS.SDO_GEOMETRY,用于存储几何对象,如点、线、面等。空间索引,如R-树或quadtree,加速了对这些空间对象的查询。空间操作...

    基于Oracle Spatial的矢量空间数据管理机制.pdf

    Oracle Spatial提供了一个强大的事务机制,包括元数据管理机制、空间索引机制、查询机制等。元数据管理机制可以管理空间数据的元数据,空间索引机制可以提高查询效率,查询机制可以支持各种空间分析。 Oracle ...

    Oracle Spatial Developer's Guide

    《Oracle Spatial Developer's Guide》是Oracle公司为开发者提供的一份详尽指南,专注于其空间数据库解决方案——Oracle Spatial。Oracle Spatial是Oracle数据库的一个扩展模块,它提供了处理地理空间数据的能力,...

    OracleSpatial_OCI-code\code

    1. **空间索引**:Oracle Spatial 支持 R-树和 GIST 空间索引,这些索引能高效地处理复杂的空间查询,如邻近查询、覆盖查询和交集查询。 2. **空间数据类型**:Oracle Spatial 提供了 SDO_GEOMETRY 数据类型,用于...

    Oracle Spatial 官方文档 pdf

    - **空间索引**:提供高效的索引技术,如 R-tree,加速空间查询和操作。 - **空间查询**:支持复杂的空间关系查询,例如“附近”、“相交”、“包含”等,以及距离和方向计算。 - **空间分析**:包括地形分析、...

    pro oracle spatial for oracle db 11g英文版电子书(含代码和数据)

    5. **索引与存储**:讲解了Oracle Spatial使用的空间索引技术,如R树和GIST,以及如何优化空间查询性能。 6. **空间查询**:介绍SQL语法扩展,用于执行空间查询,如距离查询、覆盖查询和邻近查询。 7. **空间分析*...

    [Oracle] Oracle Spatial 应用扩展 (英文版)

    [Packt Publishing] Oracle Spatial 应用扩展 (英文版) [Packt Publishing] Applying and Extending Oracle Spatial (E-Book) ☆ 图书概要:☆ Overview Understand how to develop Oracle Spatial data models ...

    Oracle Spatial User's Guide and Reference

    - **Q: 如何解决空间索引性能问题?** - A: 定期重新构建索引,并调整 R-tree 参数以适应不同的数据分布特性。 - **Q: 如何进行大体积数据导入?** - A: 使用批量加载工具(如 SQL*Loader),并预先创建好空间索引...

    基于Oracle Spatial的空间数据库的索引与查询优化.pdf

    【空间索引】在Oracle Spatial中,空间索引是解决大量空间数据快速查询的关键。空间索引能够加速空间操作,比如空间查询和分析。通过创建空间索引,可以提高查询性能,特别是在处理复杂的空间关系时。Oracle Spatial...

    使用Oracle Spatial对ArcSDE中的SDO_GEOMETRY类型数据进行空间操作

    "使用Oracle Spatial对ArcSDE中的SDO_GEOMETRY类型数据进行空间操作" Oracle Spatial 是 Oracle 数据库中的一个空间数据处理组件,用于存储、管理和操作空间数据。ArcSDE 是一个空间数据引擎,用于存储和管理大规模...

Global site tag (gtag.js) - Google Analytics