---
title: "创建空间索引 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: 创建空间索引 OceanBase 数据库创建空间索引的语法与 Oracle 不同，空间索引列的 SRID 在建表时指定。 注意 OceanBase 数据库创建空间索引不兼容 Oracle。因为 Oracle 创建空间索引必须手动维护 `USER_SDO_GEOM_METADATA` 系统表中空间索引列与索引信息的映射…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.6.0

# 创建空间索引

更新时间：2026-07-15 15:27:38

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/300.basic-elements-of-oracle-mode/100.built-in-data-types-of-oracle-mode/1200.spatial-data-type-of-oracle-mode/400.create-spatial-indexes-of-oracle-mode.md)  

OceanBase 数据库创建空间索引的语法与 Oracle 不同，空间索引列的 SRID 在建表时指定。

#### 注意

OceanBase 数据库创建空间索引不兼容 Oracle。因为 Oracle 创建空间索引必须手动维护 `USER_SDO_GEOM_METADATA` 系统表中空间索引列与索引信息的映射。而 OceanBase 数据库使用 MySQL 的风格兼容 Oracle 模式，不维护 `USER_SDO_GEOM_METADATA` 表，因此语法与 Oracle 不一致。

## 注意事项

- 创建空间索引时必须指定 SRID。
 - 分区表创建空间索引，目前仅支持创建局部分区索引（必须显式指定 `LOCAL` 关键字），不支持全局分区索引。

## 准备工作

使用 GIS 功能前，需在业务租户配置 GIS 元数据。在连接到服务器后，执行如下命令将 `default_srs_data_mysql.sql` 文件导入到数据库中：

```shell
## $password 需替换为登录数据库的密码
## $localhost 需替换为登录数据库的 IP
## $tenant_name 需替换为登录数据库的租户名
## $port 需替换为数据库端口号
$python /home/admin/oceanbase/bin/import_srs_data.py -p'$password' -h $localhost -P $port -t $tenant_name -f /home/admin/oceanbase/etc/default_srs_data_mysql.sql

```

返回以下结果代表导入数据文件成功：

```shell
INFO: succeed to import srs data
INFO: oceanbase.__all_spatial_reference_systems old result rows -- 1
INFO: oceanbase.__all_spatial_reference_systems new result rows -- 5152

```

## 示例

以下示例展示如何创建空间索引：

```sql
-- 建表时确定索引列的 SRID
CREATE TABLE geom (id NUMBER PRIMARY KEY,
                    name VARCHAR2(32),
                        shape SDO_GEOMETRY SRID 4326);
-- 插入两条测试数据
INSERT INTO geom VALUES(1,'a',SDO_GEOMETRY(2003,4326,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0, 0,1, 1,1, 1,0, 0,0)));
INSERT INTO geom VALUES(2,'a',SDO_GEOMETRY(2001,4326, sdo_point_type(0, 0, NULL), NULL, NULL));

-- 创建索引
CREATE INDEX g ON geom(shape) INDEXTYPE IS MDSYS.SPATIAL_INDEX;

```

以下示例展示如何为分区表创建空间索引：

```sql
-- 建分区表时确定索引列的 SRID
CREATE TABLE geom_par (id NUMBER PRIMARY KEY,
                    name VARCHAR2(32),
                        shape SDO_GEOMETRY SRID 4326)
PARTITION BY HASH(id) PARTITIONS 2;

-- 插入两条测试数据
INSERT INTO geom_par VALUES(1,'a',SDO_GEOMETRY(2003,4326,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,0, 0,1, 1,1, 1,0, 0,0)));
INSERT INTO geom_par VALUES(2,'a',SDO_GEOMETRY(2001,4326, sdo_point_type(0, 0, NULL), NULL, NULL));

-- 创建局部索引（添加 LOCAL 关键字）
CREATE INDEX g ON geom_par(shape) INDEXTYPE IS MDSYS.SPATIAL_INDEX LOCAL;

```

以下示例展示如何删除空间索引：

```sql
DROP INDEX g;

```

## 相关文档

- 更多有关 SRID 的介绍信息，请参见 [空间参考系统 (SRS)](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005688093)。
 - 更多有关空间数据导入的报错处理信息，请参见 [空间数据 功能中 空间数据 类型字段及相关函数运行报错 ERROR 3548](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000245401)。
 - 更多有关索引查询的相关信息请参见 [查询计算函数](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005688115)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
