ArcGIS 10.4 创建 Oracle 12c R1(12.1.0.2) 地理数据库

通过ArcGIS帮助文档得知ArcGIS 10.4支持的Oracle数据库有 Oracle 11g R2 11.2.0.4 和 Oracle 12c R1 12.1.0.2

1 安装 Oracle 12c R1

在安装了ArcGIS 10.4 的电脑上,安装Oracle 12c R1的数据库,运行setup.exe

出现下面安装加载界面

不勾选 我希望通过My Oracle Support 接收安全更新

点击消息窗体的 ,并点击 下一步

选择 创建和配置数据库,并点击 下一步

笔者是个人使用数据库,通常装在笔记本电脑/一般台式机上,所以选择 桌面类,并点击 下一步

根据Oracle的建议,选择 创建新Windows用户,并设置 用户名 为:oracle,为方便记忆密码,设置 口令 为:oracle,然后点击 下一步

设置字符集为utf-8,管理口令 为:orcl,不勾选 创建为容器数据库,然后单击 下一步
(PS: 在Oracle Database 12c中,可插入数据库(Pluggable Database)为云计算而生,且为收费项目,Pluggable Database 其体系结构的核心是:由一个容器数据库(CDB)和多个可插入式数据库(PDB)构成,PDB包含独立的系统表空间和SYSAUX表空间等,但是所有PDB共享CDB的控制文件、日志文件和UNDO表空间。各个PDB之间互访需要通过DB Link进行,就仿佛是多个数据库一样。)

若勾选 创建为容器数据库,ArcMap 建立Oracle的企业地理数据库会出现下面问题:

Executing: CreateEnterpriseGeodatabase Oracle 192.168.220.203/orcl # DATABASE_AUTH sys ***** SDE_SCHEMA sde ***** sde
C:\Users\Administrator\Desktop\ArcGISforServerAdvancedEnterprise_server.ecp
Start Time: Wed Feb 12 09:17:20 2014
User has privileges required to create database objects.
Tablespace created.
Error creating geodatabase admin user. [ERROR: Failed to create new Oracle user sde  (-51).
Error: Underlying DBMS error (-51).
Extended error code: (65096)
ORA-65096: invalid common user or role name]
Failed to execute (CreateEnterpriseGeodatabase).
Failed at Wed Feb 12 09:17:32 2014 (Elapsed Time: 12.37 seconds)

上述问题可在 https://blog.csdn.net/linghe301/article/details/19110539 找到解决方法,本文不做详细介绍

忽略上述添加的 口令 不符合Oracle建议的标准,点击

等待 先决条件检查 完成

检查安装程序设置是否有问题,然后点击 安装

进入程序安装过程,等待安装完成

安装过程中,当数据库orcl建立成功后,会弹出窗体,单击 口令管理

默认情况下,只解锁了sys和system用户,为便于记忆,设置这两个用户访问orcl数据库的口令均为:oracle

Oracle Database 安装结束,点击 关闭

2 ArcMap 创建 Oracle 12c R1 地理数据库

安装Oracle 12c R1的客户端。电脑安装了ArcMap,需要安装32位客户端,安装ArcGIS for Server,需要安装64位客户端,同时安装ArcMap和ArcGIS for Server,需要同时安装32位和64位客户端

设置客户端环境变量。如果 ArcMap 和 ArcGIS for Server 安装在同一台 Windows 计算机上,则将 PATH 变量设置为先读取64位客户端,后读取32位客户端
例如,如果 32 位 Oracle Instant Client 安装在 c:\Program Files (x86)\Oracle 下,64 位 Oracle Instant Client 安装在 c:\Program Files\Oracle 下,
则将以下内容添加到 Window 中 PATH 变量值的开始位置,C:\Program Files\Oracle;C:\Program Files (x86)\Oracle;

在arcmap 中找到 创建企业级地理数据库 工具

设置参数如下,其中实例为安装Oracle时建立的全局数据库orcl

数据库建立成功,但是提示没有将ST_Geometry 正确配置到EXTPROC

C:\Program Files (x86)\ArcGIS\Desktop10.4\DatabaseSupport\Oracle\Windows64\路径下的 st_shapelib.dll
拷贝到Oracle的安装路径下的bin文件夹中,"C:\app\oracle\product\12.1.0\dbhome_1\BIN"

打开 C:\app\oracle\product\12.1.0\dbhome_1\hs\admin 中的 extproc.ora 文件。
修改最后一行的内容为:

SET EXTPROC_DLLS=ONLY:C:\\app\\oracle\\product\\12.1.0\\dbhome_1\\BIN\\st_shapelib.dll

打开 C:\app\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN 中的 listener.ora 文件,修改原文件内容
(建议将原文件复制重命名为listener0.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
       (SID_NAME = CLRExtProc)
       (ORACLE_HOME = C:\app\oracle\product\12.1.0\dbhome_1)
       (PROGRAM = extproc)
       (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\12.1.0\dbhome_1\bin\oraclr12.dll")
    )
    # ---新添加内容---
    (SID_DESC =  
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\app\oracle\product\12.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\12.1.0\dbhome_1\BIN\st_shapelib.dll")
    )
    # ---------------
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC01)) # 新添加内容
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

打开 C:\app\oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN 中的 tnsnames.ora文件,修改原文件内容
(建议将原文件复制重命名为tnsnames0.ora

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )
# ----新添加内容----
EXTPROC_CONNECTION_DATA=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC01))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
# --------------
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

在PL/SQL Developer中,以sde用户登录,并执行下面的SQL代码:

select * from user_libraries;
create or replace library st_shapelib as 'C:\app\oracle\product\12.1.0\dbhome_1\BIN\st_shapelib.dll';
--alter package sde.st_geometry_shapelib_pkg compile reuse settings;
select sde.ST_AsText(SDE.ST_Geometry('POINT (10 10)', 0)) from dual;
原文地址:https://www.cnblogs.com/lqqgis/p/12642291.html