以前就知道ArcSDE for Oracle是使用OCI(Oracle Call Interface)开发出来的(已经与esri美国工程师确认过)。
但是一直不知道ArcSDE for DB2是拿DB2哪个模式开发的,从ArcSDE的动态库和执行文件中可以看出一些端倪。
如查看ArcSDE的服务进程文件所调用的DB2的动态库:
192.168.100.228 [sde bin]$ ldd giomgr
libsdedb2srvr100.so => /home/sde/db2/sdeexe100/lib/libsdedb2srvr100.so (0x00002b3788e72000)
libsde.so => /home/sde/db2/sdeexe100/lib/libsde.so (0x00002b37899cc000)
libsg.so => /home/sde/db2/sdeexe100/lib/libsg.so (0x00002b3789f92000)
libpe.so => /home/sde/db2/sdeexe100/lib/libpe.so (0x00002b378a0f2000)
libdb2.so.1 => /usr/lib64/libdb2.so.1 (0x00002b378a625000)
libxerces-c.so.27 => /home/sde/db2/sdeexe100/lib/libxerces-c.so.27 (0x00002b378c15e000)
libicuuc.so.40 => /home/sde/db2/sdeexe100/lib/libicuuc.so.40 (0x00002b378c648000)
libicudata.so.40 => /home/sde/db2/sdeexe100/lib/libicudata.so.40 (0x00002b378c892000)
libXm.so.3 => /usr/lib64/libXm.so.3 (0x00000035b2c00000)
libXmu.so.6 => /usr/lib64/libXmu.so.6 (0x00000035b2000000)
libXp.so.6 => /usr/lib64/libXp.so.6 (0x00000035b2800000)
libXt.so.6 => /usr/lib64/libXt.so.6 (0x00000035c3e00000)
libSM.so.6 => /usr/lib64/libSM.so.6 (0x00000035b8c00000)
libICE.so.6 => /usr/lib64/libICE.so.6 (0x00000035b7c00000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00000035b4800000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00000035b3c00000)
libg2c.so.0 => /usr/lib64/libg2c.so.0 (0x00002b378d6da000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b378d915000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000035b1c00000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000035c3a00000)
libm.so.6 => /lib64/libm.so.6 (0x00000035b1800000)
libc.so.6 => /lib64/libc.so.6 (0x00000035b1400000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000035bfa00000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002b378db33000)
libpam.so.0 => /lib64/libpam.so.0 (0x00000035be600000)
libdb2dascmn.so.1 => /home/db2inst1/sqllib/lib64/libdb2dascmn.so.1 (0x00002b378dd6b000)
libdb2g11n.so.1 => /home/db2inst1/sqllib/lib64/libdb2g11n.so.1 (0x00002b378df92000)
libdb2genreg.so.1 => /home/db2inst1/sqllib/lib64/libdb2genreg.so.1 (0x00002b378e817000)
libdb2install.so.1 => /home/db2inst1/sqllib/lib64/libdb2install.so.1 (0x00002b378ea54000)
libdb2locale.so.1 => /home/db2inst1/sqllib/lib64/libdb2locale.so.1 (0x00002b378ec5f000)
libdb2osse.so.1 => /home/db2inst1/sqllib/lib64/libdb2osse.so.1 (0x00002b378ee84000)
libdb2osse_db2.so.1 => /home/db2inst1/sqllib/lib64/libdb2osse_db2.so.1 (0x00002b378f4e6000)
libdb2trcapi.so.1 => /home/db2inst1/sqllib/lib64/libdb2trcapi.so.1 (0x00002b378f75f000)
libXft.so.2 => /usr/lib64/libXft.so.2 (0x00000035c6200000)
libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00000035b6c00000)
libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00000035b5c00000)
libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00000035b5000000)
libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x00000035b9000000)
libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00000035b6000000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00000035b3800000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00000035b3400000)
/lib64/ld-linux-x86-64.so.2 (0x00000035b1000000)
libaudit.so.0 => /lib64/libaudit.so.0 (0x00002b378f976000)
librt.so.1 => /lib64/librt.so.1 (0x00002b378fb8e000)
libexpat.so.0 => /lib64/libexpat.so.0 (0x00000035b5800000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00000035b2400000)
从上面的数据得出,SDE的动态库后台使用了8个DB2的动态库,感觉是拿DB2的cli开发的,然后查看了自己使用cli开发的应用程序,看看使用了哪些DB2的动态库。
[db2inst1@lstest cli]$ ldd dbuse
libdb2.so.1 => /home/db2inst1/sqllib/lib64/libdb2.so.1 (0x00002b8f716d7000)
libc.so.6 => /lib64/libc.so.6 (0x00000035b1400000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000035c3e00000)
libdl.so.2 => /lib64/libdl.so.2 (0x00000035b1c00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00000035b2000000)
libpam.so.0 => /lib64/libpam.so.0 (0x00000035be600000)
libm.so.6 => /lib64/libm.so.6 (0x00000035b1800000)
libdb2dascmn.so.1 => /home/db2inst1/sqllib/lib64/libdb2dascmn.so.1 (0x00002b8f7322c000)
libdb2g11n.so.1 => /home/db2inst1/sqllib/lib64/libdb2g11n.so.1 (0x00002b8f73454000)
libdb2genreg.so.1 => /home/db2inst1/sqllib/lib64/libdb2genreg.so.1 (0x00002b8f73cd8000)
libdb2install.so.1 => /home/db2inst1/sqllib/lib64/libdb2install.so.1 (0x00002b8f73f15000)
libdb2locale.so.1 => /home/db2inst1/sqllib/lib64/libdb2locale.so.1 (0x00002b8f74121000)
libdb2osse.so.1 => /home/db2inst1/sqllib/lib64/libdb2osse.so.1 (0x00002b8f74345000)
libdb2osse_db2.so.1 => /home/db2inst1/sqllib/lib64/libdb2osse_db2.so.1 (0x00002b8f749a7000)
libdb2trcapi.so.1 => /home/db2inst1/sqllib/lib64/libdb2trcapi.so.1 (0x00002b8f74c21000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000035c3a00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000035bfa00000)
/lib64/ld-linux-x86-64.so.2 (0x00000035b1000000)
libaudit.so.0 => /lib64/libaudit.so.0 (0x00000035b9000000)
librt.so.1 => /lib64/librt.so.1 (0x00000035b2800000)
跟ArcSDE所使用的DB2的动态库是一样的。所以应该是拿DB2的cli开发的。