Oracle

备注

geoserver没有内置对Oracle的支持;它必须通过扩展安装。继续 安装Oracle扩展 有关安装的详细信息。

Oracle Spatial and Locator 是Oracle的空间组件。 定位器 提供所有Oracle版本,但空间功能有限。 空间 是Oracle的全功能空间产品,但需要特定的许可证才能使用。

安装Oracle扩展

  1. 访问 website download 页面,找到您的版本,并下载: geoserver-2.24.x-oracle-plugin.zip

    警告

    确保与插件匹配(示例 2.24.x 以上)版本设置为Geoserver实例的版本。

  2. 将存档的内容提取到 WEB-INF/lib 地理服务器安装目录。

添加Oracle数据存储

正确安装扩展后 Oracle 作为选项出现在 Vector Data Sources 创建新数据存储时列出。

../../_images/oraclecreate.png

数据源列表中的Oracle

配置Oracle数据存储

../../_images/oracleconfigure.png

配置Oracle数据存储

Option

Description

host

Oracle服务器主机名或IP地址。

port

Oracle服务器接受连接的端口(通常是端口1521)。

database

要连接到的数据库的名称。默认情况下,这被解释为一个SID名。要连接到服务,请在名称前面加上 / .

schema

从中访问表的数据库架构。设置该值会大大提高数据存储显示其可发布表和视图的速度,因此建议设置该值。

user

连接到数据库时要使用的用户的名称。

password

连接到数据库时要使用的密码。留空表示没有密码。

max connections min connections fetch size Connection timeout validate connections

连接池配置参数。参见 数据库连接池 有关详细信息。

Loose bbox

控制如何根据数据库中的几何图形创建边界框过滤器。查看 使用松散边界框 下面部分。

Metadata bbox

控制使用mdsys.user_sdo_geom_metadata或mdsys.all_sdo_geom_metadata表进行边界框计算的标志,如果视图访问速度快且表中的边界配置正确,这将带来更好的性能默认值为false

Get remarks

布尔标志指定是否返回备注元数据。

连接到Oracle群集

为了连接到OracleRAC,可以使用几乎完整的JDBC URL作为 database ,前提是从 ( 它将被逐字使用,选项“主机”和“端口”将被忽略。以下是用于连接到Oracle RAC的“数据库”值示例:

(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=host2) (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=service)))

有关此语法的详细信息,请参阅 Oracle documentation .

连接到SID或服务

最新版本的Oracle支持通过sid名称或服务名称连接到数据库。SID连接描述符的格式为: host:port:database ,而服务连接描述符的格式为 host:port/database .geoserver默认使用sid形式。要通过服务连接,请在 database 名称配置项 / .

通过LDAP连接到数据库

例如,如果要通过LDAP与JDBC精简驱动程序建立连接,可以使用以下连接字符串作为输入字段 database ldap://[host]:[Port]/[db],cn=OracleContext,dc=[oracle_ldap_context] .

如果您正在使用引用,请通过将jndi.properties文件放在geoserver的classpath(geoserver/web-inf/classes)中来启用它。此属性文件包含:

java.naming.referral=follow

使用松散边界框

Loose bbox 选项已设置,空间查询中仅使用数据库几何图形的边界框。这将导致显著的性能提升。缺点是,有些几何图形可能被报告为与bbox相交,而实际上它们不相交。

如果数据库的主要用途是通过 Web地图服务(WMS) 可以安全地设置此标志,因为查询更多几何图形没有任何可见效果。但是,如果使用 Web要素服务(WFS) 并且利用bbox过滤功能,不应该设置这个标志。

使用几何元数据表

默认情况下,Oracle数据存储会查看 MDSYS.USER_SDO*MDSYS.ALL_SDO* 用于确定每个几何体列的几何体类型和本机SRID的视图。这些视图将自动填充有关存储在当前用户拥有的表中的几何图形列的信息(对于 MDSYS.USER_SDO* 或者可以访问 MDSYS.ALL_SDO* 视图)。

此策略存在一些问题:

  • 如果连接池用户无法访问表(因为 impersonation 已使用)MDSYS视图将为空,因此无法确定几何类型和本机SRID

  • 几何图形类型只能在构建空间索引时指定,作为索引约束。但是,在创建索引时通常不包括这些信息

  • 视图是基于当前用户动态填充的。如果数据库中有数千个表和用户,那么视图将变得非常慢。

从geoserver 2.1.4开始,管理员可以通过手动创建描述每个几何体列的几何体元数据表来解决上述问题。它的存在通过名为 几何元数据表 (可以是简单的表名,也可以是模式限定的表名)。表具有以下结构(表名是灵活的,只需指定在数据存储连接参数中选择的一个)::

CREATE TABLE GEOMETRY_COLUMNS(
   F_TABLE_SCHEMA VARCHAR(30) NOT NULL,
   F_TABLE_NAME VARCHAR(30) NOT NULL,
   F_GEOMETRY_COLUMN VARCHAR(30) NOT NULL,
   COORD_DIMENSION INTEGER,
   SRID INTEGER NOT NULL,
   TYPE VARCHAR(30) NOT NULL,
   UNIQUE(F_TABLE_SCHEMA, F_TABLE_NAME, F_GEOMETRY_COLUMN),
   CHECK(TYPE IN ('POINT','LINE', 'POLYGON', 'COLLECTION', 'MULTIPOINT', 'MULTILINE', 'MULTIPOLYGON', 'GEOMETRY') ));

当该表存在时,存储首先搜索该表中要分类的每个几何列的信息,并且仅当该表不包含任何信息时才返回到MDSYS视图。

使用JNDI配置Oracle数据库

使用Tomcat设置JNDI连接池 有关使用JNDI设置Oracle连接的指南。