Underlying DBMS error [SDE.***]解决思路

针对C#、VS2010、Arcengine10.1环境下,使用Oracle11g数据库进行栅格数据导入SDE时出现的COMException异常,本文详细介绍了异常原因及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       System.Runtime.InteropServices.COMException (0x80041538): Underlying DBMS error [SDE.*****] 

       异常如下图所示:

       

       一、问题描述:

       1)C#、VS2010、Arcengine10.1、Oracle11g;

       2)程序进行栅格数据导入SDE过程中弹出上述异常;


       二、思考ing:

       从异常信息看是跟数据库相关。当时测试时,导入一个20MB的 tif 影像,导入成功;但导入一个300MB的 tif 影像时,则出现该异常。

       首先推测异常的出现可能跟数据大小有关,进而怀疑数据毕竟多大时才会触发异常,顺着这一思路(即触发异常的数据大小的阈值该是多少)继续思考,对于影像数据而言几百MB只能属于小数据,这么小的数据都能引起异常显然不科学。再结合异常信息中的DBMS,会不会是跟数据库表大小有关?

       将这个猜测在网上查,还真发现关于SDE表空间大小一些相关资料。首先查看了当前SDE表空间中可用空间大小,发现只有几十MB,这就回答了为何20MB的影像可以成功导入,而300MB的影像却导入失败,因为SDE的表空间已经用完,没有足够的空间来装入新数据。

       确定是表空间大小的问题,解决的思路便是给SDE表空间增加空间,网上搜“SDE表空间”之类就能得到很多信息,我采用了让表空间自增的解决方案(也可以用增加SDE表空间的数据文件来解决)。下面是具体解决方法,仅供参考。


       三、解决方法:

       【说明】步骤1)和步骤2)在客户端或服务器查看均可以;步骤3)需要在服务器端进行。步骤2)中得到的FILE_NAME字段的值也指的是服务器端的路径。

       1)查看当前表空间使用情况;(我都是在PLSQL里输入SQL命令查询的,下同)

       

select tablespace_name, sum(bytes)/(1024*1024) as free_space
from dba_free_space 
group by tablespace_name; 
       查询结果如下:

       

       也可以用下面这个SQL语句,都是查看表空间使用情况,下面这个信息更丰富些。

SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE, 
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE" 
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C 
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

       2)查找SDE表空间中数据文件的全路径;(第3步会用到)

SELECT * FROM DBA_DATA_FILES t where t.TABLESPACE_NAME = 'SDE';
       
       【注意】这里的FILE_NAME字段的值指的服务器端的路径,在服务器上,定位到该目录下可以找到SDE.DBF文件并查看其大小。


       3)修改SDE表空间为自增长(通过服务器上本地存放文件来设置);

       

ALTER DATABASE DATAFILE 'C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\SDE.DBF' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
       意思是,把”C:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_1\SDE.DBF“这个文件的自增长设置为100MB,当然这个步幅可以根据自己情况设置。


       至此,修改SDE表空间大小已完成,导入一个较多数据时,可以看到SDE.DBF的大小会相应变化。


       参考资料:http://www.cnblogs.com/Jingkunliu/p/5177954.html   http://blog.sina.com.cn/s/blog_5d32e4930100mqxy.html


       四、总结:

       对比测试出错的地方和测试正确的地方,合理猜测可能出错的原因,进而对其进行验证。确定了原因便可以对症下药,找其解决方法。

       解决方法仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值