

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

Amazon RDS 通过使用 `LOCATOR` 选项支持 Oracle Locator。Oracle Locator 提供支持基于 Internet 和无线服务的应用程序与基于合作伙伴的 GIS 解决方案通常所需的功能。Oracle Locator 是 Oracle Spatial 的有限子集。有关更多信息，请参阅 Oracle 文档中的 [Oracle Locator](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#SPATL340)。

**重要**  
如果您使用 Oracle Locator，则当存在通用漏洞评分系统 (CVSS) 评分为 9\$1 的安全漏洞或其他公布的安全漏洞时，Amazon RDS 会自动将数据库实例更新为最新的 Oracle PSU。

## Oracle Locator 支持的数据库版本
<a name="Oracle.Options.Locator.Releases"></a>

RDS for Oracle 支持 Oracle Locator for Oracle Database 19c。Oracle Database 21c 不支持 Oracle Locator，但 Oracle Spatial 选项中提供了其功能。以前，Spatial 选项需要额外的许可证。Oracle Locator 是 Oracle Spatial 功能的子集，不需要额外的许可证。2019 年，Oracle 宣布，所有 Oracle Spatial 功能都包含在企业版和标准版 2 许可证中，无需额外费用。因此，Oracle Spatial 选项不再需要额外的许可。有关更多信息，请参阅 Oracle Database Insider 博客中的[Machine Learning、Spatial 和 Graph - 无需许可证！](https://blogs.oracle.com/database/post/machine-learning-spatial-and-graph-no-license-required)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## 使用 Oracle Locator
<a name="Oracle.Options.Locator.Using"></a>

在启用 Oracle Locator 选项后，可以开始使用它。您应仅使用 Oracle Locator 功能。请勿使用任何 Oracle Spatial 功能，除非您有 Oracle Spatial 的许可证。

有关 Oracle Locator 支持的功能的列表，请参阅 Oracle 文档中的 [Locator 附带的功能](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#GUID-EC6DEA23-8FD7-4109-A0C1-93C0CE3D6FF2__CFACCEEG)。

有关 Oracle Locator 不支持的功能的列表，请参阅 Oracle 文档中的 [Locator 未附带的功能](https://docs.oracle.com/database/121/SPATL/sdo_locator.htm#GUID-EC6DEA23-8FD7-4109-A0C1-93C0CE3D6FF2__CFABACEA)。

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

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

**删除 `LOCATOR` 选项**

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

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

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

   ```
   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. 删除引用了 `LOCATOR` 选项的数据类型或功能的任何对象。

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