1. 程式人生 > >去除ArcMap連線空間資料庫中多餘的屬性表

去除ArcMap連線空間資料庫中多餘的屬性表

 

這個操作目前可能不具有可行性,但是為了完整性還是在下面講一下吧。如有興趣的小夥伴,可以按照下面的操作方式去嘗試。

一、需求

去除ArcMap連線空間資料庫中多餘的屬性表。

PL/SQL中查詢得到的內容

select privilege from dba_sys_privs where grantee = 'SDE'

 

二、解決方案

執行revoke select any table from sde就可以在ArcCatalog中看不到除了SDE以外的表格了。

 

三、由此帶來的副作用

但是這樣的直接操作可能會引起:開啟sde中資料時提示ora-29900運算子連線不存在

SDE.cq:  基礎 DBMS 錯誤 [ORA-29900: 運算子連線不存在

ORA-06540: PL/SQL: 編譯錯誤

ORA-06553: PLS-907: 無法載入庫單元 SDE.ST_DOMAIN_OPERATORS (由 SDE.ST_ENVINTERSECTS 引用)

如下圖所示:

 

產生原因:

SDE使用者在升級資料庫後,許可權被登出,如:SELECT ANY TABLE許可權被取消。

Oracle能夠自動標記某些軟體包,功能,和觸發器無效的基於資料庫物件性質的自動驗證,但ST_GEOMETRY是基於這些非法物件無法編譯因而產生繪製錯誤。

 

解決辦法:

這個問題可以通過重新編譯資料包,解決觸發,並標記為無效的功能。這可以通過以下SQL命令以SYSDBA使用者,重複為每個使用者模式資料庫執行相同的步驟。

Exec dbms_utility.compile_schema( 'SDE', compile_all => FALSE );

 

 

參考文章

sde執行revoke SELECT ANY TABLE from sde導致報ora-29900 運算子連線不存在錯誤

修改SDE許可權造成無法在ArcMap中繪製圖形的解決辦法