ArcSDE(10.1、10.2、10.3)for DB2在Linux环境的安装文档

2015-01-29

ArcSDE支持五种关系型数据库,在中国地区最长用的就是Oracle和少量的SQLServer,部分高校可能使用PostgreSQL,IBM的DB2和Informix基本上很少使用,但是IBM以其巨大的技术实力(硬件)、商业实力也在某些行业和国家大型项目占有一席之地,例如烟草行业一直就是DB2的天下,更别说DB2以前占领的银行行业了,既然支持,就有需求,下面就简单介绍一下ArcSDE10.x for DB2的安装过程

环境

  • 服务器端:Linux 6.4 64Bit、IBM DB2 v10.1Sp3服务器端64位
  • 客户端:ArcGIS10.3 for Desktop、IBM DB2 v10.5 客户端 32位
注意:安装之前还是建议看看ArcSDE的系统需求

DB2服务器端安装

一开始对DB2完全陌生,也没有时间去学习基础的DB2知识,在网络上查询了相关的安装文档,这一篇写的比较详细,基本上可以按照以下步骤完全安装。

注意:当你查看别人的安装文档,你要分清楚这个文档是写给自己的还是写给别人的,如果是写给自己的,笔者会省略大量的步骤(这些步骤可能他非常熟悉),只记录关键步骤和遇到的问题,写给别人的,他会尽可能的将相关的细节写清楚,你可以不解释,但是你不要拉下任何可能意识到的细节,我喜欢后者!
参考链接

安装步骤

1. 安装 DB2 和 Spatial Extender 模块。

Spatial Extender模块必须安装,否则无法创建企业级地理数据库,一般情况下,该模块都会默认安装,越是大项目,越是有DBA负责的数据库,这块管理的较为严格,如果没有要求,有些DBA是不会安装该模块。

2. 在 DB2 服务器上创建 sde 登录帐户并将其添加到具有 SYSMON 权限的组中。

创建sde登录账户

//创建db2admin组
[root@ags ~]#  groupadd 996 -g db2admin
//创建sde操作系统用户
[root@ags ~]# useradd -g db2admin -m sde
[root@ags ~]# passwd sde
Changing password for user sde.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
[root@ags ~]# su - sde
[sde@ags ~]$ id
uid=603(sde) gid=996(db2admin) groups=996(db2admin) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

创建sde数据库(注意,赋予参数pagesize)

[db2inst1@ags ~]$ db2 create db sde using codeset UTF-8 territory CN pagesize 8192
DB20000I  The CREATE DATABASE command completed successfully.
3、使用db2inst1用户登录sde库,赋予sde用户DBADM权限
[db2inst1@ags ~]$ db2 connect to sde user db2inst1 using db2inst1

   Database Connection Information

 Database server        = DB2/LINUXX8664 10.1.3
 SQL authorization ID   = DB2INST1
 Local database alias   = SDE

赋予sde用户DBADM权限

[db2inst1@ags ~]$ db2 GRANT DBADM ON DATABASE TO USER sde
DB20000I  The SQL command completed successfully.
4、设置堆大小和设置事务日志执行以下语句即可
db2 UPDATE DATABASE CONFIGURATION FOR sde USING APP_CTL_HEAP_SZ 2048 
db2 UPDATE DATABASE CONFIGURATION FOR sde USING APPLHEAPSZ 2048 
db2 UPDATE DATABASE CONFIGURATION FOR sde USING LOGFILSIZ 1000 
db2 UPDATE DATABASE CONFIGURATION FOR sde USING LOGPRIMARY 10 

在执行过程中会出现以下信息

[db2inst1@ags ~]$ db2 UPDATE DATABASE CONFIGURATION FOR sde USING APP_CTL_HEAP_SZ 2048
DB20000I  The UPDATE DATABASE CONFIGURATION command completed successfully.
SQL1363W  One or more of the parameters submitted for immediate modification
were not changed dynamically. For these configuration parameters, the database
must be shutdown and reactivated before the configuration parameter changes
become effective.

这说明你需要将你的DB2数据库重启一下,参数才可以生效

[db2inst1@ags ~]$ db2stop force
11/17/2014 19:02:39     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
[db2inst1@ags ~]$ db2start
11/17/2014 19:02:46     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
5、空间上启用该数据库。
[db2inst1@ags ~]$ db2se enable_db sde
Enabling database. Please wait ...
GSE1013N  The database is already enabled for spatial operations.
在启用过程中,经常会出现SQL1585N:不存在具有足够页大小的系统临时表空间。这说明用户在创建DB的语句中并没有设置PageSIZE的参数,由于我对DB2不了解,我就直接将已经创建的DB给Drop掉,重新创建,然后重复上面的过程即可,只有这一步通过,接下来的ArcSDE地理数据库才有可能启用。
6、验证sde用户连接,如果可以得到以下信息,说明服务器端的DB2已经配置完毕
[db2inst1@ags ~]$ db2 connect to  sde user sde using sde

   Database Connection Information

 Database server        = DB2/LINUXX8664 10.1.3
 SQL authorization ID   = SDE
 Local database alias   = SDE

