环境:SDE10 for Oracle11g 32bit inwin7 64 bit
配置ST_Raster存储类型和ST_Geometry类似,主要分为以下几个步骤:
1、 配置Oracle监听文件
listener.ora文件内容:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:/app/product/11.1.0/db_1)
(PROGRAM = extproc)
(ENVS="EXTPROC_DLLS=D:/ArcSDE/ora11gexe/bin/st_shapelib.dll;D:/ArcSDE/ora11gexe/bin/libst_raster_ora.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = rocky)(PORT = 1521))
)
)
tnsnames.ora文件内容:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rocky)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
2、 安装ST_Raster
如果SDE和Oracle不在一台服务器上(分布式部署),需要在oracle那边创建libst_raster库:
SQL> CREATE LIBRARY LIBST_RASTER
2 AS ‘<absolute path to libst_raster_ora library>’;
3 /
库已创建。
下一步就可以安装了:
sdesetup –o install_st_raster –d ORACLE11G –u sde –p sde
执行这个 命令总是报错:找不到指定的动态库。我的监听文件配置都是正确的,为什么还是找不到动态库呢。后来才发现是SDEHOME的问题,因为后来又安装了SDE for SQL Server,SDEHOME环境变量自动指向了SDE SQLServer的安装目录,那当然找不到动态库了——平常一般都不管-H这个参数,这个问题以后一定要注意了。
修改命令为sdesetup –o install_st_raster –d ORACLE11G –u sde –p sde –H D:/ArcSDE/ora11gexe,即正常安装。
3、 修改或者添加新的存储关键字(使导入的影像以ST_Raster存储)
修改默认存储关键字:
Sdedbtune –o alter –k DEFAULTS –p RASTER_STORAGE –v ST_RASTER –u sde –p sde
添加存储关键字:
sdedbtune -o insert -k ST_RASTER -P RASTER_STORAGE -v "ST_RASTER" -i esri_sde -u sde -p sde(注意大小写)
让新添加的存储关键字在Desktop里可见:
sdedbtune -o insert -k ST_RASTER -P UI_TEXT -v "User-interface for ST_RASTER" -i esri_sde -u sde -p sde
4、 验证
//查看影像数据集的描述
select p.Raster.describe() from test.RD p;
//查看影像数据集是否进行了统计
Select p.raster.raster_id,
p.raster.hasStats() from rd p;
//进行影像数据集的统计
update rd p set p.raster=
p.raster.buildStats();
//删除影像数据集的统计
update rd p set p.raster=p.raster.deleteStats() where p.raster.raster_id=1;