

# Oracle Spatial
<a name="Oracle.Options.Spatial"></a>

Amazon RDS 通过使用 `SPATIAL` 选项支持 Oracle Spatial。Oracle Spatial 提供了一个 SQL 架构和一些功能，可帮助在 Oracle 数据库中存储、检索、更新和查询空间数据集合。有关更多信息，请参阅 Oracle 文档中的 [Spatial 概念](http://docs.oracle.com/database/121/SPATL/spatial-concepts.htm#SPATL010)。Amazon RDS 在所有受支持发行版的所有版本中均支持 Oracle Spatial。

## Spatial 补丁包（SPB）的工作原理
<a name="Oracle.Options.Spatial.SPBs"></a>

每个季度，RDS for Oracle 都会为每个受支持的主要引擎发布新的次要引擎版本。版本更新（RU）引擎版本通过包含指定季度的 RU 补丁，纳入了 Oracle 提供的错误修复。Spatial 补丁包（SPB）引擎版本包含 RU 补丁以及特定于 Oracle Spatial 的补丁。例如，19.0.0.0.ru-2025-01.spb-1.r1 是一个次要引擎版本，其中包含引擎版本 19.0.0.0.ru-2025-01.rur-2025-01.r1 中的 RU 补丁以及 Spatial 补丁。只有 Oracle Database 19c 才支持 SPB。

尽管 SPB 与 RU 的命名方式不同，但它们的功能相同。RU 使用命名格式 19.0.0.0.ru-2025-01.rur-2025-01.r1。SPB 名称包括文本“spb”，如 19.0.0.0.ru-2025-01.spb-1.r1。通常，SPB 在其相应的季度 RU 发布后的 2-3 周内发布。例如，19.0.0.0.ru-2025-01.spb-1.r1 在 19.0.0.0.ru-2025-01.rur-2025-01.r1 之后发布。

RDS for Oracle 具有单独的途径来自动升级 RU 和 SPB 的次要版本。如果数据库实例使用 RU，则 RDS 会自动将实例升级到 RU。如果数据库实例使用 SPB，则 RDS 会将实例升级到 SPB。

有关 RU 和 SPB 的更多信息，请参阅 [Oracle 次要版本升级](USER_UpgradeDBInstance.Oracle.Minor.md)。有关 Oracle Database 19c 支持的 RU 和 SPB 的列表，请参阅《Amazon RDS for Oracle Release Notes》**中的 [Amazon RDS for Oracle Database 19c (19.0.0.0)](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html)。

## 使用 Oracle Spatial 的先决条件
<a name="Oracle.Options.Spatial.PreReqs"></a>

以下是使用 Oracle Spatial 的先决条件：
+ 确保您的数据库实例具有足够的实例类。db.t3.small 数据库实例类不支持 Oracle Spatial。有关更多信息，请参阅 [RDS for Oracle 数据库实例类](Oracle.Concepts.InstanceClasses.md)。
+ 确保您的数据库实例已启用**自动次要版本升级**。该选项允许数据库实例在次要数据库引擎版本升级可用时自动接收这些升级，这对于安装 Oracle Java 虚拟机（JVM）的任意选项是必需的。Amazon RDS 使用该选项将数据库实例更新为最新的 Oracle 补丁集更新（PSU）或版本更新（RU）。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。

## Oracle Spatial 的最佳实践
<a name="Oracle.Options.Spatial.BestPractces"></a>

以下是使用 Oracle Spatial 的最佳实践：
+ 为了实现最高安全性，可将 `SPATIAL` 选项与安全套接字层 (SSL) 结合使用。有关更多信息，请参阅“[Oracle 安全套接字层](Appendix.Oracle.Options.SSL.md)”。
+ 配置数据库实例以限制对它的访问。有关更多信息，请参阅“[在 VPC 中访问数据库实例的场景](USER_VPC.Scenarios.md)”和“[在 VPC 中使用数据库实例](USER_VPC.WorkingWithRDSInstanceinaVPC.md)”。

## 添加 Oracle Spatial 选项
<a name="Oracle.Options.Spatial.Add"></a>

下面是将 `SPATIAL` 选项添加到数据库实例的一般过程：

1. 创建新的选项组，或者复制或修改现有选项组。

1. 将 选项添加到该选项组。

1. 将选项组与数据库实例相关联。

如果数据库实例上*未* 安装 Oracle Java 虚拟机 (JVM)，则添加 `SPATIAL` 选项时会出现短暂中断。如果数据库实例上已安装 Oracle Java 虚拟机 (JVM)，则不会出现中断。在添加 选项后，您无需重新启动数据库实例。只要选项组处于活动状态，Oracle Spatial 就可用。

**注意**  
在该中断期间，将短暂禁用密码验证功能。您还可能会在中断期间看到与密码验证功能相关的事件。在 Oracle 数据库实例变得可用之前，将再次启用密码验证功能。

**将 `SPATIAL` 选项添加到数据库实例**

1. 确定您要使用的选项组。您可以创建新的选项组，或使用现有选项组。如果您想使用现有选项组，请跳到下一步。或者，通过以下设置创建自定义数据库选项组：

   1. 对于**引擎**，请选择适用于您的数据库实例的 Oracle 版本。

   1. 对于**主引擎版本**，选择数据库实例的版本。

   有关更多信息，请参阅“[创建选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)”。

1. 将 **SPATIAL** 选项添加到该选项组。有关添加选项的更多信息，请参阅 [将选项添加到选项组](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)。

1. 将选项组应用到新的或现有的数据库实例：
   + 对于新数据库实例，您可以在启动实例时应用选项组。有关更多信息，请参阅“[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)”。
   + 对于现有数据库实例，您可以通过修改实例并附加新的选项组来应用选项组。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。

## 删除 Oracle Spatial 选项
<a name="Oracle.Options.Spatial.Remove"></a>

删除使用 `SPATIAL` 选项提供的数据类型的所有对象后，可以从数据库实例中删除该选项。如果数据库实例上*未* 安装 Oracle Java 虚拟机 (JVM)，则删除 `SPATIAL` 选项时会出现短暂中断。如果数据库实例上已安装 Oracle Java 虚拟机 (JVM)，则不会出现中断。删除 `SPATIAL` 选项后，您无需重新启动数据库实例。

**删除 `SPATIAL` 选项**

1. 备份您的数据。
**警告**  
如果实例使用作为选项一部分启用的数据类型，并且您删除了 `SPATIAL` 选项，则可能会丢失数据。有关更多信息，请参阅“[备份、还原和导出数据](CHAP_CommonTasks.BackupRestore.md)”。

1. 检查是否有任何现有对象引用了 `SPATIAL` 选项的数据类型或功能。

   如果存在 `SPATIAL` 选项，则在应用无 `SPATIAL` 选项的新选项组时，实例可能会卡住。您可以使用以下查询标识对象：

   ```
   SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME, BYTES/1024/1024 mbytes
   FROM   DBA_SEGMENTS
   WHERE  SEGMENT_TYPE LIKE '%TABLE%'
   AND    (OWNER, SEGMENT_NAME) IN
          (SELECT DISTINCT OWNER, TABLE_NAME 
           FROM   DBA_TAB_COLUMNS
           WHERE  DATA_TYPE='SDO_GEOMETRY'
           AND    OWNER <> 'MDSYS')
   ORDER BY 1,2,3,4;
   
   SELECT OWNER, TABLE_NAME, COLUMN_NAME
   FROM   DBA_TAB_COLUMNS 
   WHERE  DATA_TYPE = 'SDO_GEOMETRY' 
   AND    OWNER <> 'MDSYS' 
   ORDER BY 1,2,3;
   ```

1. 删除引用了 `SPATIAL` 选项的数据类型或功能的任何对象。

1. 请执行下列操作之一：
   + 从 `SPATIAL` 选项所属的选项组中删除该选项。此更改会影响使用该选项组的所有数据库实例。有关更多信息，请参阅“[从选项组中删除选项](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)”。
   + 修改数据库实例并指定不包含 `SPATIAL` 选项的另一个选项组。此更改会影响单个数据库实例。您可以指定默认 (空) 选项组，或指定其他自定义选项组。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。