DB2远程登录设置

端口验证

在DB2远程登录设置之前,需要了解安装DB2的端口号,这个可以参考上面提供的文档链接
//查看服务器端Services文件
[db2inst1@ags ~]$ cat /etc/services |grep DB2
ibm-db2         523/tcp                 # IBM-DB2
ibm-db2         523/udp                 # IBM-DB2
questdb2-lnchr  5677/tcp                # Quest Central DB2 Launchr
questdb2-lnchr  5677/udp                # Quest Central DB2 Launchr
DB2_db2inst1    60004/tcp
DB2_db2inst1_1  60005/tcp
DB2_db2inst1_2  60006/tcp
DB2_db2inst1_END        60007/tcp
//更新服务器数据库管理文件
[db2inst1@ags ~]$ db2 get dbm cfg | grep SVCENAME
 TCP/IP Service name                          (SVCENAME) = 60004
 SSL service name                         (SSL_SVCENAME) =
//验证通信端口状态
[db2inst1@ags ~]$ netstat -an | grep 60004
tcp        0      0 0.0.0.0:60004               0.0.0.0:*                   LISTEN    
客户端配置

因为目前ArcGIS10.3 for Desktop还是32位应用程序,那么在该环境下就需要安装32位的DB2数据库客户端软件,安装完毕之后,需要配置数据库编目。

DB2的数据库编目有点类似于Oracle的配置网络服务名
//node名称n1可以任意设置,需要了解远程IP地址以及相关的端口号
db2 => catalog tcpip node n1 remote 192.168.100.203 server 60004
DB20000I  CATALOG TCPIP NODE 命令成功完成。
DB21056W  直到刷新目录高速缓存之后,目录更改才生效。
db2 => terminate
DB20000I  TERMINATE 命令成功完成。
//设置的别名truesde可以任意设置,建议添加authentication server参数
C:\Program Files (x86)\IBM\SQLLIB\BIN>db2 catalog database sde as truesde at node n1 authentication server
DB20000I  CATALOG DATABASE 命令成功完成。
DB21056W  直到刷新目录高速缓存之后,目录更改才生效。

C:\Program Files (x86)\IBM\SQLLIB\BIN>db2 terminate
DB20000I  TERMINATE 命令成功完成。
//设置完毕之后进行测试连接,如果连接成功说明配置完成
C:\Program Files (x86)\IBM\SQLLIB\BIN>db2 connect to truesde user sde using sde

   数据库连接信息

 数据库服务器         = DB2/LINUXX8664 10.1.3
 SQL 授权标识         = SDE
 本地数据库别名       = TRUESDE

如果某个操作配置失败,可以进行反编目操作

删除数据库编目和节点目录,为重新配置,做准备:
db2 => uncatalog db demo2
DB20000I  UNCATALOG DATABASE 命令成功完成。
DB21056W  只有在刷新目录高速缓存以后,目录更改才会生效。
db2 => uncatalog node n1
DB20000I  UNCATALOG NODE 命令成功完成。
DB21056W  只有在刷新目录高速缓存以后,目录更改才会生效。
db2 => terminate
DB20000I  TERMINATE 命令成功完成。
 

ArcGIS for Desktop连接

如果出现bad login user错误,需要注意服务器端和客户端的防火墙问题以及DB2的端口号
如果出现用户权限问题,需要注意Sde用户的权限包括:DBADM、SYSMON、SYSCTRL或者SYSADM

启用企业级地理数据库

如果使用ArcGIS Desktop可以正常连接,那么就可以进行启用企业级地理数据库的操作了,与其他常用的数据库建库不同,IBM的两个数据库需要使用如下操作才能建库

Executing: EnableEnterpriseGeodatabase "C:\Users\Esri\AppData\Roaming\ESRI\Desktophttp://www.iarcgis.com/?tag=10-3" title="查看更多关于 10.3 的文章" target="_blank">10.3\ArcCatalog\Connection to truesde.sde" "C:\Users\Esri\Desktop\sde.ecp"
Start Time: Tue Dec 23 17:03:54 2014
Validated authorization file.
User has required privileges for geodatabase setup.
XML support is enabled for the database instance.
Created geodatabase tables and stored procedures.
Finished creating geodatabase schema.
Succeeded at Tue Dec 23 17:04:29 2014 (Elapsed Time: 34.95 seconds)

ArcGIS for Server注册数据库

如果对上面客户端编目配置比较了解的话,ArcGIS for Server注册需要注意两个地方
1、在该环境安装64位的DB2数据库客户端
2、在该环境配置编目的别名(参考上面的truesde)要与你sde连接文件输入的别名一致即可