環境說明:
服務端:Centos6.7 Oracle11gR2 RAC集群 已經注冊企業級數據庫
本機:WIN10 ArcGIS10.1
問題描述:
因為原來的表空間創建錯誤(路徑指定錯誤),需要將表空間數據清空后,刪除表空間並重建,重建后無法導入或者新建原有數據,提示表已經存在錯誤,具體錯誤信息如下:
Table already registered [Error executing stored procedure sde.registry_util.insert_registration:ORA-20218:Registration 14158 already exists.]
問題解決:
因為空間數據會在在SDE下注冊相應,懷疑是注冊信息因為某些情況未刪除導致的,解決思路是清除一下相應圖層在SDE下的相關注冊信息。
1、SDE自帶清理的方法,按照道理是最安全的,可以使用【sdetable -o unregister -t tablename】命令進行清理表的注冊信息。但是sdetable命令需要安裝ArcSDE軟件(10.1之后都是是使用直連的方式,很少安裝SDE軟件了,只要創建一個企業級數據庫即可),數據庫是RAC集群的,而且也沒有在linux rac下安裝SDE的經驗,擔心會對數據庫有所影響,所以沒有使用此種方式。
2、手動清理
根據表名和用戶在SDE下找到所有涉及到該要素集注冊信息的表。我初步找到以下幾張表
TABLE_REGISTRY
LAYERS
GEOMETRY_COLUMNS
COLUMN_REGISTRY
為了安全考慮,沒有使用直接刪除表中要素注冊信息的方法,而是采用手動修改名稱的方式(修改注冊要素的名稱),修改過程做好記錄,以便於出現問題恢復。
按照表采用從上往下的順序修改,修改一張表測試一次,比較奇怪的是,我只是修改了TABLE_REGISTRY,然后LAYERS表中的要素注冊信息就查詢不到了,難道是有所關聯?至今為搞清楚,修改后嘗試進行數據創建和拷貝,均正常,問題解決。
GEOMETRY_COLUMNS和COLUMN_REGISTRY表的內容也沒有修改。后續會持續跟蹤使用情況,評估是否有其他的影響。
參考:

