【SDE】在ArcMap10.8.1、Oracle12102环境下配置SDE空间数据库,并激活st_geometry
环境准备
客户端
- Windows 10
- ArcCatalog 10.8.1
- 精简版Oracle Client 12 - 32 bit
安装包名称:instantclient-basic-nt-12.1.0.2.0.zip - Navicat Premium 15
服务端
- Windows Server 2019 Standard(桌面体验版)
- Oracle 12.1.0.2
安装包名称:winx64_12102_database_1of2.zip、winx64_12102_database_2of2.zip - MS VC++ 2015-2022 Redistributable(x64)
安装包名称: VC_redist.x64.exe
版本对应
以下表示ArcGIS Desktop各组件支持连接的Oracle服务端数据库,连接Oracle数据库时,须在Desktop相同计算机上安装对应Oracle版本的32位的客户端(本文以精简版Oracle Client 12 - 32 bit为例)
ArcGIS版本 | vc++ 版本 | Oracle 10g | Oracle 11g | Oracle 12c | Oracle 18c | Oracle 19c |
---|---|---|---|---|---|---|
ArcGIS 10.2.x | R2(x64)10.2.0.3 | R1(x64)11.1.0.7 R2(x64)11.2.0.1 R2(x64)11.2.0.3 |
R1(x64)12.1.0.1 | |||
ArcGIS 10.3.x | R2(x64)10.2.0.3 | R2(x64)11.2.0.3 | R1(x64)12.1.0.1 | |||
ArcGIS 10.4.x | R2(x64)11.2.0.4 | R1(x64)12.1.0.2 | ||||
ArcGIS 10.5.x | R2(x64)11.2.0.4 | R1(x64)12.1.0.2 R2(x64)12.2.0.1* |
||||
ArcGIS 10.6.1+ | 2017 | R2(x64)11.2.0.4 | R1(x64)12.1.0.2 R2(x64)12.2.0.1 |
(x64)18.3.0.0 (x64)18.4.0.0 |
(x64)19.3.0.0 | |
ArcGIS 10.7.x | 2017 | R2(x64)11.2.0.4 | R1(x64)12.1.0.2 R2(x64)12.2.0.1 |
(x64)18.3.0.0 (x64)18.4.0.0 |
(x64)19.3.0.0 | |
ArcGIS 10.8.x | 2015、2017、2019 | R2(x64)11.2.0.4 | R1(x64)12.1.0.2 R2(x64)12.2.0.1 |
(x64)18.3.0.0 (x64)18.4.0.0 |
(x64)19.3.0.0 |
参考资料
https://resources.arcgis.com/zh-cn/help/system-requirements/10.2/index.html#//01510000006s000000
https://desktop.arcgis.com/zh-cn/arcmap/10.3/get-started/system-requirements/database-requirements-oracle.htm
https://desktop.arcgis.com/zh-cn/system-requirements/10.4/database-requirements-oracle.htm
https://desktop.arcgis.com/zh-cn/system-requirements/10.5/database-requirements-oracle.htm
https://desktop.arcgis.com/zh-cn/system-requirements/10.6/database-requirements-oracle.htm
https://desktop.arcgis.com/zh-cn/system-requirements/10.7/database-requirements-oracle.htm
https://desktop.arcgis.com/zh-cn/system-requirements/10.8/database-requirements-oracle.htm
安装及配置
系统安装
客户端
1. ArcGIS 10.8.1
一路下一步就好,详见其它链接
安装完成后,在软件目录下附带各类数据库软件、各系统版本的st_geometry依赖文件,该文件在创建sde、调用空间函数均发挥作用
2. 精简版Oracle Client 12 - 32 bit
- 解压到文件夹
- 将文件夹添加到 系统环境变量 Path
- 在文件夹中新建 tnsnames.ora 文件,键入以下信息
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 服务端IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
3. Navicat Premium 15
服务端 Oracle
- 参照 https://blog.csdn.net/weixin_45775343/article/details/103422775 服务器安装步骤
- 安装用户选用 本地账户 ,使用Administrator用户
- 系统类 选用 服务端
- 安装类型 选用 高级安装
- 数据库标识符 取消勾选 创建为容器数据库,勾选后创建用户需以 c## 为用户名前缀,与sde创建冲突(此为12c版本后新特性)
- 双击 VC_redist.x64.exe 安装 vc++ 运行环境
空间数据库搭建
1.在Navicat中测试连接
启动Navicat,使用sys用户连接Oracle数据,测试连接是否生效,注意在高级标签页中将角色设置为SYSDBA
2.在ArcCatalog中测试sys用户连接
- 需确保已安装 32bit Oracle Client
- 启动ArcCatalog
- 在 数据库链接 中,点击 添加数据库连接
- 如下所示,选用Oracle,输入数据ip/实例名,输入sys账号密码
- 连接成功后出现,ip.sde 选项,并可展开查看数据表
- 如出现 Ora-12504 错误,一般是没配置 tnsnames.ora 或配置错误,详见上文
3. 将st_geometry拓展文件拷入Oracle目录
- 随ArcGIS安装,在
\DatabaseSupport\Oracle\Windows64 文件夹下有win64版Oracle的st_geometry文件,名为 st_shapelib.dll - 将 st_shapelib.dll 拷入Oracle服务端bim目录下,默认安装时路径为 C:\app\Oracle12\product\12.1.0\dbhome_1\BIN
4. 创建sde
- 启动ArcCalalog,在 工具箱>系统工具箱>Data Management Tools.tbx>地理数据库管理>创建企业级地理数据库
- 按如下配置参数
- 此步骤出现ORA-65096错误,一般是容器数据库类型导致,应在安装时取消相关选项,或参照其它文章重新配置
5. 以sde角色连接数据库
- 同步骤 2.在ArcCatalog中测试sys用户连接
- 用户及密码更改为新创建的 sde
- 连接完成后,出现 ip.sde, 展开并右键,出现可新建要素等空间数据类型选项,代表创建成功
6. 激活st_geometry空间函数库
参照 https://blog.csdn.net/weixin_42876784/article/details/114832026
使用st_geometry环境需vc++环境
- 确保完成 3. 将st_geometry拓展文件拷入Oracle目录
- 参照 1.在Navicat中测试连接 使用Navicat连接Oracle数据库,注意角色为sde
- 点击新建查询,输入以下命令
create or replace library ST_SHAPELIB as 'C:\app\Oracle12\product\12.1.0\dbhome_1\BIN\st_shapelib.dll';
alter package sde.st_geometry_shapelib_pkg compile reuse settings;
- 在Oracle服务端中打开 C:\app\Oracle12\product\12.1.0\dbhome_1\NETWORK\ADMIN\listener.ora 文件
- 修改dll配置为ANY,如
(ENVS = "EXTPROC_DLLS=ANY")
- 保存listener.ora并在系统服务中重启Oracle相关服务
- 在Navicat中执行以下查询语句,测试st_geometry拓展是否已配置
select * from user_libraries where library_name = 'ST_SHAPELIB';
- 输出结果包含st_shapelib.dll,代表配置成功
7. 测试st_geometry函数
- 参照 1.在Navicat中测试连接 使用Navicat连接Oracle数据库,注意角色为sde
- 点击新建查询,输入以下命令
SELECT sde.st_geometry('point (110.06544906 34.52209921)', 4326) FROM DUAL;
- 无报错误,并输出结果,代表函数成功被识别,并可执行
至此,搭建及配置已完成