转载自:http://gis-conquer.blog.sohu.com/164467560.html
一、前言
虽然Catalog能解决这种问题,但是在特殊情况下也许这种方法有点用途。
我遇到的情况,在Catalog删除图层失败,提示,Network i/o error,gsrvr进程锁死,确保没有图层锁定,使用了各种方法也无法完成。如重装SDE,删除SDE无法成功删除。终极解决办法就是将数据备份,重新安装Oracle和SDE,不过这种做法对于大数据量来说代价也太大了。
二、操作
(1)删除与图层名称相同的表
(2)删除SDE_geometry_columns中与图层名称相同的记录
(3)删除SDE_columns_registry中与图层名称相同的记录
(4)找到SDE_layers表中图层记录,并记下layer_id值,将记录删除。
(5)根据layer_id值删除以layer_id命名的F表和S表
(6)找到SDE_table_registry图层记录,并记下registration_id值,将记录删除。
(7)根据registration_id值删除以registration_id命名的A表、D表和I表。
(8)删除GDB_OBJECTCLASSES中Id与图层名相同的记录,并记录下ID值。
(9)根据ID值删除GDB_FIELDINFO中ClassID为registration_id值的所有记录。
经过上面步骤就可以把图层彻底删除了,这样在Catalog中就看不到删除的图层,同时可以导入相同名称的图层,达到了我们的要求。
三、总结
本方法操作比较复杂,如果没有遇到特殊情况尽量不要使用该方法,以免操作不正确造成库文件损坏。